
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void x11_get_auth_from_authfile(X11Display *disp,char *authfilename)

{
  int iVar1;
  FILE *__stream;
  char *__s1;
  char *b;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uchar *puVar8;
  char *pcVar9;
  char *pcVar10;
  byte *pbVar11;
  char *pcVar12;
  char *pcVar13;
  byte *pbVar14;
  int in_GS_OFFSET;
  bool bVar15;
  bool bVar16;
  bool bVar17;
  bool bVar18;
  byte bVar19;
  int local_84;
  char *str [4];
  int len [4];
  char buf [4];
  
  bVar19 = 0;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  bVar18 = false;
  if (disp->unixdomain == 0) {
    iVar6 = sk_address_is_local(disp->addr);
    bVar18 = iVar6 != 0;
  }
  __stream = fopen64(authfilename,"rb");
  if (__stream != (FILE *)0x0) {
    __s1 = get_hostname();
    b = (char *)safemalloc(0x40004,1);
LAB_000a2851:
    do {
      do {
        uVar2 = fgetc(__stream);
        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))
        goto LAB_000a28fb;
        local_84 = 0;
        pcVar10 = b;
        do {
          uVar4 = fgetc(__stream);
          if (uVar4 == 0xffffffff) goto LAB_000a28fb;
          len[local_84] = uVar4 & 0xff;
          uVar5 = fgetc(__stream);
          if (uVar5 == 0xffffffff) goto LAB_000a28fb;
          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;
          len[local_84] = uVar4;
          str[local_84] = pcVar10;
          if (uVar4 != 0) {
            pcVar9 = pcVar10 + uVar4;
            pcVar13 = pcVar10;
            do {
              iVar6 = fgetc(__stream);
              if (iVar6 == -1) goto LAB_000a28fb;
              pcVar12 = pcVar13 + 1;
              *pcVar13 = (char)iVar6;
              pcVar10 = pcVar9;
              pcVar13 = pcVar12;
            } while (pcVar9 != pcVar12);
          }
          local_84 = local_84 + 1;
          *pcVar10 = '\0';
          pcVar10 = pcVar10 + 1;
        } while (local_84 != 4);
        uVar4 = disp->displaynum;
      } while ((int)uVar4 < 0);
      uVar5 = strtol(str[1],(char **)0x0,10);
      bVar15 = uVar4 < uVar5;
      bVar17 = uVar4 == uVar5;
    } while (!bVar17);
    iVar6 = 0x13;
    pbVar11 = (byte *)str[2];
    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar15 = *pbVar11 < *pbVar14;
      bVar17 = *pbVar11 == *pbVar14;
      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;
      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
    } while (bVar17);
    bVar16 = false;
    bVar15 = (!bVar15 && !bVar17) == bVar15;
    if (bVar15) {
      iVar6 = 1;
    }
    else {
      iVar6 = 0x14;
      pbVar11 = (byte *)str[2];
      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar16 = *pbVar11 < *pbVar14;
        bVar15 = *pbVar11 == *pbVar14;
        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;
        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
      } while (bVar15);
      iVar6 = 2;
      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;
    }
    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;
    if (uVar2 == 6) {
      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||
          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||
         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;
    }
    else {
      if (uVar2 == 0x100) {
        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&
           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {
          disp->localauthproto = iVar6;
          safefree(disp->localauthdata);
          puVar8 = (uchar *)safemalloc(len[3],1);
          disp->localauthdata = puVar8;
          memcpy(puVar8,str[3],len[3]);
          disp->localauthdatalen = len[3];
          goto LAB_000a28fb;
        }
        goto LAB_000a2851;
      }
      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||
         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||
          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))
      goto LAB_000a2851;
    }
    disp->localauthproto = iVar6;
    safefree(disp->localauthdata);
    iVar6 = len[3];
    puVar8 = (uchar *)safemalloc(len[3],1);
    disp->localauthdata = puVar8;
    memcpy(puVar8,str[3],iVar6);
    disp->localauthdatalen = iVar6;
    if (bVar18) goto LAB_000a2851;
LAB_000a28fb:
    fclose(__stream);
    smemclr(b,0x40004);
    safefree(b);
    safefree(__s1);
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



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

void FUN_000a27c0(int *param_1,char *param_2)

{
  size_t __n;
  FILE *__stream;
  char *__s1;
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  void *pvVar8;
  int iVar9;
  int iVar10;
  int *piVar11;
  int *piVar12;
  byte *pbVar13;
  int *piVar14;
  int *piVar15;
  byte *pbVar16;
  int in_GS_OFFSET;
  bool bVar17;
  bool bVar18;
  bool bVar19;
  bool bVar20;
  byte bVar21;
  int local_84;
  int *local_50;
  char *local_4c;
  byte *local_48;
  void *local_44;
  uint local_40 [3];
  size_t local_34;
  int local_30 [4];
  int local_20;
  undefined4 uStack_14;
  
  bVar21 = 0;
  uStack_14 = 0xa27c9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  bVar20 = false;
  if (*param_1 == 0) {
    iVar6 = FUN_0009ab90(param_1[5]);
    bVar20 = iVar6 != 0;
  }
  __stream = fopen64(param_2,"rb");
  if (__stream != (FILE *)0x0) {
    __s1 = (char *)FUN_0009bd20();
    piVar1 = (int *)FUN_0002e780(0x40004,1);
LAB_000a2851:
    do {
      do {
        uVar2 = fgetc(__stream);
        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))
        goto LAB_000a28fb;
        local_84 = 0;
        piVar12 = piVar1;
        do {
          uVar4 = fgetc(__stream);
          if (uVar4 == 0xffffffff) goto LAB_000a28fb;
          local_40[local_84] = uVar4 & 0xff;
          uVar5 = fgetc(__stream);
          if (uVar5 == 0xffffffff) goto LAB_000a28fb;
          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;
          local_40[local_84] = uVar4;
          (&local_50)[local_84] = piVar12;
          if (uVar4 != 0) {
            piVar11 = (int *)((int)piVar12 + uVar4);
            piVar15 = piVar12;
            do {
              iVar6 = fgetc(__stream);
              if (iVar6 == -1) goto LAB_000a28fb;
              piVar14 = (int *)((int)piVar15 + 1);
              *(char *)piVar15 = (char)iVar6;
              piVar12 = piVar11;
              piVar15 = piVar14;
            } while (piVar11 != piVar14);
          }
          local_84 = local_84 + 1;
          *(undefined1 *)piVar12 = 0;
          piVar12 = (int *)((int)piVar12 + 1);
        } while (local_84 != 4);
        uVar4 = param_1[2];
      } while ((int)uVar4 < 0);
      uVar5 = strtol(local_4c,(char **)0x0,10);
      bVar17 = uVar4 < uVar5;
      bVar19 = uVar4 == uVar5;
    } while (!bVar19);
    iVar6 = 0x13;
    pbVar13 = local_48;
    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar17 = *pbVar13 < *pbVar16;
      bVar19 = *pbVar13 == *pbVar16;
      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;
      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;
    } while (bVar19);
    bVar18 = false;
    bVar17 = (!bVar17 && !bVar19) == bVar17;
    if (bVar17) {
      iVar6 = 1;
    }
    else {
      iVar6 = 0x14;
      pbVar13 = local_48;
      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar18 = *pbVar13 < *pbVar16;
        bVar17 = *pbVar13 == *pbVar16;
        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;
        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;
      } while (bVar17);
      iVar6 = 2;
      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;
    }
    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;
    piVar12 = local_30;
    if (uVar2 == 6) {
      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||
         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;
      iVar7 = 0x10;
      iVar10 = memcmp(local_50,local_30,0x10);
      if (iVar10 != 0) goto LAB_000a2851;
    }
    else {
      if (uVar2 == 0x100) {
        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&
           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {
          param_1[8] = iVar6;
          FUN_0002f010(param_1[9]);
          pvVar8 = (void *)FUN_0002e780(local_34,1);
          param_1[9] = (int)pvVar8;
          memcpy(pvVar8,local_44,local_34);
          param_1[10] = local_34;
          goto LAB_000a28fb;
        }
        goto LAB_000a2851;
      }
      if (((uVar2 != 0) || (*param_1 != 0)) ||
         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||
          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||
           (*local_50 != local_30[0])))))) goto LAB_000a2851;
    }
    param_1[8] = iVar6;
    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);
    __n = local_34;
    pvVar8 = (void *)FUN_0002e780(local_34,1);
    param_1[9] = (int)pvVar8;
    memcpy(pvVar8,local_44,__n);
    param_1[10] = __n;
    if (bVar20) goto LAB_000a2851;
LAB_000a28fb:
    fclose(__stream);
    FUN_0002f0f0(piVar1,0x40004);
    FUN_0002f010(piVar1);
    FUN_0002f010(__s1);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000a39d0();
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c4f0
ADD EBX,0x6df87
SUB ESP,0x7c
MOV EAX,dword ptr [ESP + 0x90]
MOV ESI,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x14],EAX
MOV EDI,dword ptr [EAX]
MOV EDX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x6c],EDX
XOR EDX,EDX
MOV dword ptr [ESP + 0x1c],0x0
TEST EDI,EDI
JZ 0x000a2ab0
SUB ESP,0x8
LEA EAX,[EBX + 0xfffb7067]
PUSH EAX
PUSH ESI
CALL 0x0001a910
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x000a292a
CALL 0x0009bd20
SUB ESP,0x8
MOV dword ptr [ESP + 0x20],EAX
PUSH 0x1
PUSH 0x40004
CALL 0x0002e780
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
LEA EAX,[EBX + 0xfffc1b68]
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[ESP + 0x5c]
MOV dword ptr [ESP + 0x2c],EAX
SUB ESP,0xc
PUSH EBP
CALL 0x0001b640
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x000a28fb
SUB ESP,0xc
PUSH EBP
CALL 0x0001b640
MOV dword ptr [ESP + 0x34],EAX
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x000a28fb
MOV dword ptr [ESP + 0x8],0x0
MOV EDI,dword ptr [ESP + 0x10]
SUB ESP,0xc
PUSH EBP
CALL 0x0001b640
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x000a28fb
LEA ECX,[ESP + 0x4c]
MOVZX ESI,AL
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ECX + EAX*0x4],ESI
PUSH EBP
CALL 0x0001b640
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x000a28fb
MOVZX EAX,AL
SHL ESI,0x8
MOV ECX,dword ptr [ESP + 0xc]
OR ESI,EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ECX + EAX*0x4],ESI
MOV dword ptr [ESP + EAX*0x4 + 0x3c],EDI
JZ 0x000a2943
ADD ESI,EDI
JMP 0x000a28ea
ADD EDI,0x1
MOV byte ptr [EDI + -0x1],AL
CMP ESI,EDI
JZ 0x000a2948
SUB ESP,0xc
PUSH EBP
CALL 0x0001b640
ADD ESP,0x10
CMP EAX,-0x1
JNZ 0x000a28e0
SUB ESP,0xc
PUSH EBP
CALL 0x0001bda0
POP EDX
POP ECX
PUSH 0x40004
MOV ESI,dword ptr [ESP + 0x1c]
PUSH ESI
CALL 0x0002f0f0
MOV dword ptr [ESP],ESI
CALL 0x0002f010
POP ESI
PUSH dword ptr [ESP + 0x24]
CALL 0x0002f010
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x6c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x000a2bb9
ADD ESP,0x7c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,EDI
LEA ESI,[ESI]
ADD dword ptr [ESP + 0x8],0x1
MOV EAX,dword ptr [ESP + 0x8]
LEA EDI,[ESI + 0x1]
MOV byte ptr [ESI],0x0
CMP EAX,0x4
JNZ 0x000a288b
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [EAX + 0x8]
TEST ESI,ESI
JS 0x000a2851
SUB ESP,0x4
PUSH 0xa
PUSH 0x0
PUSH dword ptr [ESP + 0x4c]
CALL 0x0001b300
ADD ESP,0x10
CMP ESI,EAX
JNZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0x28]
MOV ECX,0x13
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x000a2ad3
MOV ESI,EAX
MOV ECX,0x14
LEA EDI,[EBX + 0xfffc1b7b]
CMPSB.REPE ES:EDI,ESI
MOV ESI,0x2
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x20]
MOVZX EDX,byte ptr [ESP + 0x24]
SHL EAX,0x8
MOVZX EAX,AX
OR EAX,EDX
CMP EAX,0x6
JZ 0x000a2b50
CMP EAX,0x100
JZ 0x000a2add
TEST EAX,EAX
JNZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x000a2851
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x14]
CALL 0x0009abe0
ADD ESP,0x10
CMP EAX,0x1
JNZ 0x000a2851
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x14]
CALL 0x0009ac10
ADD ESP,0x10
CMP dword ptr [ESP + 0x4c],0x4
JNZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x5c]
CMP dword ptr [EAX],EDX
JNZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESP + 0x1c]
SUB ESP,0xc
MOV dword ptr [ESP + 0x20],EAX
XOR EDI,0x1
MOV dword ptr [EAX + 0x20],ESI
PUSH dword ptr [EAX + 0x24]
CALL 0x0002f010
MOV ESI,dword ptr [ESP + 0x68]
POP ECX
POP EAX
PUSH 0x1
PUSH ESI
CALL 0x0002e780
MOV EDX,dword ptr [ESP + 0x24]
ADD ESP,0xc
MOV dword ptr [EDX + 0x24],EAX
PUSH ESI
PUSH dword ptr [ESP + 0x50]
PUSH EAX
CALL 0x0001a820
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV dword ptr [EAX + 0x28],ESI
TEST EDI,EDI
JZ 0x000a2851
JMP 0x000a28fb
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x14]
CALL 0x0009ab90
ADD ESP,0x10
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x000a2803
MOV ESI,0x1
JMP 0x000a29ca
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ESP + 0x1c]
OR EDX,dword ptr [EAX]
JZ 0x000a2851
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x000a2851
SUB ESP,0x8
PUSH dword ptr [ESP + 0x44]
PUSH EAX
CALL 0x0001ab70
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a2851
MOV EDI,dword ptr [ESP + 0x14]
SUB ESP,0xc
MOV dword ptr [EDI + 0x20],ESI
PUSH dword ptr [EDI + 0x24]
CALL 0x0002f010
MOV ESI,dword ptr [ESP + 0x68]
POP EAX
POP EDX
PUSH 0x1
PUSH ESI
CALL 0x0002e780
ADD ESP,0xc
MOV dword ptr [EDI + 0x24],EAX
PUSH ESI
PUSH dword ptr [ESP + 0x50]
PUSH EAX
CALL 0x0001a820
MOV dword ptr [EDI + 0x28],ESI
ADD ESP,0x10
JMP 0x000a28fb
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x000a2851
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x14]
CALL 0x0009abe0
ADD ESP,0x10
CMP EAX,0x2
JNZ 0x000a2851
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX + 0x14]
CALL 0x0009ac10
ADD ESP,0x10
CMP dword ptr [ESP + 0x4c],0x10
JNZ 0x000a2851
PUSH EAX
PUSH 0x10
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x48]
CALL 0x0001acd0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a2851
JMP 0x000a2a50
CALL 0x000a39d0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_000a27c0(int *param_1,char *param_2)\n\n{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_000a27c0(int *param_1,char *param_2)\n\n{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000a27c0(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000a39d0();\n  }\n  return;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "char *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "void *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_40 [3];" type_identifier (array_declarator "local_40 [3]" identifier [ number_literal ]) ;) (declaration "size_t local_34;" primitive_type identifier ;) (declaration "int local_30 [4];" primitive_type (array_declarator "local_30 [4]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xa27c9;" (assignment_expression "uStack_14 = 0xa27c9" identifier = number_literal) ;) (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) ))))) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (if_statement "if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }" { (expression_statement "iVar6 = FUN_0009ab90(param_1[5]);" (assignment_expression "iVar6 = FUN_0009ab90(param_1[5])" identifier = (call_expression "FUN_0009ab90(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) ;) (expression_statement "bVar20 = iVar6 != 0;" (assignment_expression "bVar20 = iVar6 != 0" identifier = (binary_expression "iVar6 != 0" identifier != number_literal)) ;) })) (expression_statement "__stream = fopen64(param_2,"rb");" (assignment_expression "__stream = fopen64(param_2,"rb")" identifier = (call_expression "fopen64(param_2,"rb")" identifier (argument_list "(param_2,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" { (expression_statement "__s1 = (char *)FUN_0009bd20();" (assignment_expression "__s1 = (char *)FUN_0009bd20()" identifier = (cast_expression "(char *)FUN_0009bd20()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0009bd20()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar1 = (int *)FUN_0002e780(0x40004,1);" (assignment_expression "piVar1 = (int *)FUN_0002e780(0x40004,1)" identifier = (cast_expression "(int *)FUN_0002e780(0x40004,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(0x40004,1)" identifier (argument_list "(0x40004,1)" ( number_literal , number_literal ))))) ;) (labeled_statement "LAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" statement_identifier : (do_statement "do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" do (compound_statement "{\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    }" { (do_statement "do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);" do (compound_statement "{\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      }" { (expression_statement "uVar2 = fgetc(__stream);" (assignment_expression "uVar2 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;" if (parenthesized_expression "((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))" ( (binary_expression "(uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" ( (comma_expression "uVar3 = fgetc(__stream), uVar3 == 0xffffffff" (assignment_expression "uVar3 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) , (binary_expression "uVar3 == 0xffffffff" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "piVar12 = piVar1;" (assignment_expression "piVar12 = piVar1" identifier = identifier) ;) (do_statement "do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);" do (compound_statement "{\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        }" { (expression_statement "uVar4 = fgetc(__stream);" (assignment_expression "uVar4 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar4 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar4 == 0xffffffff)" ( (binary_expression "uVar4 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "local_40[local_84] = uVar4 & 0xff;" (assignment_expression "local_40[local_84] = uVar4 & 0xff" (subscript_expression "local_40[local_84]" identifier [ identifier ]) = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar5 = fgetc(__stream);" (assignment_expression "uVar5 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar5 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar5 == 0xffffffff)" ( (binary_expression "uVar5 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;" (assignment_expression "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff" identifier = (binary_expression "(uVar4 & 0xff) << 8 | uVar5 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar5 & 0xff" identifier & number_literal))) ;) (expression_statement "local_40[local_84] = uVar4;" (assignment_expression "local_40[local_84] = uVar4" (subscript_expression "local_40[local_84]" identifier [ identifier ]) = identifier) ;) (expression_statement "(&local_50)[local_84] = piVar12;" (assignment_expression "(&local_50)[local_84] = piVar12" (subscript_expression "(&local_50)[local_84]" (parenthesized_expression "(&local_50)" ( (pointer_expression "&local_50" & identifier) )) [ identifier ]) = identifier) ;) (if_statement "if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" { (expression_statement "piVar11 = (int *)((int)piVar12 + uVar4);" (assignment_expression "piVar11 = (int *)((int)piVar12 + uVar4)" identifier = (cast_expression "(int *)((int)piVar12 + uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + uVar4)" ( (binary_expression "(int)piVar12 + uVar4" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar15 = piVar12;" (assignment_expression "piVar15 = piVar12" identifier = identifier) ;) (do_statement "do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);" do (compound_statement "{\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            }" { (expression_statement "iVar6 = fgetc(__stream);" (assignment_expression "iVar6 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (iVar6 == -1) goto LAB_000a28fb;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "piVar14 = (int *)((int)piVar15 + 1);" (assignment_expression "piVar14 = (int *)((int)piVar15 + 1)" identifier = (cast_expression "(int *)((int)piVar15 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 1)" ( (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)piVar15 = (char)iVar6;" (assignment_expression "*(char *)piVar15 = (char)iVar6" (pointer_expression "*(char *)piVar15" * (cast_expression "(char *)piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar14;" (assignment_expression "piVar15 = piVar14" identifier = identifier) ;) }) while (parenthesized_expression "(piVar11 != piVar14)" ( (binary_expression "piVar11 != piVar14" identifier != identifier) )) ;) })) (expression_statement "local_84 = local_84 + 1;" (assignment_expression "local_84 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)piVar12 = 0;" (assignment_expression "*(undefined1 *)piVar12 = 0" (pointer_expression "*(undefined1 *)piVar12" * (cast_expression "(undefined1 *)piVar12" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "piVar12 = (int *)((int)piVar12 + 1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + 1)" identifier = (cast_expression "(int *)((int)piVar12 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 1)" ( (binary_expression "(int)piVar12 + 1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_84 != 4)" ( (binary_expression "local_84 != 4" identifier != number_literal) )) ;) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) ;) (expression_statement "uVar5 = strtol(local_4c,(char **)0x0,10);" (assignment_expression "uVar5 = strtol(local_4c,(char **)0x0,10)" identifier = (call_expression "strtol(local_4c,(char **)0x0,10)" identifier (argument_list "(local_4c,(char **)0x0,10)" ( identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar17 = uVar4 < uVar5;" (assignment_expression "bVar17 = uVar4 < uVar5" identifier = (binary_expression "uVar4 < uVar5" identifier < identifier)) ;) (expression_statement "bVar19 = uVar4 == uVar5;" (assignment_expression "bVar19 = uVar4 == uVar5" identifier = (binary_expression "uVar4 == uVar5" identifier == identifier)) ;) }) while (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) ;)) (expression_statement "iVar6 = 0x13;" (assignment_expression "iVar6 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" identifier = identifier) ;) (expression_statement "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";" (assignment_expression "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1"" identifier = (cast_expression "(byte *)"MIT-MAGIC-COOKIE-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MIT-MAGIC-COOKIE-1"" " string_content "))) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar13 < *pbVar16;" (assignment_expression "bVar17 = *pbVar13 < *pbVar16" identifier = (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "bVar19 = *pbVar13 == *pbVar16;" (assignment_expression "bVar19 = *pbVar13 == *pbVar16" identifier = (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar17 = (!bVar17 && !bVar19) == bVar17;" (assignment_expression "bVar17 = (!bVar17 && !bVar19) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar19) == bVar17" (parenthesized_expression "(!bVar17 && !bVar19)" ( (binary_expression "!bVar17 && !bVar19" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n      iVar6 = 1;\n    }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" else (compound_statement "{\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" { (expression_statement "iVar6 = 0x14;" (assignment_expression "iVar6 = 0x14" identifier = number_literal) ;) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" identifier = identifier) ;) (expression_statement "pbVar16 = (byte *)"XDM-AUTHORIZATION-1";" (assignment_expression "pbVar16 = (byte *)"XDM-AUTHORIZATION-1"" identifier = (cast_expression "(byte *)"XDM-AUTHORIZATION-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""XDM-AUTHORIZATION-1"" " string_content "))) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar13 < *pbVar16;" (assignment_expression "bVar18 = *pbVar13 < *pbVar16" identifier = (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "bVar17 = *pbVar13 == *pbVar16;" (assignment_expression "bVar17 = *pbVar13 == *pbVar16" identifier = (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (if_statement "if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;" if (parenthesized_expression "((!bVar18 && !bVar17) != bVar18)" ( (binary_expression "(!bVar18 && !bVar17) != bVar18" (parenthesized_expression "(!bVar18 && !bVar17)" ( (binary_expression "!bVar18 && !bVar17" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;" (assignment_expression "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff" identifier = (binary_expression "(uVar2 & 0xff) << 8 | uVar3 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" ( (binary_expression "uVar2 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 & 0xff" identifier & number_literal))) ;) (expression_statement "piVar12 = local_30;" (assignment_expression "piVar12 = local_30" identifier = identifier) ;) (if_statement "if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" if (parenthesized_expression "(uVar2 == 6)" ( (binary_expression "uVar2 == 6" identifier == number_literal) )) (compound_statement "{\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }" { (if_statement "if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;" if (parenthesized_expression "(((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10))" ( (binary_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" (parenthesized_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2))" ( (binary_expression "(*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) || (parenthesized_expression "(iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" ( (comma_expression "iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2" (assignment_expression "iVar9 = FUN_0009abe0(param_1[5])" identifier = (call_expression "FUN_0009abe0(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) , (binary_expression "iVar9 != 2" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" ( (comma_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10" (assignment_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2)" identifier = (call_expression "FUN_0009ac10(param_1[5],local_30,2,2)" identifier (argument_list "(param_1[5],local_30,2,2)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , number_literal , number_literal )))) , (binary_expression "local_40[0] != 0x10" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" identifier = number_literal) ;) (expression_statement "iVar10 = memcmp(local_50,local_30,0x10);" (assignment_expression "iVar10 = memcmp(local_50,local_30,0x10)" identifier = (call_expression "memcmp(local_50,local_30,0x10)" identifier (argument_list "(local_50,local_30,0x10)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000a2851;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }) (else_clause "else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" else (compound_statement "{\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" { (if_statement "if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" if (parenthesized_expression "(uVar2 == 0x100)" ( (binary_expression "uVar2 == 0x100" identifier == number_literal) )) (compound_statement "{\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" { (if_statement "if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" if (parenthesized_expression "(((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0))" ( (binary_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" (parenthesized_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0))" ( (binary_expression "(bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)" (parenthesized_expression "(bVar20 || *param_1 != 0)" ( (binary_expression "bVar20 || *param_1 != 0" identifier || (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal)) )) && (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" ( (comma_expression "iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,(char *)local_50)" identifier = (call_expression "strcmp(__s1,(char *)local_50)" identifier (argument_list "(__s1,(char *)local_50)" ( identifier , (cast_expression "(char *)local_50" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" { (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002f010(param_1[9]);" (call_expression "FUN_0002f010(param_1[9])" identifier (argument_list "(param_1[9])" ( (subscript_expression "param_1[9]" identifier [ number_literal ]) ))) ;) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" identifier = (cast_expression "(void *)FUN_0002e780(local_34,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(local_34,1)" identifier (argument_list "(local_34,1)" ( identifier , number_literal ))))) ;) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "memcpy(pvVar8,local_44,local_34);" (call_expression "memcpy(pvVar8,local_44,local_34)" identifier (argument_list "(pvVar8,local_44,local_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[10] = local_34;" (assignment_expression "param_1[10] = local_34" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;) })) (if_statement "if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;" if (parenthesized_expression "(((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))))" ( (binary_expression "((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" (parenthesized_expression "((uVar2 != 0) || (*param_1 != 0))" ( (binary_expression "(uVar2 != 0) || (*param_1 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) || (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) ))) )) || (parenthesized_expression "((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" ( (parenthesized_expression "(iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))" ( (comma_expression "iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (assignment_expression "iVar7 = FUN_0009abe0(param_1[5])" identifier = (call_expression "FUN_0009abe0(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) , (binary_expression "iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (binary_expression "iVar7 != 1" identifier != number_literal) || (parenthesized_expression "((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" ( (parenthesized_expression "(iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))" ( (comma_expression "iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (assignment_expression "iVar9 = iVar7" identifier = identifier) , (comma_expression "FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (call_expression "FUN_0009ac10(param_1[5],local_30,1,1)" identifier (argument_list "(param_1[5],local_30,1,1)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , number_literal , number_literal ))) , (binary_expression "local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (binary_expression "local_40[0] != 4" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*local_50 != local_30[0])" ( (binary_expression "*local_50 != local_30[0]" (pointer_expression "*local_50" * identifier) != (subscript_expression "local_30[0]" identifier [ number_literal ])) ))))) )) )))) )) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);" (call_expression "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9)" identifier (argument_list "(param_1[9],piVar12,iVar7,iVar9)" ( (subscript_expression "param_1[9]" identifier [ number_literal ]) , identifier , identifier , identifier ))) ;) (expression_statement "__n = local_34;" (assignment_expression "__n = local_34" identifier = identifier) ;) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" identifier = (cast_expression "(void *)FUN_0002e780(local_34,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(local_34,1)" identifier (argument_list "(local_34,1)" ( identifier , number_literal ))))) ;) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "memcpy(pvVar8,local_44,__n);" (call_expression "memcpy(pvVar8,local_44,__n)" identifier (argument_list "(pvVar8,local_44,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[10] = __n;" (assignment_expression "param_1[10] = __n" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar20) goto LAB_000a2851;" if (parenthesized_expression "(bVar20)" ( identifier )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) (labeled_statement "LAB_000a28fb:\n    fclose(__stream);" statement_identifier : (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;)) (expression_statement "FUN_0002f0f0(piVar1,0x40004);" (call_expression "FUN_0002f0f0(piVar1,0x40004)" identifier (argument_list "(piVar1,0x40004)" ( identifier , number_literal ))) ;) (expression_statement "FUN_0002f010(piVar1);" (call_expression "FUN_0002f010(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (expression_statement "FUN_0002f010(__s1);" (call_expression "FUN_0002f010(__s1)" identifier (argument_list "(__s1)" ( 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;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid x11_get_auth_from_authfile(X11Display *disp,char *authfilename)\n\n{\n  int iVar1;\n  FILE *__stream;\n  char *__s1;\n  char *b;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uchar *puVar8;\n  char *pcVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  char *pcVar13;\n  byte *pbVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_84;\n  char *str [4];\n  int len [4];\n  char buf [4];\n  \n  bVar19 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar18 = false;\n  if (disp->unixdomain == 0) {\n    iVar6 = sk_address_is_local(disp->addr);\n    bVar18 = iVar6 != 0;\n  }\n  __stream = fopen64(authfilename,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = get_hostname();\n    b = (char *)safemalloc(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);\n    iVar6 = 0x13;\n    pbVar11 = (byte *)str[2];\n    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar17) == bVar15;\n    if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }\n    disp->localauthproto = iVar6;\n    safefree(disp->localauthdata);\n    iVar6 = len[3];\n    puVar8 = (uchar *)safemalloc(len[3],1);\n    disp->localauthdata = puVar8;\n    memcpy(puVar8,str[3],iVar6);\n    disp->localauthdatalen = iVar6;\n    if (bVar18) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    smemclr(b,0x40004);\n    safefree(b);\n    safefree(__s1);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void x11_get_auth_from_authfile(X11Display *disp,char *authfilename)\n\n{\n  int iVar1;\n  FILE *__stream;\n  char *__s1;\n  char *b;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uchar *puVar8;\n  char *pcVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  char *pcVar13;\n  byte *pbVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_84;\n  char *str [4];\n  int len [4];\n  char buf [4];\n  \n  bVar19 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar18 = false;\n  if (disp->unixdomain == 0) {\n    iVar6 = sk_address_is_local(disp->addr);\n    bVar18 = iVar6 != 0;\n  }\n  __stream = fopen64(authfilename,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = get_hostname();\n    b = (char *)safemalloc(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);\n    iVar6 = 0x13;\n    pbVar11 = (byte *)str[2];\n    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar17) == bVar15;\n    if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }\n    disp->localauthproto = iVar6;\n    safefree(disp->localauthdata);\n    iVar6 = len[3];\n    puVar8 = (uchar *)safemalloc(len[3],1);\n    disp->localauthdata = puVar8;\n    memcpy(puVar8,str[3],iVar6);\n    disp->localauthdatalen = iVar6;\n    if (bVar18) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    smemclr(b,0x40004);\n    safefree(b);\n    safefree(__s1);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (function_declarator "x11_get_auth_from_authfile(X11Display *disp,char *authfilename)" identifier (parameter_list "(X11Display *disp,char *authfilename)" ( (parameter_declaration "X11Display *disp" type_identifier (pointer_declarator "*disp" * identifier)) , (parameter_declaration "char *authfilename" primitive_type (pointer_declarator "*authfilename" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  FILE *__stream;\n  char *__s1;\n  char *b;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uchar *puVar8;\n  char *pcVar9;\n  char *pcVar10;\n  byte *pbVar11;\n  char *pcVar12;\n  char *pcVar13;\n  byte *pbVar14;\n  int in_GS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_84;\n  char *str [4];\n  int len [4];\n  char buf [4];\n  \n  bVar19 = 0;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar18 = false;\n  if (disp->unixdomain == 0) {\n    iVar6 = sk_address_is_local(disp->addr);\n    bVar18 = iVar6 != 0;\n  }\n  __stream = fopen64(authfilename,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = get_hostname();\n    b = (char *)safemalloc(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);\n    iVar6 = 0x13;\n    pbVar11 = (byte *)str[2];\n    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar17) == bVar15;\n    if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }\n    disp->localauthproto = iVar6;\n    safefree(disp->localauthdata);\n    iVar6 = len[3];\n    puVar8 = (uchar *)safemalloc(len[3],1);\n    disp->localauthdata = puVar8;\n    memcpy(puVar8,str[3],iVar6);\n    disp->localauthdatalen = iVar6;\n    if (bVar18) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    smemclr(b,0x40004);\n    safefree(b);\n    safefree(__s1);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "char *b;" primitive_type (pointer_declarator "*b" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uchar *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "char *str [4];" primitive_type (pointer_declarator "*str [4]" * (array_declarator "str [4]" identifier [ number_literal ])) ;) (declaration "int len [4];" primitive_type (array_declarator "len [4]" identifier [ number_literal ]) ;) (declaration "char buf [4];" primitive_type (array_declarator "buf [4]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (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) ))))) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (if_statement "if (disp->unixdomain == 0) {\n    iVar6 = sk_address_is_local(disp->addr);\n    bVar18 = iVar6 != 0;\n  }" if (parenthesized_expression "(disp->unixdomain == 0)" ( (binary_expression "disp->unixdomain == 0" (field_expression "disp->unixdomain" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    iVar6 = sk_address_is_local(disp->addr);\n    bVar18 = iVar6 != 0;\n  }" { (expression_statement "iVar6 = sk_address_is_local(disp->addr);" (assignment_expression "iVar6 = sk_address_is_local(disp->addr)" identifier = (call_expression "sk_address_is_local(disp->addr)" identifier (argument_list "(disp->addr)" ( (field_expression "disp->addr" identifier -> field_identifier) )))) ;) (expression_statement "bVar18 = iVar6 != 0;" (assignment_expression "bVar18 = iVar6 != 0" identifier = (binary_expression "iVar6 != 0" identifier != number_literal)) ;) })) (expression_statement "__stream = fopen64(authfilename,"rb");" (assignment_expression "__stream = fopen64(authfilename,"rb")" identifier = (call_expression "fopen64(authfilename,"rb")" identifier (argument_list "(authfilename,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n    __s1 = get_hostname();\n    b = (char *)safemalloc(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);\n    iVar6 = 0x13;\n    pbVar11 = (byte *)str[2];\n    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar17) == bVar15;\n    if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }\n    disp->localauthproto = iVar6;\n    safefree(disp->localauthdata);\n    iVar6 = len[3];\n    puVar8 = (uchar *)safemalloc(len[3],1);\n    disp->localauthdata = puVar8;\n    memcpy(puVar8,str[3],iVar6);\n    disp->localauthdatalen = iVar6;\n    if (bVar18) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    smemclr(b,0x40004);\n    safefree(b);\n    safefree(__s1);\n  }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s1 = get_hostname();\n    b = (char *)safemalloc(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);\n    iVar6 = 0x13;\n    pbVar11 = (byte *)str[2];\n    pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);\n    bVar16 = false;\n    bVar15 = (!bVar15 && !bVar17) == bVar15;\n    if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }\n    disp->localauthproto = iVar6;\n    safefree(disp->localauthdata);\n    iVar6 = len[3];\n    puVar8 = (uchar *)safemalloc(len[3],1);\n    disp->localauthdata = puVar8;\n    memcpy(puVar8,str[3],iVar6);\n    disp->localauthdatalen = iVar6;\n    if (bVar18) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    smemclr(b,0x40004);\n    safefree(b);\n    safefree(__s1);\n  }" { (expression_statement "__s1 = get_hostname();" (assignment_expression "__s1 = get_hostname()" identifier = (call_expression "get_hostname()" identifier (argument_list "()" ( )))) ;) (expression_statement "b = (char *)safemalloc(0x40004,1);" (assignment_expression "b = (char *)safemalloc(0x40004,1)" identifier = (cast_expression "(char *)safemalloc(0x40004,1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(0x40004,1)" identifier (argument_list "(0x40004,1)" ( number_literal , number_literal ))))) ;) (labeled_statement "LAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);" statement_identifier : (do_statement "do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    } while (!bVar17);" do (compound_statement "{\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(str[1],(char **)0x0,10);\n      bVar15 = uVar4 < uVar5;\n      bVar17 = uVar4 == uVar5;\n    }" { (do_statement "do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      } while ((int)uVar4 < 0);" do (compound_statement "{\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        pcVar10 = b;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);\n        uVar4 = disp->displaynum;\n      }" { (expression_statement "uVar2 = fgetc(__stream);" (assignment_expression "uVar2 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;" if (parenthesized_expression "((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))" ( (binary_expression "(uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" ( (comma_expression "uVar3 = fgetc(__stream), uVar3 == 0xffffffff" (assignment_expression "uVar3 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) , (binary_expression "uVar3 == 0xffffffff" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "pcVar10 = b;" (assignment_expression "pcVar10 = b" identifier = identifier) ;) (do_statement "do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        } while (local_84 != 4);" do (compound_statement "{\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          len[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          len[local_84] = uVar4;\n          str[local_84] = pcVar10;\n          if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }\n          local_84 = local_84 + 1;\n          *pcVar10 = '\0';\n          pcVar10 = pcVar10 + 1;\n        }" { (expression_statement "uVar4 = fgetc(__stream);" (assignment_expression "uVar4 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar4 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar4 == 0xffffffff)" ( (binary_expression "uVar4 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "len[local_84] = uVar4 & 0xff;" (assignment_expression "len[local_84] = uVar4 & 0xff" (subscript_expression "len[local_84]" identifier [ identifier ]) = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar5 = fgetc(__stream);" (assignment_expression "uVar5 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar5 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar5 == 0xffffffff)" ( (binary_expression "uVar5 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;" (assignment_expression "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff" identifier = (binary_expression "(uVar4 & 0xff) << 8 | uVar5 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar5 & 0xff" identifier & number_literal))) ;) (expression_statement "len[local_84] = uVar4;" (assignment_expression "len[local_84] = uVar4" (subscript_expression "len[local_84]" identifier [ identifier ]) = identifier) ;) (expression_statement "str[local_84] = pcVar10;" (assignment_expression "str[local_84] = pcVar10" (subscript_expression "str[local_84]" identifier [ identifier ]) = identifier) ;) (if_statement "if (uVar4 != 0) {\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar9 = pcVar10 + uVar4;\n            pcVar13 = pcVar10;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);\n          }" { (expression_statement "pcVar9 = pcVar10 + uVar4;" (assignment_expression "pcVar9 = pcVar10 + uVar4" identifier = (binary_expression "pcVar10 + uVar4" identifier + identifier)) ;) (expression_statement "pcVar13 = pcVar10;" (assignment_expression "pcVar13 = pcVar10" identifier = identifier) ;) (do_statement "do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            } while (pcVar9 != pcVar12);" do (compound_statement "{\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              pcVar12 = pcVar13 + 1;\n              *pcVar13 = (char)iVar6;\n              pcVar10 = pcVar9;\n              pcVar13 = pcVar12;\n            }" { (expression_statement "iVar6 = fgetc(__stream);" (assignment_expression "iVar6 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (iVar6 == -1) goto LAB_000a28fb;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "pcVar12 = pcVar13 + 1;" (assignment_expression "pcVar12 = pcVar13 + 1" identifier = (binary_expression "pcVar13 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar13 = (char)iVar6;" (assignment_expression "*pcVar13 = (char)iVar6" (pointer_expression "*pcVar13" * identifier) = (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pcVar10 = pcVar9;" (assignment_expression "pcVar10 = pcVar9" identifier = identifier) ;) (expression_statement "pcVar13 = pcVar12;" (assignment_expression "pcVar13 = pcVar12" identifier = identifier) ;) }) while (parenthesized_expression "(pcVar9 != pcVar12)" ( (binary_expression "pcVar9 != pcVar12" identifier != identifier) )) ;) })) (expression_statement "local_84 = local_84 + 1;" (assignment_expression "local_84 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar10 = '\0';" (assignment_expression "*pcVar10 = '\0'" (pointer_expression "*pcVar10" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar10 = pcVar10 + 1;" (assignment_expression "pcVar10 = pcVar10 + 1" identifier = (binary_expression "pcVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_84 != 4)" ( (binary_expression "local_84 != 4" identifier != number_literal) )) ;) (expression_statement "uVar4 = disp->displaynum;" (assignment_expression "uVar4 = disp->displaynum" identifier = (field_expression "disp->displaynum" identifier -> field_identifier)) ;) }) while (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) ;) (expression_statement "uVar5 = strtol(str[1],(char **)0x0,10);" (assignment_expression "uVar5 = strtol(str[1],(char **)0x0,10)" identifier = (call_expression "strtol(str[1],(char **)0x0,10)" identifier (argument_list "(str[1],(char **)0x0,10)" ( (subscript_expression "str[1]" identifier [ number_literal ]) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar15 = uVar4 < uVar5;" (assignment_expression "bVar15 = uVar4 < uVar5" identifier = (binary_expression "uVar4 < uVar5" identifier < identifier)) ;) (expression_statement "bVar17 = uVar4 == uVar5;" (assignment_expression "bVar17 = uVar4 == uVar5" identifier = (binary_expression "uVar4 == uVar5" identifier == identifier)) ;) }) while (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) ;)) (expression_statement "iVar6 = 0x13;" (assignment_expression "iVar6 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)str[2];" (assignment_expression "pbVar11 = (byte *)str[2]" identifier = (cast_expression "(byte *)str[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "str[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1";" (assignment_expression "pbVar14 = (byte *)"MIT-MAGIC-COOKIE-1"" identifier = (cast_expression "(byte *)"MIT-MAGIC-COOKIE-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MIT-MAGIC-COOKIE-1"" " string_content "))) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    } while (bVar17);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar15 = *pbVar11 < *pbVar14;\n      bVar17 = *pbVar11 == *pbVar14;\n      pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n      pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar11 < *pbVar14;" (assignment_expression "bVar15 = *pbVar11 < *pbVar14" identifier = (binary_expression "*pbVar11 < *pbVar14" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar17 = *pbVar11 == *pbVar14;" (assignment_expression "bVar17 = *pbVar11 == *pbVar14" identifier = (binary_expression "*pbVar11 == *pbVar14" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar15 = (!bVar15 && !bVar17) == bVar15;" (assignment_expression "bVar15 = (!bVar15 && !bVar17) == bVar15" identifier = (binary_expression "(!bVar15 && !bVar17) == bVar15" (parenthesized_expression "(!bVar15 && !bVar17)" ( (binary_expression "!bVar15 && !bVar17" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar15) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }" if (parenthesized_expression "(bVar15)" ( identifier )) (compound_statement "{\n      iVar6 = 1;\n    }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }" else (compound_statement "{\n      iVar6 = 0x14;\n      pbVar11 = (byte *)str[2];\n      pbVar14 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);\n      iVar6 = 2;\n      if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;\n    }" { (expression_statement "iVar6 = 0x14;" (assignment_expression "iVar6 = 0x14" identifier = number_literal) ;) (expression_statement "pbVar11 = (byte *)str[2];" (assignment_expression "pbVar11 = (byte *)str[2]" identifier = (cast_expression "(byte *)str[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "str[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar14 = (byte *)"XDM-AUTHORIZATION-1";" (assignment_expression "pbVar14 = (byte *)"XDM-AUTHORIZATION-1"" identifier = (cast_expression "(byte *)"XDM-AUTHORIZATION-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""XDM-AUTHORIZATION-1"" " string_content "))) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar16 = *pbVar11 < *pbVar14;\n        bVar15 = *pbVar11 == *pbVar14;\n        pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;\n        pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n      }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar11 < *pbVar14;" (assignment_expression "bVar16 = *pbVar11 < *pbVar14" identifier = (binary_expression "*pbVar11 < *pbVar14" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar15 = *pbVar11 == *pbVar14;" (assignment_expression "bVar15 = *pbVar11 == *pbVar14" identifier = (binary_expression "*pbVar11 == *pbVar14" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (if_statement "if ((!bVar16 && !bVar15) != bVar16) goto LAB_000a2851;" if (parenthesized_expression "((!bVar16 && !bVar15) != bVar16)" ( (binary_expression "(!bVar16 && !bVar15) != bVar16" (parenthesized_expression "(!bVar16 && !bVar15)" ( (binary_expression "!bVar16 && !bVar15" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;" (assignment_expression "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff" identifier = (binary_expression "(uVar2 & 0xff) << 8 | uVar3 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" ( (binary_expression "uVar2 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 & 0xff" identifier & number_literal))) ;) (if_statement "if (uVar2 == 6) {\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }" if (parenthesized_expression "(uVar2 == 6)" ( (binary_expression "uVar2 == 6" identifier == number_literal) )) (compound_statement "{\n      if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;\n    }" { (if_statement "if ((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)) goto LAB_000a2851;" if (parenthesized_expression "((((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0))" ( (binary_expression "(((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)) ||\n         (iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)" (parenthesized_expression "(((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10))" ( (binary_expression "((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)) ||\n          (sk_addrcopy(disp->addr,buf), len[0] != 0x10)" (parenthesized_expression "((disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2))" ( (binary_expression "(disp->unixdomain != 0) || (iVar7 = sk_addrtype(disp->addr), iVar7 != 2)" (parenthesized_expression "(disp->unixdomain != 0)" ( (binary_expression "disp->unixdomain != 0" (field_expression "disp->unixdomain" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "(iVar7 = sk_addrtype(disp->addr), iVar7 != 2)" ( (comma_expression "iVar7 = sk_addrtype(disp->addr), iVar7 != 2" (assignment_expression "iVar7 = sk_addrtype(disp->addr)" identifier = (call_expression "sk_addrtype(disp->addr)" identifier (argument_list "(disp->addr)" ( (field_expression "disp->addr" identifier -> field_identifier) )))) , (binary_expression "iVar7 != 2" identifier != number_literal)) ))) )) || (parenthesized_expression "(sk_addrcopy(disp->addr,buf), len[0] != 0x10)" ( (comma_expression "sk_addrcopy(disp->addr,buf), len[0] != 0x10" (call_expression "sk_addrcopy(disp->addr,buf)" identifier (argument_list "(disp->addr,buf)" ( (field_expression "disp->addr" identifier -> field_identifier) , identifier ))) , (binary_expression "len[0] != 0x10" (subscript_expression "len[0]" identifier [ number_literal ]) != number_literal)) ))) )) || (parenthesized_expression "(iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0)" ( (comma_expression "iVar7 = memcmp(str[0],buf,0x10), iVar7 != 0" (assignment_expression "iVar7 = memcmp(str[0],buf,0x10)" identifier = (call_expression "memcmp(str[0],buf,0x10)" identifier (argument_list "(str[0],buf,0x10)" ( (subscript_expression "str[0]" identifier [ number_literal ]) , identifier , number_literal )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }) (else_clause "else {\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }" else (compound_statement "{\n      if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;\n    }" { (if_statement "if (uVar2 == 0x100) {\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" if (parenthesized_expression "(uVar2 == 0x100)" ( (binary_expression "uVar2 == 0x100" identifier == number_literal) )) (compound_statement "{\n        if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" { (if_statement "if (((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)) {\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }" if (parenthesized_expression "(((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0))" ( (binary_expression "((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)) &&\n           (iVar7 = strcmp(__s1,str[0]), iVar7 == 0)" (parenthesized_expression "((bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0))" ( (binary_expression "(bVar18 || disp->unixdomain != 0) && (__s1 != (char *)0x0)" (parenthesized_expression "(bVar18 || disp->unixdomain != 0)" ( (binary_expression "bVar18 || disp->unixdomain != 0" identifier || (binary_expression "disp->unixdomain != 0" (field_expression "disp->unixdomain" identifier -> field_identifier) != number_literal)) )) && (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar7 = strcmp(__s1,str[0]), iVar7 == 0)" ( (comma_expression "iVar7 = strcmp(__s1,str[0]), iVar7 == 0" (assignment_expression "iVar7 = strcmp(__s1,str[0])" identifier = (call_expression "strcmp(__s1,str[0])" identifier (argument_list "(__s1,str[0])" ( identifier , (subscript_expression "str[0]" identifier [ number_literal ]) )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          disp->localauthproto = iVar6;\n          safefree(disp->localauthdata);\n          puVar8 = (uchar *)safemalloc(len[3],1);\n          disp->localauthdata = puVar8;\n          memcpy(puVar8,str[3],len[3]);\n          disp->localauthdatalen = len[3];\n          goto LAB_000a28fb;\n        }" { (expression_statement "disp->localauthproto = iVar6;" (assignment_expression "disp->localauthproto = iVar6" (field_expression "disp->localauthproto" identifier -> field_identifier) = identifier) ;) (expression_statement "safefree(disp->localauthdata);" (call_expression "safefree(disp->localauthdata)" identifier (argument_list "(disp->localauthdata)" ( (field_expression "disp->localauthdata" identifier -> field_identifier) ))) ;) (expression_statement "puVar8 = (uchar *)safemalloc(len[3],1);" (assignment_expression "puVar8 = (uchar *)safemalloc(len[3],1)" identifier = (cast_expression "(uchar *)safemalloc(len[3],1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(len[3],1)" identifier (argument_list "(len[3],1)" ( (subscript_expression "len[3]" identifier [ number_literal ]) , number_literal ))))) ;) (expression_statement "disp->localauthdata = puVar8;" (assignment_expression "disp->localauthdata = puVar8" (field_expression "disp->localauthdata" identifier -> field_identifier) = identifier) ;) (expression_statement "memcpy(puVar8,str[3],len[3]);" (call_expression "memcpy(puVar8,str[3],len[3])" identifier (argument_list "(puVar8,str[3],len[3])" ( identifier , (subscript_expression "str[3]" identifier [ number_literal ]) , (subscript_expression "len[3]" identifier [ number_literal ]) ))) ;) (expression_statement "disp->localauthdatalen = len[3];" (assignment_expression "disp->localauthdatalen = len[3]" (field_expression "disp->localauthdatalen" identifier -> field_identifier) = (subscript_expression "len[3]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;) })) (if_statement "if (((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))\n      goto LAB_000a2851;" if (parenthesized_expression "(((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))))" ( (binary_expression "((uVar2 != 0) || (disp->unixdomain != 0)) ||\n         ((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)))))" (parenthesized_expression "((uVar2 != 0) || (disp->unixdomain != 0))" ( (binary_expression "(uVar2 != 0) || (disp->unixdomain != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) || (parenthesized_expression "(disp->unixdomain != 0)" ( (binary_expression "disp->unixdomain != 0" (field_expression "disp->unixdomain" identifier -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "((iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)))))" ( (parenthesized_expression "(iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))))" ( (comma_expression "iVar7 = sk_addrtype(disp->addr), iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)))" (assignment_expression "iVar7 = sk_addrtype(disp->addr)" identifier = (call_expression "sk_addrtype(disp->addr)" identifier (argument_list "(disp->addr)" ( (field_expression "disp->addr" identifier -> field_identifier) )))) , (binary_expression "iVar7 != 1 ||\n          ((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)))" (binary_expression "iVar7 != 1" identifier != number_literal) || (parenthesized_expression "((sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)))" ( (parenthesized_expression "(sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf))" ( (comma_expression "sk_addrcopy(disp->addr,buf), len[0] != 4 || (*(char (*) [4])str[0] != buf)" (call_expression "sk_addrcopy(disp->addr,buf)" identifier (argument_list "(disp->addr,buf)" ( (field_expression "disp->addr" identifier -> field_identifier) , identifier ))) , (binary_expression "len[0] != 4 || (*(char (*) [4])str[0] != buf)" (binary_expression "len[0] != 4" (subscript_expression "len[0]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*(char (*) [4])str[0] != buf)" ( (binary_expression "*(char (*) [4])str[0] != buf" (pointer_expression "*(char (*) [4])str[0]" * (cast_expression "(char (*) [4])str[0]" ( (type_descriptor "char (*) [4]" primitive_type (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (subscript_expression "str[0]" identifier [ number_literal ]))) != identifier) )))) )) )))) )) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "disp->localauthproto = iVar6;" (assignment_expression "disp->localauthproto = iVar6" (field_expression "disp->localauthproto" identifier -> field_identifier) = identifier) ;) (expression_statement "safefree(disp->localauthdata);" (call_expression "safefree(disp->localauthdata)" identifier (argument_list "(disp->localauthdata)" ( (field_expression "disp->localauthdata" identifier -> field_identifier) ))) ;) (expression_statement "iVar6 = len[3];" (assignment_expression "iVar6 = len[3]" identifier = (subscript_expression "len[3]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = (uchar *)safemalloc(len[3],1);" (assignment_expression "puVar8 = (uchar *)safemalloc(len[3],1)" identifier = (cast_expression "(uchar *)safemalloc(len[3],1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(len[3],1)" identifier (argument_list "(len[3],1)" ( (subscript_expression "len[3]" identifier [ number_literal ]) , number_literal ))))) ;) (expression_statement "disp->localauthdata = puVar8;" (assignment_expression "disp->localauthdata = puVar8" (field_expression "disp->localauthdata" identifier -> field_identifier) = identifier) ;) (expression_statement "memcpy(puVar8,str[3],iVar6);" (call_expression "memcpy(puVar8,str[3],iVar6)" identifier (argument_list "(puVar8,str[3],iVar6)" ( identifier , (subscript_expression "str[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "disp->localauthdatalen = iVar6;" (assignment_expression "disp->localauthdatalen = iVar6" (field_expression "disp->localauthdatalen" identifier -> field_identifier) = identifier) ;) (if_statement "if (bVar18) goto LAB_000a2851;" if (parenthesized_expression "(bVar18)" ( identifier )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) (labeled_statement "LAB_000a28fb:\n    fclose(__stream);" statement_identifier : (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;)) (expression_statement "smemclr(b,0x40004);" (call_expression "smemclr(b,0x40004)" identifier (argument_list "(b,0x40004)" ( identifier , number_literal ))) ;) (expression_statement "safefree(b);" (call_expression "safefree(b)" identifier (argument_list "(b)" ( identifier ))) ;) (expression_statement "safefree(__s1);" (call_expression "safefree(__s1)" identifier (argument_list "(__s1)" ( 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;" return ;) })))
(translation_unit "void FUN_000a27c0(int *param_1,char *param_2)\n\n{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return;\n}\n\n" (function_definition "void FUN_000a27c0(int *param_1,char *param_2)\n\n{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000a27c0(int *param_1,char *param_2)" identifier (parameter_list "(int *param_1,char *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return;\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "char *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "void *local_44;" primitive_type (pointer_declarator "*local_44" * identifier) ;) (declaration "uint local_40 [3];" type_identifier (array_declarator "local_40 [3]" identifier [ number_literal ]) ;) (declaration "size_t local_34;" primitive_type identifier ;) (declaration "int local_30 [4];" primitive_type (array_declarator "local_30 [4]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0xa27c9;" (assignment_expression "uStack_14 = 0xa27c9" identifier = number_literal) ;) (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) ))))) ;) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) (if_statement "if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }" { (expression_statement "iVar6 = FUN_0009ab90(param_1[5]);" (assignment_expression "iVar6 = FUN_0009ab90(param_1[5])" identifier = (call_expression "FUN_0009ab90(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) ;) (expression_statement "bVar20 = iVar6 != 0;" (assignment_expression "bVar20 = iVar6 != 0" identifier = (binary_expression "iVar6 != 0" identifier != number_literal)) ;) })) (expression_statement "__stream = fopen64(param_2,"rb");" (assignment_expression "__stream = fopen64(param_2,"rb")" identifier = (call_expression "fopen64(param_2,"rb")" identifier (argument_list "(param_2,"rb")" ( identifier , (string_literal ""rb"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" { (expression_statement "__s1 = (char *)FUN_0009bd20();" (assignment_expression "__s1 = (char *)FUN_0009bd20()" identifier = (cast_expression "(char *)FUN_0009bd20()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0009bd20()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar1 = (int *)FUN_0002e780(0x40004,1);" (assignment_expression "piVar1 = (int *)FUN_0002e780(0x40004,1)" identifier = (cast_expression "(int *)FUN_0002e780(0x40004,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(0x40004,1)" identifier (argument_list "(0x40004,1)" ( number_literal , number_literal ))))) ;) (labeled_statement "LAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" statement_identifier : (do_statement "do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" do (compound_statement "{\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    }" { (do_statement "do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);" do (compound_statement "{\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      }" { (expression_statement "uVar2 = fgetc(__stream);" (assignment_expression "uVar2 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;" if (parenthesized_expression "((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))" ( (binary_expression "(uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" ( (comma_expression "uVar3 = fgetc(__stream), uVar3 == 0xffffffff" (assignment_expression "uVar3 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) , (binary_expression "uVar3 == 0xffffffff" identifier == number_literal)) ))) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "piVar12 = piVar1;" (assignment_expression "piVar12 = piVar1" identifier = identifier) ;) (do_statement "do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);" do (compound_statement "{\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        }" { (expression_statement "uVar4 = fgetc(__stream);" (assignment_expression "uVar4 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar4 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar4 == 0xffffffff)" ( (binary_expression "uVar4 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "local_40[local_84] = uVar4 & 0xff;" (assignment_expression "local_40[local_84] = uVar4 & 0xff" (subscript_expression "local_40[local_84]" identifier [ identifier ]) = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar5 = fgetc(__stream);" (assignment_expression "uVar5 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (uVar5 == 0xffffffff) goto LAB_000a28fb;" if (parenthesized_expression "(uVar5 == 0xffffffff)" ( (binary_expression "uVar5 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;" (assignment_expression "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff" identifier = (binary_expression "(uVar4 & 0xff) << 8 | uVar5 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar5 & 0xff" identifier & number_literal))) ;) (expression_statement "local_40[local_84] = uVar4;" (assignment_expression "local_40[local_84] = uVar4" (subscript_expression "local_40[local_84]" identifier [ identifier ]) = identifier) ;) (expression_statement "(&local_50)[local_84] = piVar12;" (assignment_expression "(&local_50)[local_84] = piVar12" (subscript_expression "(&local_50)[local_84]" (parenthesized_expression "(&local_50)" ( (pointer_expression "&local_50" & identifier) )) [ identifier ]) = identifier) ;) (if_statement "if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" { (expression_statement "piVar11 = (int *)((int)piVar12 + uVar4);" (assignment_expression "piVar11 = (int *)((int)piVar12 + uVar4)" identifier = (cast_expression "(int *)((int)piVar12 + uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + uVar4)" ( (binary_expression "(int)piVar12 + uVar4" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "piVar15 = piVar12;" (assignment_expression "piVar15 = piVar12" identifier = identifier) ;) (do_statement "do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);" do (compound_statement "{\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            }" { (expression_statement "iVar6 = fgetc(__stream);" (assignment_expression "iVar6 = fgetc(__stream)" identifier = (call_expression "fgetc(__stream)" identifier (argument_list "(__stream)" ( identifier )))) ;) (if_statement "if (iVar6 == -1) goto LAB_000a28fb;" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;)) (expression_statement "piVar14 = (int *)((int)piVar15 + 1);" (assignment_expression "piVar14 = (int *)((int)piVar15 + 1)" identifier = (cast_expression "(int *)((int)piVar15 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 1)" ( (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(char *)piVar15 = (char)iVar6;" (assignment_expression "*(char *)piVar15 = (char)iVar6" (pointer_expression "*(char *)piVar15" * (cast_expression "(char *)piVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)iVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" identifier = identifier) ;) (expression_statement "piVar15 = piVar14;" (assignment_expression "piVar15 = piVar14" identifier = identifier) ;) }) while (parenthesized_expression "(piVar11 != piVar14)" ( (binary_expression "piVar11 != piVar14" identifier != identifier) )) ;) })) (expression_statement "local_84 = local_84 + 1;" (assignment_expression "local_84 = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)piVar12 = 0;" (assignment_expression "*(undefined1 *)piVar12 = 0" (pointer_expression "*(undefined1 *)piVar12" * (cast_expression "(undefined1 *)piVar12" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "piVar12 = (int *)((int)piVar12 + 1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + 1)" identifier = (cast_expression "(int *)((int)piVar12 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 1)" ( (binary_expression "(int)piVar12 + 1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_84 != 4)" ( (binary_expression "local_84 != 4" identifier != number_literal) )) ;) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) ;) (expression_statement "uVar5 = strtol(local_4c,(char **)0x0,10);" (assignment_expression "uVar5 = strtol(local_4c,(char **)0x0,10)" identifier = (call_expression "strtol(local_4c,(char **)0x0,10)" identifier (argument_list "(local_4c,(char **)0x0,10)" ( identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar17 = uVar4 < uVar5;" (assignment_expression "bVar17 = uVar4 < uVar5" identifier = (binary_expression "uVar4 < uVar5" identifier < identifier)) ;) (expression_statement "bVar19 = uVar4 == uVar5;" (assignment_expression "bVar19 = uVar4 == uVar5" identifier = (binary_expression "uVar4 == uVar5" identifier == identifier)) ;) }) while (parenthesized_expression "(!bVar19)" ( (unary_expression "!bVar19" ! identifier) )) ;)) (expression_statement "iVar6 = 0x13;" (assignment_expression "iVar6 = 0x13" identifier = number_literal) ;) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" identifier = identifier) ;) (expression_statement "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";" (assignment_expression "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1"" identifier = (cast_expression "(byte *)"MIT-MAGIC-COOKIE-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""MIT-MAGIC-COOKIE-1"" " string_content "))) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar17 = *pbVar13 < *pbVar16;" (assignment_expression "bVar17 = *pbVar13 < *pbVar16" identifier = (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "bVar19 = *pbVar13 == *pbVar16;" (assignment_expression "bVar19 = *pbVar13 == *pbVar16" identifier = (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar17 = (!bVar17 && !bVar19) == bVar17;" (assignment_expression "bVar17 = (!bVar17 && !bVar19) == bVar17" identifier = (binary_expression "(!bVar17 && !bVar19) == bVar17" (parenthesized_expression "(!bVar17 && !bVar19)" ( (binary_expression "!bVar17 && !bVar19" (unary_expression "!bVar17" ! identifier) && (unary_expression "!bVar19" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n      iVar6 = 1;\n    }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" else (compound_statement "{\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" { (expression_statement "iVar6 = 0x14;" (assignment_expression "iVar6 = 0x14" identifier = number_literal) ;) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" identifier = identifier) ;) (expression_statement "pbVar16 = (byte *)"XDM-AUTHORIZATION-1";" (assignment_expression "pbVar16 = (byte *)"XDM-AUTHORIZATION-1"" identifier = (cast_expression "(byte *)"XDM-AUTHORIZATION-1"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""XDM-AUTHORIZATION-1"" " string_content "))) ;) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar13 < *pbVar16;" (assignment_expression "bVar18 = *pbVar13 < *pbVar16" identifier = (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "bVar17 = *pbVar13 == *pbVar16;" (assignment_expression "bVar17 = *pbVar13 == *pbVar16" identifier = (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar16" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" identifier = (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" identifier + (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (if_statement "if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;" if (parenthesized_expression "((!bVar18 && !bVar17) != bVar18)" ( (binary_expression "(!bVar18 && !bVar17) != bVar18" (parenthesized_expression "(!bVar18 && !bVar17)" ( (binary_expression "!bVar18 && !bVar17" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) != identifier) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;" (assignment_expression "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff" identifier = (binary_expression "(uVar2 & 0xff) << 8 | uVar3 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" ( (binary_expression "uVar2 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 & 0xff" identifier & number_literal))) ;) (expression_statement "piVar12 = local_30;" (assignment_expression "piVar12 = local_30" identifier = identifier) ;) (if_statement "if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" if (parenthesized_expression "(uVar2 == 6)" ( (binary_expression "uVar2 == 6" identifier == number_literal) )) (compound_statement "{\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }" { (if_statement "if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;" if (parenthesized_expression "(((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10))" ( (binary_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" (parenthesized_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2))" ( (binary_expression "(*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) || (parenthesized_expression "(iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" ( (comma_expression "iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2" (assignment_expression "iVar9 = FUN_0009abe0(param_1[5])" identifier = (call_expression "FUN_0009abe0(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) , (binary_expression "iVar9 != 2" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" ( (comma_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10" (assignment_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2)" identifier = (call_expression "FUN_0009ac10(param_1[5],local_30,2,2)" identifier (argument_list "(param_1[5],local_30,2,2)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , number_literal , number_literal )))) , (binary_expression "local_40[0] != 0x10" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal)) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" identifier = number_literal) ;) (expression_statement "iVar10 = memcmp(local_50,local_30,0x10);" (assignment_expression "iVar10 = memcmp(local_50,local_30,0x10)" identifier = (call_expression "memcmp(local_50,local_30,0x10)" identifier (argument_list "(local_50,local_30,0x10)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar10 != 0) goto LAB_000a2851;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }) (else_clause "else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" else (compound_statement "{\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" { (if_statement "if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" if (parenthesized_expression "(uVar2 == 0x100)" ( (binary_expression "uVar2 == 0x100" identifier == number_literal) )) (compound_statement "{\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" { (if_statement "if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" if (parenthesized_expression "(((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0))" ( (binary_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" (parenthesized_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0))" ( (binary_expression "(bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)" (parenthesized_expression "(bVar20 || *param_1 != 0)" ( (binary_expression "bVar20 || *param_1 != 0" identifier || (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal)) )) && (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" ( (comma_expression "iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,(char *)local_50)" identifier = (call_expression "strcmp(__s1,(char *)local_50)" identifier (argument_list "(__s1,(char *)local_50)" ( identifier , (cast_expression "(char *)local_50" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" { (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002f010(param_1[9]);" (call_expression "FUN_0002f010(param_1[9])" identifier (argument_list "(param_1[9])" ( (subscript_expression "param_1[9]" identifier [ number_literal ]) ))) ;) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" identifier = (cast_expression "(void *)FUN_0002e780(local_34,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(local_34,1)" identifier (argument_list "(local_34,1)" ( identifier , number_literal ))))) ;) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "memcpy(pvVar8,local_44,local_34);" (call_expression "memcpy(pvVar8,local_44,local_34)" identifier (argument_list "(pvVar8,local_44,local_34)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[10] = local_34;" (assignment_expression "param_1[10] = local_34" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_000a28fb;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;) })) (if_statement "if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;" if (parenthesized_expression "(((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))))" ( (binary_expression "((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" (parenthesized_expression "((uVar2 != 0) || (*param_1 != 0))" ( (binary_expression "(uVar2 != 0) || (*param_1 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) || (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) ))) )) || (parenthesized_expression "((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" ( (parenthesized_expression "(iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))" ( (comma_expression "iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (assignment_expression "iVar7 = FUN_0009abe0(param_1[5])" identifier = (call_expression "FUN_0009abe0(param_1[5])" identifier (argument_list "(param_1[5])" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) )))) , (binary_expression "iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (binary_expression "iVar7 != 1" identifier != number_literal) || (parenthesized_expression "((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" ( (parenthesized_expression "(iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))" ( (comma_expression "iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (assignment_expression "iVar9 = iVar7" identifier = identifier) , (comma_expression "FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (call_expression "FUN_0009ac10(param_1[5],local_30,1,1)" identifier (argument_list "(param_1[5],local_30,1,1)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , identifier , number_literal , number_literal ))) , (binary_expression "local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (binary_expression "local_40[0] != 4" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*local_50 != local_30[0])" ( (binary_expression "*local_50 != local_30[0]" (pointer_expression "*local_50" * identifier) != (subscript_expression "local_30[0]" identifier [ number_literal ])) ))))) )) )))) )) ))) )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) }))) (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);" (call_expression "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9)" identifier (argument_list "(param_1[9],piVar12,iVar7,iVar9)" ( (subscript_expression "param_1[9]" identifier [ number_literal ]) , identifier , identifier , identifier ))) ;) (expression_statement "__n = local_34;" (assignment_expression "__n = local_34" identifier = identifier) ;) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" identifier = (cast_expression "(void *)FUN_0002e780(local_34,1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(local_34,1)" identifier (argument_list "(local_34,1)" ( identifier , number_literal ))))) ;) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (cast_expression "(int)pvVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "memcpy(pvVar8,local_44,__n);" (call_expression "memcpy(pvVar8,local_44,__n)" identifier (argument_list "(pvVar8,local_44,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_1[10] = __n;" (assignment_expression "param_1[10] = __n" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar20) goto LAB_000a2851;" if (parenthesized_expression "(bVar20)" ( identifier )) (goto_statement "goto LAB_000a2851;" goto statement_identifier ;)) (labeled_statement "LAB_000a28fb:\n    fclose(__stream);" statement_identifier : (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;)) (expression_statement "FUN_0002f0f0(piVar1,0x40004);" (call_expression "FUN_0002f0f0(piVar1,0x40004)" identifier (argument_list "(piVar1,0x40004)" ( identifier , number_literal ))) ;) (expression_statement "FUN_0002f010(piVar1);" (call_expression "FUN_0002f010(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) (expression_statement "FUN_0002f010(__s1);" (call_expression "FUN_0002f010(__s1)" identifier (argument_list "(__s1)" ( 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;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) }) while (parenthesized_expression ( (unary_expression ! IDENT) )) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , LIT , LIT )))) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT || (binary_expression (pointer_expression * IDENT) != LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) , (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , LIT , LIT ))) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (subscript_expression IDENT [ LIT ])) ))))) )) )))) )) ))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (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 ;) })))
(function_definition "void FUN_000a27c0(int *param_1,char *param_2)\n\n{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000a27c0(int *param_1,char *param_2)" (identifier "FUN_000a27c0") (parameter_list "(int *param_1,char *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  size_t __n;\n  FILE *__stream;\n  char *__s1;\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  void *pvVar8;\n  int iVar9;\n  int iVar10;\n  int *piVar11;\n  int *piVar12;\n  byte *pbVar13;\n  int *piVar14;\n  int *piVar15;\n  byte *pbVar16;\n  int in_GS_OFFSET;\n  bool bVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  int local_84;\n  int *local_50;\n  char *local_4c;\n  byte *local_48;\n  void *local_44;\n  uint local_40 [3];\n  size_t local_34;\n  int local_30 [4];\n  int local_20;\n  undefined4 uStack_14;\n  \n  bVar21 = 0;\n  uStack_14 = 0xa27c9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar20 = false;\n  if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }\n  __stream = fopen64(param_2,"rb");\n  if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000a39d0();\n  }\n  return;\n}" ({ "{") (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "FILE *__stream;" (type_identifier "FILE") (pointer_declarator "*__stream" (* "*") (identifier "__stream")) (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "void *pvVar8;" (primitive_type "void") (pointer_declarator "*pvVar8" (* "*") (identifier "pvVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "byte bVar21;" (type_identifier "byte") (identifier "bVar21") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "int *local_50;" (primitive_type "int") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "char *local_4c;" (primitive_type "char") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "byte *local_48;" (type_identifier "byte") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "void *local_44;" (primitive_type "void") (pointer_declarator "*local_44" (* "*") (identifier "local_44")) (; ";")) (declaration "uint local_40 [3];" (type_identifier "uint") (array_declarator "local_40 [3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "size_t local_34;" (primitive_type "size_t") (identifier "local_34") (; ";")) (declaration "int local_30 [4];" (primitive_type "int") (array_declarator "local_30 [4]" (identifier "local_30") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0xa27c9;" (assignment_expression "uStack_14 = 0xa27c9" (identifier "uStack_14") (= "=") (number_literal "0xa27c9")) (; ";")) (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")) () ")"))))) (; ";")) (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" (identifier "bVar20") (= "=") (false "false")) (; ";")) (if_statement "if (*param_1 == 0) {\n    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\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    iVar6 = FUN_0009ab90(param_1[5]);\n    bVar20 = iVar6 != 0;\n  }" ({ "{") (expression_statement "iVar6 = FUN_0009ab90(param_1[5]);" (assignment_expression "iVar6 = FUN_0009ab90(param_1[5])" (identifier "iVar6") (= "=") (call_expression "FUN_0009ab90(param_1[5])" (identifier "FUN_0009ab90") (argument_list "(param_1[5])" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) () ")")))) (; ";")) (expression_statement "bVar20 = iVar6 != 0;" (assignment_expression "bVar20 = iVar6 != 0" (identifier "bVar20") (= "=") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0"))) (; ";")) (} "}"))) (expression_statement "__stream = fopen64(param_2,"rb");" (assignment_expression "__stream = fopen64(param_2,"rb")" (identifier "__stream") (= "=") (call_expression "fopen64(param_2,"rb")" (identifier "fopen64") (argument_list "(param_2,"rb")" (( "(") (identifier "param_2") (, ",") (string_literal ""rb"" (" """) (string_content "rb") (" """)) () ")")))) (; ";")) (if_statement "if (__stream != (FILE *)0x0) {\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" (if "if") (parenthesized_expression "(__stream != (FILE *)0x0)" (( "(") (binary_expression "__stream != (FILE *)0x0" (identifier "__stream") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    __s1 = (char *)FUN_0009bd20();\n    piVar1 = (int *)FUN_0002e780(0x40004,1);\nLAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);\n    iVar6 = 0x13;\n    pbVar13 = local_48;\n    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);\n    bVar18 = false;\n    bVar17 = (!bVar17 && !bVar19) == bVar17;\n    if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }\n    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;\n    piVar12 = local_30;\n    if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }\n    param_1[8] = iVar6;\n    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);\n    __n = local_34;\n    pvVar8 = (void *)FUN_0002e780(local_34,1);\n    param_1[9] = (int)pvVar8;\n    memcpy(pvVar8,local_44,__n);\n    param_1[10] = __n;\n    if (bVar20) goto LAB_000a2851;\nLAB_000a28fb:\n    fclose(__stream);\n    FUN_0002f0f0(piVar1,0x40004);\n    FUN_0002f010(piVar1);\n    FUN_0002f010(__s1);\n  }" ({ "{") (expression_statement "__s1 = (char *)FUN_0009bd20();" (assignment_expression "__s1 = (char *)FUN_0009bd20()" (identifier "__s1") (= "=") (cast_expression "(char *)FUN_0009bd20()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0009bd20()" (identifier "FUN_0009bd20") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar1 = (int *)FUN_0002e780(0x40004,1);" (assignment_expression "piVar1 = (int *)FUN_0002e780(0x40004,1)" (identifier "piVar1") (= "=") (cast_expression "(int *)FUN_0002e780(0x40004,1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e780(0x40004,1)" (identifier "FUN_0002e780") (argument_list "(0x40004,1)" (( "(") (number_literal "0x40004") (, ",") (number_literal "1") () ")"))))) (; ";")) (labeled_statement "LAB_000a2851:\n    do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" (statement_identifier "LAB_000a2851") (: ":") (do_statement "do {\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    } while (!bVar19);" (do "do") (compound_statement "{\n      do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);\n      uVar5 = strtol(local_4c,(char **)0x0,10);\n      bVar17 = uVar4 < uVar5;\n      bVar19 = uVar4 == uVar5;\n    }" ({ "{") (do_statement "do {\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      } while ((int)uVar4 < 0);" (do "do") (compound_statement "{\n        uVar2 = fgetc(__stream);\n        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;\n        local_84 = 0;\n        piVar12 = piVar1;\n        do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);\n        uVar4 = param_1[2];\n      }" ({ "{") (expression_statement "uVar2 = fgetc(__stream);" (assignment_expression "uVar2 = fgetc(__stream)" (identifier "uVar2") (= "=") (call_expression "fgetc(__stream)" (identifier "fgetc") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (; ";")) (if_statement "if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))\n        goto LAB_000a28fb;" (if "if") (parenthesized_expression "((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))" (( "(") (binary_expression "(uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (|| "||") (parenthesized_expression "(uVar3 = fgetc(__stream), uVar3 == 0xffffffff)" (( "(") (comma_expression "uVar3 = fgetc(__stream), uVar3 == 0xffffffff" (assignment_expression "uVar3 = fgetc(__stream)" (identifier "uVar3") (= "=") (call_expression "fgetc(__stream)" (identifier "fgetc") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (, ",") (binary_expression "uVar3 == 0xffffffff" (identifier "uVar3") (== "==") (number_literal "0xffffffff"))) () ")"))) () ")")) (goto_statement "goto LAB_000a28fb;" (goto "goto") (statement_identifier "LAB_000a28fb") (; ";"))) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12 = piVar1;" (assignment_expression "piVar12 = piVar1" (identifier "piVar12") (= "=") (identifier "piVar1")) (; ";")) (do_statement "do {\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        } while (local_84 != 4);" (do "do") (compound_statement "{\n          uVar4 = fgetc(__stream);\n          if (uVar4 == 0xffffffff) goto LAB_000a28fb;\n          local_40[local_84] = uVar4 & 0xff;\n          uVar5 = fgetc(__stream);\n          if (uVar5 == 0xffffffff) goto LAB_000a28fb;\n          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;\n          local_40[local_84] = uVar4;\n          (&local_50)[local_84] = piVar12;\n          if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }\n          local_84 = local_84 + 1;\n          *(undefined1 *)piVar12 = 0;\n          piVar12 = (int *)((int)piVar12 + 1);\n        }" ({ "{") (expression_statement "uVar4 = fgetc(__stream);" (assignment_expression "uVar4 = fgetc(__stream)" (identifier "uVar4") (= "=") (call_expression "fgetc(__stream)" (identifier "fgetc") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (; ";")) (if_statement "if (uVar4 == 0xffffffff) goto LAB_000a28fb;" (if "if") (parenthesized_expression "(uVar4 == 0xffffffff)" (( "(") (binary_expression "uVar4 == 0xffffffff" (identifier "uVar4") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_000a28fb;" (goto "goto") (statement_identifier "LAB_000a28fb") (; ";"))) (expression_statement "local_40[local_84] = uVar4 & 0xff;" (assignment_expression "local_40[local_84] = uVar4 & 0xff" (subscript_expression "local_40[local_84]" (identifier "local_40") ([ "[") (identifier "local_84") (] "]")) (= "=") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar5 = fgetc(__stream);" (assignment_expression "uVar5 = fgetc(__stream)" (identifier "uVar5") (= "=") (call_expression "fgetc(__stream)" (identifier "fgetc") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (; ";")) (if_statement "if (uVar5 == 0xffffffff) goto LAB_000a28fb;" (if "if") (parenthesized_expression "(uVar5 == 0xffffffff)" (( "(") (binary_expression "uVar5 == 0xffffffff" (identifier "uVar5") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_000a28fb;" (goto "goto") (statement_identifier "LAB_000a28fb") (; ";"))) (expression_statement "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;" (assignment_expression "uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff" (identifier "uVar4") (= "=") (binary_expression "(uVar4 & 0xff) << 8 | uVar5 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" (( "(") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff")))) (; ";")) (expression_statement "local_40[local_84] = uVar4;" (assignment_expression "local_40[local_84] = uVar4" (subscript_expression "local_40[local_84]" (identifier "local_40") ([ "[") (identifier "local_84") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "(&local_50)[local_84] = piVar12;" (assignment_expression "(&local_50)[local_84] = piVar12" (subscript_expression "(&local_50)[local_84]" (parenthesized_expression "(&local_50)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")")) ([ "[") (identifier "local_84") (] "]")) (= "=") (identifier "piVar12")) (; ";")) (if_statement "if (uVar4 != 0) {\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar11 = (int *)((int)piVar12 + uVar4);\n            piVar15 = piVar12;\n            do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);\n          }" ({ "{") (expression_statement "piVar11 = (int *)((int)piVar12 + uVar4);" (assignment_expression "piVar11 = (int *)((int)piVar12 + uVar4)" (identifier "piVar11") (= "=") (cast_expression "(int *)((int)piVar12 + uVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + uVar4)" (( "(") (binary_expression "(int)piVar12 + uVar4" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "piVar15 = piVar12;" (assignment_expression "piVar15 = piVar12" (identifier "piVar15") (= "=") (identifier "piVar12")) (; ";")) (do_statement "do {\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            } while (piVar11 != piVar14);" (do "do") (compound_statement "{\n              iVar6 = fgetc(__stream);\n              if (iVar6 == -1) goto LAB_000a28fb;\n              piVar14 = (int *)((int)piVar15 + 1);\n              *(char *)piVar15 = (char)iVar6;\n              piVar12 = piVar11;\n              piVar15 = piVar14;\n            }" ({ "{") (expression_statement "iVar6 = fgetc(__stream);" (assignment_expression "iVar6 = fgetc(__stream)" (identifier "iVar6") (= "=") (call_expression "fgetc(__stream)" (identifier "fgetc") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")")))) (; ";")) (if_statement "if (iVar6 == -1) goto LAB_000a28fb;" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_000a28fb;" (goto "goto") (statement_identifier "LAB_000a28fb") (; ";"))) (expression_statement "piVar14 = (int *)((int)piVar15 + 1);" (assignment_expression "piVar14 = (int *)((int)piVar15 + 1)" (identifier "piVar14") (= "=") (cast_expression "(int *)((int)piVar15 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 1)" (( "(") (binary_expression "(int)piVar15 + 1" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(char *)piVar15 = (char)iVar6;" (assignment_expression "*(char *)piVar15 = (char)iVar6" (pointer_expression "*(char *)piVar15" (* "*") (cast_expression "(char *)piVar15" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar15"))) (= "=") (cast_expression "(char)iVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar6"))) (; ";")) (expression_statement "piVar12 = piVar11;" (assignment_expression "piVar12 = piVar11" (identifier "piVar12") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "piVar15 = piVar14;" (assignment_expression "piVar15 = piVar14" (identifier "piVar15") (= "=") (identifier "piVar14")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar11 != piVar14)" (( "(") (binary_expression "piVar11 != piVar14" (identifier "piVar11") (!= "!=") (identifier "piVar14")) () ")")) (; ";")) (} "}"))) (expression_statement "local_84 = local_84 + 1;" (assignment_expression "local_84 = local_84 + 1" (identifier "local_84") (= "=") (binary_expression "local_84 + 1" (identifier "local_84") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)piVar12 = 0;" (assignment_expression "*(undefined1 *)piVar12 = 0" (pointer_expression "*(undefined1 *)piVar12" (* "*") (cast_expression "(undefined1 *)piVar12" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar12"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12 = (int *)((int)piVar12 + 1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + 1)" (identifier "piVar12") (= "=") (cast_expression "(int *)((int)piVar12 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 1)" (( "(") (binary_expression "(int)piVar12 + 1" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_84 != 4)" (( "(") (binary_expression "local_84 != 4" (identifier "local_84") (!= "!=") (number_literal "4")) () ")")) (; ";")) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" (identifier "uVar4") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar4 < 0)" (( "(") (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (< "<") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar5 = strtol(local_4c,(char **)0x0,10);" (assignment_expression "uVar5 = strtol(local_4c,(char **)0x0,10)" (identifier "uVar5") (= "=") (call_expression "strtol(local_4c,(char **)0x0,10)" (identifier "strtol") (argument_list "(local_4c,(char **)0x0,10)" (( "(") (identifier "local_4c") (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "bVar17 = uVar4 < uVar5;" (assignment_expression "bVar17 = uVar4 < uVar5" (identifier "bVar17") (= "=") (binary_expression "uVar4 < uVar5" (identifier "uVar4") (< "<") (identifier "uVar5"))) (; ";")) (expression_statement "bVar19 = uVar4 == uVar5;" (assignment_expression "bVar19 = uVar4 == uVar5" (identifier "bVar19") (= "=") (binary_expression "uVar4 == uVar5" (identifier "uVar4") (== "==") (identifier "uVar5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(!bVar19)" (( "(") (unary_expression "!bVar19" (! "!") (identifier "bVar19")) () ")")) (; ";"))) (expression_statement "iVar6 = 0x13;" (assignment_expression "iVar6 = 0x13" (identifier "iVar6") (= "=") (number_literal "0x13")) (; ";")) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" (identifier "pbVar13") (= "=") (identifier "local_48")) (; ";")) (expression_statement "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";" (assignment_expression "pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1"" (identifier "pbVar16") (= "=") (cast_expression "(byte *)"MIT-MAGIC-COOKIE-1"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""MIT-MAGIC-COOKIE-1"" (" """) (string_content "MIT-MAGIC-COOKIE-1") (" """)))) (; ";")) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    } while (bVar19);" (do "do") (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar17 = *pbVar13 < *pbVar16;\n      bVar19 = *pbVar13 == *pbVar16;\n      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar17 = *pbVar13 < *pbVar16;" (assignment_expression "bVar17 = *pbVar13 < *pbVar16" (identifier "bVar17") (= "=") (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16")))) (; ";")) (expression_statement "bVar19 = *pbVar13 == *pbVar16;" (assignment_expression "bVar19 = *pbVar13 == *pbVar16" (identifier "bVar19") (= "=") (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" (identifier "pbVar16") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (; ";")) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar17 = (!bVar17 && !bVar19) == bVar17;" (assignment_expression "bVar17 = (!bVar17 && !bVar19) == bVar17" (identifier "bVar17") (= "=") (binary_expression "(!bVar17 && !bVar19) == bVar17" (parenthesized_expression "(!bVar17 && !bVar19)" (( "(") (binary_expression "!bVar17 && !bVar19" (unary_expression "!bVar17" (! "!") (identifier "bVar17")) (&& "&&") (unary_expression "!bVar19" (! "!") (identifier "bVar19"))) () ")")) (== "==") (identifier "bVar17"))) (; ";")) (if_statement "if (bVar17) {\n      iVar6 = 1;\n    }\n    else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n      iVar6 = 1;\n    }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" (else "else") (compound_statement "{\n      iVar6 = 0x14;\n      pbVar13 = local_48;\n      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";\n      do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);\n      iVar6 = 2;\n      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;\n    }" ({ "{") (expression_statement "iVar6 = 0x14;" (assignment_expression "iVar6 = 0x14" (identifier "iVar6") (= "=") (number_literal "0x14")) (; ";")) (expression_statement "pbVar13 = local_48;" (assignment_expression "pbVar13 = local_48" (identifier "pbVar13") (= "=") (identifier "local_48")) (; ";")) (expression_statement "pbVar16 = (byte *)"XDM-AUTHORIZATION-1";" (assignment_expression "pbVar16 = (byte *)"XDM-AUTHORIZATION-1"" (identifier "pbVar16") (= "=") (cast_expression "(byte *)"XDM-AUTHORIZATION-1"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""XDM-AUTHORIZATION-1"" (" """) (string_content "XDM-AUTHORIZATION-1") (" """)))) (; ";")) (do_statement "do {\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      } while (bVar17);" (do "do") (compound_statement "{\n        if (iVar6 == 0) break;\n        iVar6 = iVar6 + -1;\n        bVar18 = *pbVar13 < *pbVar16;\n        bVar17 = *pbVar13 == *pbVar16;\n        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;\n        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar6 == 0) break;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar13 < *pbVar16;" (assignment_expression "bVar18 = *pbVar13 < *pbVar16" (identifier "bVar18") (= "=") (binary_expression "*pbVar13 < *pbVar16" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16")))) (; ";")) (expression_statement "bVar17 = *pbVar13 == *pbVar16;" (assignment_expression "bVar17 = *pbVar13 == *pbVar16" (identifier "bVar17") (= "=") (binary_expression "*pbVar13 == *pbVar16" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar16" (* "*") (identifier "pbVar16")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar21 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;" (assignment_expression "pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1" (identifier "pbVar16") (= "=") (binary_expression "pbVar16 + (uint)bVar21 * -2 + 1" (binary_expression "pbVar16 + (uint)bVar21 * -2" (identifier "pbVar16") (+ "+") (binary_expression "(uint)bVar21 * -2" (cast_expression "(uint)bVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (; ";")) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (if_statement "if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;" (if "if") (parenthesized_expression "((!bVar18 && !bVar17) != bVar18)" (( "(") (binary_expression "(!bVar18 && !bVar17) != bVar18" (parenthesized_expression "(!bVar18 && !bVar17)" (( "(") (binary_expression "!bVar18 && !bVar17" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar17" (! "!") (identifier "bVar17"))) () ")")) (!= "!=") (identifier "bVar18")) () ")")) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";"))) (} "}")))) (expression_statement "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;" (assignment_expression "uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff" (identifier "uVar2") (= "=") (binary_expression "(uVar2 & 0xff) << 8 | uVar3 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" (( "(") (binary_expression "uVar2 & 0xff" (identifier "uVar2") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")))) (; ";")) (expression_statement "piVar12 = local_30;" (assignment_expression "piVar12 = local_30" (identifier "piVar12") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (uVar2 == 6) {\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }\n    else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" (if "if") (parenthesized_expression "(uVar2 == 6)" (( "(") (binary_expression "uVar2 == 6" (identifier "uVar2") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;\n      iVar7 = 0x10;\n      iVar10 = memcmp(local_50,local_30,0x10);\n      if (iVar10 != 0) goto LAB_000a2851;\n    }" ({ "{") (if_statement "if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;" (if "if") (parenthesized_expression "(((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10))" (( "(") (binary_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||\n         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" (parenthesized_expression "((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2))" (( "(") (binary_expression "(*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)" (( "(") (comma_expression "iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2" (assignment_expression "iVar9 = FUN_0009abe0(param_1[5])" (identifier "iVar9") (= "=") (call_expression "FUN_0009abe0(param_1[5])" (identifier "FUN_0009abe0") (argument_list "(param_1[5])" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) () ")")))) (, ",") (binary_expression "iVar9 != 2" (identifier "iVar9") (!= "!=") (number_literal "2"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)" (( "(") (comma_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10" (assignment_expression "iVar9 = FUN_0009ac10(param_1[5],local_30,2,2)" (identifier "iVar9") (= "=") (call_expression "FUN_0009ac10(param_1[5],local_30,2,2)" (identifier "FUN_0009ac10") (argument_list "(param_1[5],local_30,2,2)" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_30") (, ",") (number_literal "2") (, ",") (number_literal "2") () ")")))) (, ",") (binary_expression "local_40[0] != 0x10" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0x10"))) () ")"))) () ")")) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";"))) (expression_statement "iVar7 = 0x10;" (assignment_expression "iVar7 = 0x10" (identifier "iVar7") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "iVar10 = memcmp(local_50,local_30,0x10);" (assignment_expression "iVar10 = memcmp(local_50,local_30,0x10)" (identifier "iVar10") (= "=") (call_expression "memcmp(local_50,local_30,0x10)" (identifier "memcmp") (argument_list "(local_50,local_30,0x10)" (( "(") (identifier "local_50") (, ",") (identifier "local_30") (, ",") (number_literal "0x10") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_000a2851;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";"))) (} "}")) (else_clause "else {\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" (else "else") (compound_statement "{\n      if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }\n      if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;\n    }" ({ "{") (if_statement "if (uVar2 == 0x100) {\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" (if "if") (parenthesized_expression "(uVar2 == 0x100)" (( "(") (binary_expression "uVar2 == 0x100" (identifier "uVar2") (== "==") (number_literal "0x100")) () ")")) (compound_statement "{\n        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }\n        goto LAB_000a2851;\n      }" ({ "{") (if_statement "if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" (if "if") (parenthesized_expression "(((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0))" (( "(") (binary_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&\n           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" (parenthesized_expression "((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0))" (( "(") (binary_expression "(bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)" (parenthesized_expression "(bVar20 || *param_1 != 0)" (( "(") (binary_expression "bVar20 || *param_1 != 0" (identifier "bVar20") (|| "||") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)" (( "(") (comma_expression "iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,(char *)local_50)" (identifier "iVar9") (= "=") (call_expression "strcmp(__s1,(char *)local_50)" (identifier "strcmp") (argument_list "(__s1,(char *)local_50)" (( "(") (identifier "__s1") (, ",") (cast_expression "(char *)local_50" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_50")) () ")")))) (, ",") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          param_1[8] = iVar6;\n          FUN_0002f010(param_1[9]);\n          pvVar8 = (void *)FUN_0002e780(local_34,1);\n          param_1[9] = (int)pvVar8;\n          memcpy(pvVar8,local_44,local_34);\n          param_1[10] = local_34;\n          goto LAB_000a28fb;\n        }" ({ "{") (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "FUN_0002f010(param_1[9]);" (call_expression "FUN_0002f010(param_1[9])" (identifier "FUN_0002f010") (argument_list "(param_1[9])" (( "(") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) () ")"))) (; ";")) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" (identifier "pvVar8") (= "=") (cast_expression "(void *)FUN_0002e780(local_34,1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e780(local_34,1)" (identifier "FUN_0002e780") (argument_list "(local_34,1)" (( "(") (identifier "local_34") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8"))) (; ";")) (expression_statement "memcpy(pvVar8,local_44,local_34);" (call_expression "memcpy(pvVar8,local_44,local_34)" (identifier "memcpy") (argument_list "(pvVar8,local_44,local_34)" (( "(") (identifier "pvVar8") (, ",") (identifier "local_44") (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "param_1[10] = local_34;" (assignment_expression "param_1[10] = local_34" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_34")) (; ";")) (goto_statement "goto LAB_000a28fb;" (goto "goto") (statement_identifier "LAB_000a28fb") (; ";")) (} "}"))) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";")) (} "}"))) (if_statement "if (((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))) goto LAB_000a2851;" (if "if") (parenthesized_expression "(((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))))" (( "(") (binary_expression "((uVar2 != 0) || (*param_1 != 0)) ||\n         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" (parenthesized_expression "((uVar2 != 0) || (*param_1 != 0))" (( "(") (binary_expression "(uVar2 != 0) || (*param_1 != 0)" (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))))" (( "(") (parenthesized_expression "(iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))))" (( "(") (comma_expression "iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (assignment_expression "iVar7 = FUN_0009abe0(param_1[5])" (identifier "iVar7") (= "=") (call_expression "FUN_0009abe0(param_1[5])" (identifier "FUN_0009abe0") (argument_list "(param_1[5])" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) () ")")))) (, ",") (binary_expression "iVar7 != 1 ||\n          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (binary_expression "iVar7 != 1" (identifier "iVar7") (!= "!=") (number_literal "1")) (|| "||") (parenthesized_expression "((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])))" (( "(") (parenthesized_expression "(iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0]))" (( "(") (comma_expression "iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (assignment_expression "iVar9 = iVar7" (identifier "iVar9") (= "=") (identifier "iVar7")) (, ",") (comma_expression "FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (call_expression "FUN_0009ac10(param_1[5],local_30,1,1)" (identifier "FUN_0009ac10") (argument_list "(param_1[5],local_30,1,1)" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_30") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")"))) (, ",") (binary_expression "local_40[0] != 4 ||\n           (*local_50 != local_30[0])" (binary_expression "local_40[0] != 4" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "4")) (|| "||") (parenthesized_expression "(*local_50 != local_30[0])" (( "(") (binary_expression "*local_50 != local_30[0]" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (!= "!=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) () ")"))))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";"))) (} "}")))) (expression_statement "param_1[8] = iVar6;" (assignment_expression "param_1[8] = iVar6" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);" (call_expression "FUN_0002f010(param_1[9],piVar12,iVar7,iVar9)" (identifier "FUN_0002f010") (argument_list "(param_1[9],piVar12,iVar7,iVar9)" (( "(") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (, ",") (identifier "piVar12") (, ",") (identifier "iVar7") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "__n = local_34;" (assignment_expression "__n = local_34" (identifier "__n") (= "=") (identifier "local_34")) (; ";")) (expression_statement "pvVar8 = (void *)FUN_0002e780(local_34,1);" (assignment_expression "pvVar8 = (void *)FUN_0002e780(local_34,1)" (identifier "pvVar8") (= "=") (cast_expression "(void *)FUN_0002e780(local_34,1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e780(local_34,1)" (identifier "FUN_0002e780") (argument_list "(local_34,1)" (( "(") (identifier "local_34") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "param_1[9] = (int)pvVar8;" (assignment_expression "param_1[9] = (int)pvVar8" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(int)pvVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar8"))) (; ";")) (expression_statement "memcpy(pvVar8,local_44,__n);" (call_expression "memcpy(pvVar8,local_44,__n)" (identifier "memcpy") (argument_list "(pvVar8,local_44,__n)" (( "(") (identifier "pvVar8") (, ",") (identifier "local_44") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "param_1[10] = __n;" (assignment_expression "param_1[10] = __n" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "__n")) (; ";")) (if_statement "if (bVar20) goto LAB_000a2851;" (if "if") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (goto_statement "goto LAB_000a2851;" (goto "goto") (statement_identifier "LAB_000a2851") (; ";"))) (labeled_statement "LAB_000a28fb:\n    fclose(__stream);" (statement_identifier "LAB_000a28fb") (: ":") (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" (identifier "fclose") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")"))) (; ";"))) (expression_statement "FUN_0002f0f0(piVar1,0x40004);" (call_expression "FUN_0002f0f0(piVar1,0x40004)" (identifier "FUN_0002f0f0") (argument_list "(piVar1,0x40004)" (( "(") (identifier "piVar1") (, ",") (number_literal "0x40004") () ")"))) (; ";")) (expression_statement "FUN_0002f010(piVar1);" (call_expression "FUN_0002f010(piVar1)" (identifier "FUN_0002f010") (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")"))) (; ";")) (expression_statement "FUN_0002f010(__s1);" (call_expression "FUN_0002f010(__s1)" (identifier "FUN_0002f010") (argument_list "(__s1)" (( "(") (identifier "__s1") () ")"))) (; ";")) (} "}"))) (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;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void function_1(type_1 *disp,char *authfilename)

{
  int var_35;
  type_2 *var_5;
  char *var_28;
  char *b;
  type_3 var_9;
  type_3 var_10;
  type_3 var_11;
  type_3 var_12;
  int var_3;
  int var_24;
  type_4 *puVar8;
  char *var_15;
  char *var_13;
  type_5 *var_19;
  char *var_16;
  char *var_14;
  type_5 *var_20;
  int var_1;
  bool var_21;
  bool var_22;
  bool bVar17;
  bool var_27;
  type_5 bVar19;
  int var_17;
  char *str [4];
  int len [4];
  char var_32 [4];
  
  bVar19 = 0;
  var_35 = *(int *)(var_1 + 0x14);
  var_27 = false;
  if (disp->unixdomain == 0) {
    var_3 = var_2(disp->addr);
    var_27 = var_3 != 0;
  }
  var_5 = var_4(authfilename,"rb");
  if (var_5 != (type_2 *)0x0) {
    var_28 = var_6();
    b = (char *)var_7(0x40004,1);
LAB_000a2851:
    do {
      do {
        var_9 = var_8(var_5);
        if ((var_9 == 0xffffffff) || (var_10 = var_8(var_5), var_10 == 0xffffffff))
        goto LAB_000a28fb;
        var_17 = 0;
        var_13 = b;
        do {
          var_11 = var_8(var_5);
          if (var_11 == 0xffffffff) goto LAB_000a28fb;
          len[var_17] = var_11 & 0xff;
          var_12 = var_8(var_5);
          if (var_12 == 0xffffffff) goto LAB_000a28fb;
          var_11 = (var_11 & 0xff) << 8 | var_12 & 0xff;
          len[var_17] = var_11;
          str[var_17] = var_13;
          if (var_11 != 0) {
            var_15 = var_13 + var_11;
            var_14 = var_13;
            do {
              var_3 = var_8(var_5);
              if (var_3 == -1) goto LAB_000a28fb;
              var_16 = var_14 + 1;
              *var_14 = (char)var_3;
              var_13 = var_15;
              var_14 = var_16;
            } while (var_15 != var_16);
          }
          var_17 = var_17 + 1;
          *var_13 = '\0';
          var_13 = var_13 + 1;
        } while (var_17 != 4);
        var_11 = disp->displaynum;
      } while ((int)var_11 < 0);
      var_12 = var_18(str[1],(char **)0x0,10);
      var_21 = var_11 < var_12;
      bVar17 = var_11 == var_12;
    } while (!bVar17);
    var_3 = 0x13;
    var_19 = (type_5 *)str[2];
    var_20 = (type_5 *)"MIT-MAGIC-COOKIE-1";
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_21 = *var_19 < *var_20;
      bVar17 = *var_19 == *var_20;
      var_19 = var_19 + (type_3)bVar19 * -2 + 1;
      var_20 = var_20 + (type_3)bVar19 * -2 + 1;
    } while (bVar17);
    var_22 = false;
    var_21 = (!var_21 && !bVar17) == var_21;
    if (var_21) {
      var_3 = 1;
    }
    else {
      var_3 = 0x14;
      var_19 = (type_5 *)str[2];
      var_20 = (type_5 *)"XDM-AUTHORIZATION-1";
      do {
        if (var_3 == 0) break;
        var_3 = var_3 + -1;
        var_22 = *var_19 < *var_20;
        var_21 = *var_19 == *var_20;
        var_19 = var_19 + (type_3)bVar19 * -2 + 1;
        var_20 = var_20 + (type_3)bVar19 * -2 + 1;
      } while (var_21);
      var_3 = 2;
      if ((!var_22 && !var_21) != var_22) goto LAB_000a2851;
    }
    var_9 = (var_9 & 0xff) << 8 | var_10 & 0xff;
    if (var_9 == 6) {
      if ((((disp->unixdomain != 0) || (var_24 = var_23(disp->addr), var_24 != 2)) ||
          (var_25(disp->addr,var_32), len[0] != 0x10)) ||
         (var_24 = var_26(str[0],var_32,0x10), var_24 != 0)) goto LAB_000a2851;
    }
    else {
      if (var_9 == 0x100) {
        if (((var_27 || disp->unixdomain != 0) && (var_28 != (char *)0x0)) &&
           (var_24 = var_29(var_28,str[0]), var_24 == 0)) {
          disp->localauthproto = var_3;
          var_30(disp->localauthdata);
          puVar8 = (type_4 *)var_7(len[3],1);
          disp->localauthdata = puVar8;
          var_31(puVar8,str[3],len[3]);
          disp->localauthdatalen = len[3];
          goto LAB_000a28fb;
        }
        goto LAB_000a2851;
      }
      if (((var_9 != 0) || (disp->unixdomain != 0)) ||
         ((var_24 = var_23(disp->addr), var_24 != 1 ||
          ((var_25(disp->addr,var_32), len[0] != 4 || (*(char (*) [4])str[0] != var_32))))))
      goto LAB_000a2851;
    }
    disp->localauthproto = var_3;
    var_30(disp->localauthdata);
    var_3 = len[3];
    puVar8 = (type_4 *)var_7(len[3],1);
    disp->localauthdata = puVar8;
    var_31(puVar8,str[3],var_3);
    disp->localauthdatalen = var_3;
    if (var_27) goto LAB_000a2851;
LAB_000a28fb:
    var_33(var_5);
    var_34(b,0x40004);
    var_30(b);
    var_30(var_28);
  }
  if (var_35 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_36();
  }
  return;
}


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

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

void MASKED(int *param_1,char *param_2)

{
  size_t __n;
  FILE *__stream;
  char *__s1;
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  void *pvVar8;
  int iVar9;
  int iVar10;
  int *piVar11;
  int *piVar12;
  byte *pbVar13;
  int *piVar14;
  int *piVar15;
  byte *pbVar16;
  int in_GS_OFFSET;
  bool bVar17;
  bool bVar18;
  bool bVar19;
  bool bVar20;
  byte bVar21;
  int local_84;
  int *local_50;
  char *local_4c;
  byte *local_48;
  void *local_44;
  uint local_40 [3];
  size_t local_34;
  int local_30 [4];
  int local_20;
  undefined4 uStack_14;
  
  bVar21 = 0;
  uStack_14 = 0xa27c9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  bVar20 = false;
  if (*param_1 == 0) {
    iVar6 = FUN_0009ab90(param_1[5]);
    bVar20 = iVar6 != 0;
  }
  __stream = fopen64(param_2,"rb");
  if (__stream != (FILE *)0x0) {
    __s1 = (char *)FUN_0009bd20();
    piVar1 = (int *)FUN_0002e780(0x40004,1);
LAB_000a2851:
    do {
      do {
        uVar2 = fgetc(__stream);
        if ((uVar2 == 0xffffffff) || (uVar3 = fgetc(__stream), uVar3 == 0xffffffff))
        goto LAB_000a28fb;
        local_84 = 0;
        piVar12 = piVar1;
        do {
          uVar4 = fgetc(__stream);
          if (uVar4 == 0xffffffff) goto LAB_000a28fb;
          local_40[local_84] = uVar4 & 0xff;
          uVar5 = fgetc(__stream);
          if (uVar5 == 0xffffffff) goto LAB_000a28fb;
          uVar4 = (uVar4 & 0xff) << 8 | uVar5 & 0xff;
          local_40[local_84] = uVar4;
          (&local_50)[local_84] = piVar12;
          if (uVar4 != 0) {
            piVar11 = (int *)((int)piVar12 + uVar4);
            piVar15 = piVar12;
            do {
              iVar6 = fgetc(__stream);
              if (iVar6 == -1) goto LAB_000a28fb;
              piVar14 = (int *)((int)piVar15 + 1);
              *(char *)piVar15 = (char)iVar6;
              piVar12 = piVar11;
              piVar15 = piVar14;
            } while (piVar11 != piVar14);
          }
          local_84 = local_84 + 1;
          *(undefined1 *)piVar12 = 0;
          piVar12 = (int *)((int)piVar12 + 1);
        } while (local_84 != 4);
        uVar4 = param_1[2];
      } while ((int)uVar4 < 0);
      uVar5 = strtol(local_4c,(char **)0x0,10);
      bVar17 = uVar4 < uVar5;
      bVar19 = uVar4 == uVar5;
    } while (!bVar19);
    iVar6 = 0x13;
    pbVar13 = local_48;
    pbVar16 = (byte *)"MIT-MAGIC-COOKIE-1";
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar17 = *pbVar13 < *pbVar16;
      bVar19 = *pbVar13 == *pbVar16;
      pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;
      pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;
    } while (bVar19);
    bVar18 = false;
    bVar17 = (!bVar17 && !bVar19) == bVar17;
    if (bVar17) {
      iVar6 = 1;
    }
    else {
      iVar6 = 0x14;
      pbVar13 = local_48;
      pbVar16 = (byte *)"XDM-AUTHORIZATION-1";
      do {
        if (iVar6 == 0) break;
        iVar6 = iVar6 + -1;
        bVar18 = *pbVar13 < *pbVar16;
        bVar17 = *pbVar13 == *pbVar16;
        pbVar13 = pbVar13 + (uint)bVar21 * -2 + 1;
        pbVar16 = pbVar16 + (uint)bVar21 * -2 + 1;
      } while (bVar17);
      iVar6 = 2;
      if ((!bVar18 && !bVar17) != bVar18) goto LAB_000a2851;
    }
    uVar2 = (uVar2 & 0xff) << 8 | uVar3 & 0xff;
    piVar12 = local_30;
    if (uVar2 == 6) {
      if (((*param_1 != 0) || (iVar9 = FUN_0009abe0(param_1[5]), iVar9 != 2)) ||
         (iVar9 = FUN_0009ac10(param_1[5],local_30,2,2), local_40[0] != 0x10)) goto LAB_000a2851;
      iVar7 = 0x10;
      iVar10 = memcmp(local_50,local_30,0x10);
      if (iVar10 != 0) goto LAB_000a2851;
    }
    else {
      if (uVar2 == 0x100) {
        if (((bVar20 || *param_1 != 0) && (__s1 != (char *)0x0)) &&
           (iVar9 = strcmp(__s1,(char *)local_50), iVar9 == 0)) {
          param_1[8] = iVar6;
          FUN_0002f010(param_1[9]);
          pvVar8 = (void *)FUN_0002e780(local_34,1);
          param_1[9] = (int)pvVar8;
          memcpy(pvVar8,local_44,local_34);
          param_1[10] = local_34;
          goto LAB_000a28fb;
        }
        goto LAB_000a2851;
      }
      if (((uVar2 != 0) || (*param_1 != 0)) ||
         ((iVar7 = FUN_0009abe0(param_1[5]), iVar7 != 1 ||
          ((iVar9 = iVar7, FUN_0009ac10(param_1[5],local_30,1,1), local_40[0] != 4 ||
           (*local_50 != local_30[0])))))) goto LAB_000a2851;
    }
    param_1[8] = iVar6;
    FUN_0002f010(param_1[9],piVar12,iVar7,iVar9);
    __n = local_34;
    pvVar8 = (void *)FUN_0002e780(local_34,1);
    param_1[9] = (int)pvVar8;
    memcpy(pvVar8,local_44,__n);
    param_1[10] = __n;
    if (bVar20) goto LAB_000a2851;
LAB_000a28fb:
    fclose(__stream);
    FUN_0002f0f0(piVar1,0x40004);
    FUN_0002f010(piVar1);
    FUN_0002f010(__s1);
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000a39d0();
  }
  return;
}

