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

int __regparm3 walIndexTryHdr(Wal *pWal,int *pChanged)

{
  int iVar1;
  u32 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  u32 uVar6;
  uint uVar7;
  int in_GS_OFFSET;
  WalIndexHdr h1;
  WalIndexHdr h2;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  puVar2 = *pWal->apWiData;
  h1.iVersion = *puVar2;
  h1.unused = puVar2[1];
  h1.iChange = puVar2[2];
  h1._12_4_ = puVar2[3];
  h1.mxFrame = puVar2[4];
  h1.nPage = puVar2[5];
  h1.aFrameCksum[0] = puVar2[6];
  h1.aFrameCksum[1] = puVar2[7];
  h1.aSalt[0] = puVar2[8];
  h1.aSalt[1] = puVar2[9];
  h1.aCksum[0] = puVar2[10];
  h1.aCksum[1] = puVar2[0xb];
  if (pWal->exclusiveMode != '\x02') {
    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);
  }
  h2.iVersion = puVar2[0xc];
  h2.aCksum[1] = puVar2[0x17];
  h2.unused = puVar2[0xd];
  h2.iChange = puVar2[0xe];
  h2._12_4_ = puVar2[0xf];
  h2.mxFrame = puVar2[0x10];
  h2.nPage = puVar2[0x11];
  h2.aFrameCksum[0] = puVar2[0x12];
  h2.aFrameCksum[1] = puVar2[0x13];
  h2.aSalt[0] = puVar2[0x14];
  h2.aSalt[1] = puVar2[0x15];
  h2.aCksum[0] = puVar2[0x16];
  iVar3 = memcmp(&h1,&h2,0x30);
  iVar4 = 1;
  if ((((iVar3 == 0) && (h1.isInit != '\0')) &&
      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,
      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,
      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,
      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,
      h1.aCksum[0] == uVar6)) &&
     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&
      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))) {
    *pChanged = 1;
    iVar4 = 0;
    (pWal->hdr).iVersion = h1.iVersion;
    (pWal->hdr).unused = h1.unused;
    (pWal->hdr).iChange = h1.iChange;
    (pWal->hdr).isInit = h1.isInit;
    (pWal->hdr).bigEndCksum = h1.bigEndCksum;
    (pWal->hdr).szPage = h1.szPage;
    (pWal->hdr).mxFrame = h1.mxFrame;
    (pWal->hdr).nPage = h1.nPage;
    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];
    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];
    (pWal->hdr).aSalt[0] = h1.aSalt[0];
    (pWal->hdr).aSalt[1] = h1.aSalt[1];
    (pWal->hdr).aCksum[0] = h1.aCksum[0];
    (pWal->hdr).aCksum[1] = h1.aCksum[1];
    uVar7 = (uint)(pWal->hdr).szPage;
    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar4;
}



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

int __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_GS_OFFSET;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  int local_70;
  int local_6c;
  int local_68;
  int local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x4a35d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  piVar1 = (int *)**(int **)(param_1 + 0x20);
  local_80 = *piVar1;
  local_7c = piVar1[1];
  local_78 = piVar1[2];
  local_74 = piVar1[3];
  local_70 = piVar1[4];
  local_6c = piVar1[5];
  local_68 = piVar1[6];
  local_64 = piVar1[7];
  local_60 = piVar1[8];
  local_5c = piVar1[9];
  local_58 = piVar1[10];
  local_54 = piVar1[0xb];
  if (*(char *)(param_1 + 0x2b) != '\x02') {
    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));
  }
  local_50 = piVar1[0xc];
  local_24 = piVar1[0x17];
  local_4c = piVar1[0xd];
  local_48 = piVar1[0xe];
  local_44 = piVar1[0xf];
  local_40 = piVar1[0x10];
  local_3c = piVar1[0x11];
  local_38 = piVar1[0x12];
  local_34 = piVar1[0x13];
  local_30 = piVar1[0x14];
  local_2c = piVar1[0x15];
  local_28 = piVar1[0x16];
  iVar2 = memcmp(&local_80,&local_50,0x30);
  iVar3 = 1;
  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&
      (iVar4 = local_80 + local_78 + local_7c + local_80,
      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,
      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,
      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&
     ((local_54 == iVar2 + local_5c + iVar4 &&
      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {
    *param_2 = 1;
    iVar3 = 0;
    *(int *)(param_1 + 0x34) = local_80;
    *(int *)(param_1 + 0x38) = local_7c;
    *(int *)(param_1 + 0x3c) = local_78;
    *(int *)(param_1 + 0x40) = local_74;
    *(int *)(param_1 + 0x44) = local_70;
    *(int *)(param_1 + 0x48) = local_6c;
    *(int *)(param_1 + 0x4c) = local_68;
    *(int *)(param_1 + 0x50) = local_64;
    *(int *)(param_1 + 0x54) = local_60;
    *(int *)(param_1 + 0x58) = local_5c;
    *(int *)(param_1 + 0x5c) = local_58;
    *(int *)(param_1 + 0x60) = local_54;
    *(uint *)(param_1 + 0x24) =
         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return iVar3;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
MOV EDI,EAX
PUSH ESI
PUSH EBX
CALL 0x000172e0
ADD EBX,0x170acb
SUB ESP,0x8c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x7c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EDI + 0x20]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESI + 0x14]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESI + 0x18]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESI + 0x20]
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [ESI + 0x24]
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [ESP + 0x48],EAX
CMP byte ptr [EDI + 0x2b],0x2
JZ 0x0004a3e2
MOV EAX,dword ptr [EDI + 0x4]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x3c]
ADD ESP,0x10
MOV ECX,dword ptr [ESI + 0x30]
MOV EAX,dword ptr [ESI + 0x5c]
LEA EDX,[ESP + 0x4c]
SUB ESP,0x4
MOV dword ptr [ESP + 0x50],ECX
MOV ECX,dword ptr [ESI + 0x34]
MOV dword ptr [ESP + 0x7c],EAX
MOV dword ptr [ESP + 0x54],ECX
MOV ECX,dword ptr [ESI + 0x38]
MOV dword ptr [ESP + 0x58],ECX
MOV ECX,dword ptr [ESI + 0x3c]
MOV dword ptr [ESP + 0x5c],ECX
MOV ECX,dword ptr [ESI + 0x40]
MOV dword ptr [ESP + 0x60],ECX
MOV ECX,dword ptr [ESI + 0x44]
MOV dword ptr [ESP + 0x64],ECX
MOV ECX,dword ptr [ESI + 0x48]
MOV dword ptr [ESP + 0x68],ECX
MOV ECX,dword ptr [ESI + 0x4c]
MOV dword ptr [ESP + 0x6c],ECX
MOV ECX,dword ptr [ESI + 0x50]
MOV dword ptr [ESP + 0x70],ECX
MOV ECX,dword ptr [ESI + 0x54]
MOV dword ptr [ESP + 0x74],ECX
MOV ECX,dword ptr [ESI + 0x58]
MOV dword ptr [ESP + 0x78],ECX
PUSH 0x30
PUSH EDX
LEA ESI,[ESP + 0x28]
PUSH ESI
CALL 0x000151a0
ADD ESP,0x10
MOV ECX,0x1
TEST EAX,EAX
JNZ 0x0004a4a8
CMP byte ptr [ESP + 0x28],0x0
JZ 0x0004a4a8
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x20]
ADD EAX,EDX
ADD EDX,dword ptr [ESP + 0x24]
ADD EDX,EAX
ADD EAX,dword ptr [ESP + 0x28]
ADD EAX,EDX
ADD EDX,dword ptr [ESP + 0x2c]
ADD EDX,EAX
ADD EAX,dword ptr [ESP + 0x30]
ADD EAX,EDX
ADD EDX,dword ptr [ESP + 0x34]
ADD EDX,EAX
ADD EAX,dword ptr [ESP + 0x38]
ADD EAX,EDX
ADD EDX,dword ptr [ESP + 0x3c]
ADD EDX,EAX
ADD EAX,dword ptr [ESP + 0x40]
ADD EAX,EDX
CMP dword ptr [ESP + 0x44],EDX
JNZ 0x0004a4a8
CMP dword ptr [ESP + 0x48],EAX
JZ 0x0004a4d0
LEA ESI,[ESI]
NOP
MOV EBX,dword ptr [ESP + 0x7c]
XOR EBX,dword ptr GS:[0x14]
MOV EAX,ECX
JNZ 0x0004a55e
ADD ESP,0x8c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EDX,[EDI + 0x34]
PUSH 0x30
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x000151a0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
MOV ECX,EAX
JZ 0x0004a4a8
MOV EAX,dword ptr [ESI]
MOV dword ptr [EBP],0x1
XOR ECX,ECX
MOV dword ptr [EDI + 0x34],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [EDX + 0xc],EAX
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,dword ptr [ESI + 0x14]
MOV dword ptr [EDX + 0x14],EAX
MOV EAX,dword ptr [ESI + 0x18]
MOV dword ptr [EDX + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [EDX + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x20]
MOV dword ptr [EDX + 0x20],EAX
MOV EAX,dword ptr [ESI + 0x24]
MOV dword ptr [EDX + 0x24],EAX
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [EDX + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [EDX + 0x2c],EAX
MOVZX EDX,word ptr [EDI + 0x42]
MOV EAX,EDX
AND EDX,0xfe00
SHL EAX,0x10
AND EAX,0x10000
OR EAX,EDX
MOV dword ptr [EDI + 0x24],EAX
JMP 0x0004a4a8
CALL 0x00153870
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return iVar3;\n}\n\n" comment (function_definition "int __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004a350(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return iVar3;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4a35d;" (assignment_expression "uStack_14 = 0x4a35d" 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 "piVar1 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = (int *)**(int **)(param_1 + 0x20)" identifier = (cast_expression "(int *)**(int **)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(param_1 + 0x20)" * (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "local_80 = *piVar1;" (assignment_expression "local_80 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "local_7c = piVar1[1];" (assignment_expression "local_7c = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "local_78 = piVar1[2];" (assignment_expression "local_78 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) (expression_statement "local_74 = piVar1[3];" (assignment_expression "local_74 = piVar1[3]" identifier = (subscript_expression "piVar1[3]" identifier [ number_literal ])) ;) (expression_statement "local_70 = piVar1[4];" (assignment_expression "local_70 = piVar1[4]" identifier = (subscript_expression "piVar1[4]" identifier [ number_literal ])) ;) (expression_statement "local_6c = piVar1[5];" (assignment_expression "local_6c = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (expression_statement "local_68 = piVar1[6];" (assignment_expression "local_68 = piVar1[6]" identifier = (subscript_expression "piVar1[6]" identifier [ number_literal ])) ;) (expression_statement "local_64 = piVar1[7];" (assignment_expression "local_64 = piVar1[7]" identifier = (subscript_expression "piVar1[7]" identifier [ number_literal ])) ;) (expression_statement "local_60 = piVar1[8];" (assignment_expression "local_60 = piVar1[8]" identifier = (subscript_expression "piVar1[8]" identifier [ number_literal ])) ;) (expression_statement "local_5c = piVar1[9];" (assignment_expression "local_5c = piVar1[9]" identifier = (subscript_expression "piVar1[9]" identifier [ number_literal ])) ;) (expression_statement "local_58 = piVar1[10];" (assignment_expression "local_58 = piVar1[10]" identifier = (subscript_expression "piVar1[10]" identifier [ number_literal ])) ;) (expression_statement "local_54 = piVar1[0xb];" (assignment_expression "local_54 = piVar1[0xb]" identifier = (subscript_expression "piVar1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x2b) != '\x02')" ( (binary_expression "*(char *)(param_1 + 0x2b) != '\x02'" (pointer_expression "*(char *)(param_1 + 0x2b)" * (cast_expression "(char *)(param_1 + 0x2b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" { (expression_statement "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));" (call_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 0x3c)" * (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 0x3c)" * (cast_expression "(code **)(**(int **)(param_1 + 4) + 0x3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 4) + 0x3c)" ( (binary_expression "**(int **)(param_1 + 4) + 0x3c" (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4))" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })) (expression_statement "local_50 = piVar1[0xc];" (assignment_expression "local_50 = piVar1[0xc]" identifier = (subscript_expression "piVar1[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar1[0x17];" (assignment_expression "local_24 = piVar1[0x17]" identifier = (subscript_expression "piVar1[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_4c = piVar1[0xd];" (assignment_expression "local_4c = piVar1[0xd]" identifier = (subscript_expression "piVar1[0xd]" identifier [ number_literal ])) ;) (expression_statement "local_48 = piVar1[0xe];" (assignment_expression "local_48 = piVar1[0xe]" identifier = (subscript_expression "piVar1[0xe]" identifier [ number_literal ])) ;) (expression_statement "local_44 = piVar1[0xf];" (assignment_expression "local_44 = piVar1[0xf]" identifier = (subscript_expression "piVar1[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_40 = piVar1[0x10];" (assignment_expression "local_40 = piVar1[0x10]" identifier = (subscript_expression "piVar1[0x10]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar1[0x11];" (assignment_expression "local_3c = piVar1[0x11]" identifier = (subscript_expression "piVar1[0x11]" identifier [ number_literal ])) ;) (expression_statement "local_38 = piVar1[0x12];" (assignment_expression "local_38 = piVar1[0x12]" identifier = (subscript_expression "piVar1[0x12]" identifier [ number_literal ])) ;) (expression_statement "local_34 = piVar1[0x13];" (assignment_expression "local_34 = piVar1[0x13]" identifier = (subscript_expression "piVar1[0x13]" identifier [ number_literal ])) ;) (expression_statement "local_30 = piVar1[0x14];" (assignment_expression "local_30 = piVar1[0x14]" identifier = (subscript_expression "piVar1[0x14]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar1[0x15];" (assignment_expression "local_2c = piVar1[0x15]" identifier = (subscript_expression "piVar1[0x15]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar1[0x16];" (assignment_expression "local_28 = piVar1[0x16]" identifier = (subscript_expression "piVar1[0x16]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = memcmp(&local_80,&local_50,0x30);" (assignment_expression "iVar2 = memcmp(&local_80,&local_50,0x30)" identifier = (call_expression "memcmp(&local_80,&local_50,0x30)" identifier (argument_list "(&local_80,&local_50,0x30)" ( (pointer_expression "&local_80" & identifier) , (pointer_expression "&local_50" & identifier) , number_literal )))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (if_statement "if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" if (parenthesized_expression "((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))))" ( (binary_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" (parenthesized_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4))" ( (binary_expression "((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" (parenthesized_expression "((iVar2 == 0) && ((char)local_74 != '\0'))" ( (binary_expression "(iVar2 == 0) && ((char)local_74 != '\0')" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((char)local_74 != '\0')" ( (binary_expression "(char)local_74 != '\0'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" ( (comma_expression "iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = local_80 + local_78 + local_7c + local_80" identifier = (binary_expression "local_80 + local_78 + local_7c + local_80" (binary_expression "local_80 + local_78 + local_7c" (binary_expression "local_80 + local_78" identifier + identifier) + identifier) + identifier)) , (comma_expression "iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = local_7c + local_80 + local_74 + iVar4" identifier = (binary_expression "local_7c + local_80 + local_74 + iVar4" (binary_expression "local_7c + local_80 + local_74" (binary_expression "local_7c + local_80" identifier + identifier) + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_70 + iVar2" identifier = (binary_expression "iVar4 + local_70 + iVar2" (binary_expression "iVar4 + local_70" identifier + identifier) + identifier)) , (comma_expression "iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_6c + iVar4" identifier = (binary_expression "iVar2 + local_6c + iVar4" (binary_expression "iVar2 + local_6c" identifier + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_68 + iVar2" identifier = (binary_expression "iVar4 + local_68 + iVar2" (binary_expression "iVar4 + local_68" identifier + identifier) + identifier)) , (comma_expression "iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_64 + iVar4" identifier = (binary_expression "iVar2 + local_64 + iVar4" (binary_expression "iVar2 + local_64" identifier + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_60 + iVar2" identifier = (binary_expression "iVar4 + local_60 + iVar2" (binary_expression "iVar4 + local_60" identifier + identifier) + identifier)) , (binary_expression "local_58 == iVar4" identifier == identifier)))))))) ))) )) && (parenthesized_expression "((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" ( (parenthesized_expression "(local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))" ( (binary_expression "local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" (binary_expression "local_54 == iVar2 + local_5c + iVar4" identifier == (binary_expression "iVar2 + local_5c + iVar4" (binary_expression "iVar2 + local_5c" identifier + identifier) + identifier)) && (parenthesized_expression "(iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" ( (comma_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30)" identifier = (call_expression "memcmp((void *)(param_1 + 0x34),&local_80,0x30)" identifier (argument_list "((void *)(param_1 + 0x34),&local_80,0x30)" ( (cast_expression "(void *)(param_1 + 0x34)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))) , (pointer_expression "&local_80" & identifier) , number_literal )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" { (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x34) = local_80;" (assignment_expression "*(int *)(param_1 + 0x34) = local_80" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = local_7c;" (assignment_expression "*(int *)(param_1 + 0x38) = local_7c" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x3c) = local_78;" (assignment_expression "*(int *)(param_1 + 0x3c) = local_78" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_74;" (assignment_expression "*(int *)(param_1 + 0x40) = local_74" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x44) = local_70;" (assignment_expression "*(int *)(param_1 + 0x44) = local_70" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = local_6c;" (assignment_expression "*(int *)(param_1 + 0x48) = local_6c" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x4c) = local_68;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_68" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x50) = local_64;" (assignment_expression "*(int *)(param_1 + 0x50) = local_64" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x54) = local_60;" (assignment_expression "*(int *)(param_1 + 0x54) = local_60" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x58) = local_5c;" (assignment_expression "*(int *)(param_1 + 0x58) = local_5c" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x5c) = local_58;" (assignment_expression "*(int *)(param_1 + 0x5c) = local_58" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x60) = local_54;" (assignment_expression "*(int *)(param_1 + 0x60) = local_54" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;" (assignment_expression "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10" (parenthesized_expression "(*(ushort *)(param_1 + 0x42) & 1)" ( (binary_expression "*(ushort *)(param_1 + 0x42) & 1" (pointer_expression "*(ushort *)(param_1 + 0x42)" * (cast_expression "(ushort *)(param_1 + 0x42)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x42)" ( (binary_expression "param_1 + 0x42" identifier + number_literal) )))) & number_literal) )) << number_literal) | (binary_expression "*(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(ushort *)(param_1 + 0x42)" * (cast_expression "(ushort *)(param_1 + 0x42)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x42)" ( (binary_expression "param_1 + 0x42" identifier + number_literal) )))) & number_literal))) ;) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\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_00153870();\n  }" { comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 walIndexTryHdr(Wal *pWal,int *pChanged)\n\n{\n  int iVar1;\n  u32 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  u32 uVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  WalIndexHdr h1;\n  WalIndexHdr h2;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar2 = *pWal->apWiData;\n  h1.iVersion = *puVar2;\n  h1.unused = puVar2[1];\n  h1.iChange = puVar2[2];\n  h1._12_4_ = puVar2[3];\n  h1.mxFrame = puVar2[4];\n  h1.nPage = puVar2[5];\n  h1.aFrameCksum[0] = puVar2[6];\n  h1.aFrameCksum[1] = puVar2[7];\n  h1.aSalt[0] = puVar2[8];\n  h1.aSalt[1] = puVar2[9];\n  h1.aCksum[0] = puVar2[10];\n  h1.aCksum[1] = puVar2[0xb];\n  if (pWal->exclusiveMode != '\x02') {\n    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);\n  }\n  h2.iVersion = puVar2[0xc];\n  h2.aCksum[1] = puVar2[0x17];\n  h2.unused = puVar2[0xd];\n  h2.iChange = puVar2[0xe];\n  h2._12_4_ = puVar2[0xf];\n  h2.mxFrame = puVar2[0x10];\n  h2.nPage = puVar2[0x11];\n  h2.aFrameCksum[0] = puVar2[0x12];\n  h2.aFrameCksum[1] = puVar2[0x13];\n  h2.aSalt[0] = puVar2[0x14];\n  h2.aSalt[1] = puVar2[0x15];\n  h2.aCksum[0] = puVar2[0x16];\n  iVar3 = memcmp(&h1,&h2,0x30);\n  iVar4 = 1;\n  if ((((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))) {\n    *pChanged = 1;\n    iVar4 = 0;\n    (pWal->hdr).iVersion = h1.iVersion;\n    (pWal->hdr).unused = h1.unused;\n    (pWal->hdr).iChange = h1.iChange;\n    (pWal->hdr).isInit = h1.isInit;\n    (pWal->hdr).bigEndCksum = h1.bigEndCksum;\n    (pWal->hdr).szPage = h1.szPage;\n    (pWal->hdr).mxFrame = h1.mxFrame;\n    (pWal->hdr).nPage = h1.nPage;\n    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];\n    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];\n    (pWal->hdr).aSalt[0] = h1.aSalt[0];\n    (pWal->hdr).aSalt[1] = h1.aSalt[1];\n    (pWal->hdr).aCksum[0] = h1.aCksum[0];\n    (pWal->hdr).aCksum[1] = h1.aCksum[1];\n    uVar7 = (uint)(pWal->hdr).szPage;\n    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}\n\n" comment (function_definition "int __regparm3 walIndexTryHdr(Wal *pWal,int *pChanged)\n\n{\n  int iVar1;\n  u32 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  u32 uVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  WalIndexHdr h1;\n  WalIndexHdr h2;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar2 = *pWal->apWiData;\n  h1.iVersion = *puVar2;\n  h1.unused = puVar2[1];\n  h1.iChange = puVar2[2];\n  h1._12_4_ = puVar2[3];\n  h1.mxFrame = puVar2[4];\n  h1.nPage = puVar2[5];\n  h1.aFrameCksum[0] = puVar2[6];\n  h1.aFrameCksum[1] = puVar2[7];\n  h1.aSalt[0] = puVar2[8];\n  h1.aSalt[1] = puVar2[9];\n  h1.aCksum[0] = puVar2[10];\n  h1.aCksum[1] = puVar2[0xb];\n  if (pWal->exclusiveMode != '\x02') {\n    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);\n  }\n  h2.iVersion = puVar2[0xc];\n  h2.aCksum[1] = puVar2[0x17];\n  h2.unused = puVar2[0xd];\n  h2.iChange = puVar2[0xe];\n  h2._12_4_ = puVar2[0xf];\n  h2.mxFrame = puVar2[0x10];\n  h2.nPage = puVar2[0x11];\n  h2.aFrameCksum[0] = puVar2[0x12];\n  h2.aFrameCksum[1] = puVar2[0x13];\n  h2.aSalt[0] = puVar2[0x14];\n  h2.aSalt[1] = puVar2[0x15];\n  h2.aCksum[0] = puVar2[0x16];\n  iVar3 = memcmp(&h1,&h2,0x30);\n  iVar4 = 1;\n  if ((((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))) {\n    *pChanged = 1;\n    iVar4 = 0;\n    (pWal->hdr).iVersion = h1.iVersion;\n    (pWal->hdr).unused = h1.unused;\n    (pWal->hdr).iChange = h1.iChange;\n    (pWal->hdr).isInit = h1.isInit;\n    (pWal->hdr).bigEndCksum = h1.bigEndCksum;\n    (pWal->hdr).szPage = h1.szPage;\n    (pWal->hdr).mxFrame = h1.mxFrame;\n    (pWal->hdr).nPage = h1.nPage;\n    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];\n    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];\n    (pWal->hdr).aSalt[0] = h1.aSalt[0];\n    (pWal->hdr).aSalt[1] = h1.aSalt[1];\n    (pWal->hdr).aCksum[0] = h1.aCksum[0];\n    (pWal->hdr).aCksum[1] = h1.aCksum[1];\n    uVar7 = (uint)(pWal->hdr).szPage;\n    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "walIndexTryHdr(Wal *pWal,int *pChanged)" identifier (parameter_list "(Wal *pWal,int *pChanged)" ( (parameter_declaration "Wal *pWal" type_identifier (pointer_declarator "*pWal" * identifier)) , (parameter_declaration "int *pChanged" primitive_type (pointer_declarator "*pChanged" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  u32 *puVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  u32 uVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  WalIndexHdr h1;\n  WalIndexHdr h2;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar2 = *pWal->apWiData;\n  h1.iVersion = *puVar2;\n  h1.unused = puVar2[1];\n  h1.iChange = puVar2[2];\n  h1._12_4_ = puVar2[3];\n  h1.mxFrame = puVar2[4];\n  h1.nPage = puVar2[5];\n  h1.aFrameCksum[0] = puVar2[6];\n  h1.aFrameCksum[1] = puVar2[7];\n  h1.aSalt[0] = puVar2[8];\n  h1.aSalt[1] = puVar2[9];\n  h1.aCksum[0] = puVar2[10];\n  h1.aCksum[1] = puVar2[0xb];\n  if (pWal->exclusiveMode != '\x02') {\n    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);\n  }\n  h2.iVersion = puVar2[0xc];\n  h2.aCksum[1] = puVar2[0x17];\n  h2.unused = puVar2[0xd];\n  h2.iChange = puVar2[0xe];\n  h2._12_4_ = puVar2[0xf];\n  h2.mxFrame = puVar2[0x10];\n  h2.nPage = puVar2[0x11];\n  h2.aFrameCksum[0] = puVar2[0x12];\n  h2.aFrameCksum[1] = puVar2[0x13];\n  h2.aSalt[0] = puVar2[0x14];\n  h2.aSalt[1] = puVar2[0x15];\n  h2.aCksum[0] = puVar2[0x16];\n  iVar3 = memcmp(&h1,&h2,0x30);\n  iVar4 = 1;\n  if ((((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))) {\n    *pChanged = 1;\n    iVar4 = 0;\n    (pWal->hdr).iVersion = h1.iVersion;\n    (pWal->hdr).unused = h1.unused;\n    (pWal->hdr).iChange = h1.iChange;\n    (pWal->hdr).isInit = h1.isInit;\n    (pWal->hdr).bigEndCksum = h1.bigEndCksum;\n    (pWal->hdr).szPage = h1.szPage;\n    (pWal->hdr).mxFrame = h1.mxFrame;\n    (pWal->hdr).nPage = h1.nPage;\n    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];\n    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];\n    (pWal->hdr).aSalt[0] = h1.aSalt[0];\n    (pWal->hdr).aSalt[1] = h1.aSalt[1];\n    (pWal->hdr).aCksum[0] = h1.aCksum[0];\n    (pWal->hdr).aCksum[1] = h1.aCksum[1];\n    uVar7 = (uint)(pWal->hdr).szPage;\n    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "u32 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "u32 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "WalIndexHdr h1;" type_identifier identifier ;) (declaration "WalIndexHdr h2;" type_identifier identifier ;) (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 "puVar2 = *pWal->apWiData;" (assignment_expression "puVar2 = *pWal->apWiData" identifier = (pointer_expression "*pWal->apWiData" * (field_expression "pWal->apWiData" identifier -> field_identifier))) ;) (expression_statement "h1.iVersion = *puVar2;" (assignment_expression "h1.iVersion = *puVar2" (field_expression "h1.iVersion" identifier . field_identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "h1.unused = puVar2[1];" (assignment_expression "h1.unused = puVar2[1]" (field_expression "h1.unused" identifier . field_identifier) = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "h1.iChange = puVar2[2];" (assignment_expression "h1.iChange = puVar2[2]" (field_expression "h1.iChange" identifier . field_identifier) = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "h1._12_4_ = puVar2[3];" (assignment_expression "h1._12_4_ = puVar2[3]" (field_expression "h1._12_4_" identifier . field_identifier) = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "h1.mxFrame = puVar2[4];" (assignment_expression "h1.mxFrame = puVar2[4]" (field_expression "h1.mxFrame" identifier . field_identifier) = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "h1.nPage = puVar2[5];" (assignment_expression "h1.nPage = puVar2[5]" (field_expression "h1.nPage" identifier . field_identifier) = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "h1.aFrameCksum[0] = puVar2[6];" (assignment_expression "h1.aFrameCksum[0] = puVar2[6]" (subscript_expression "h1.aFrameCksum[0]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[6]" identifier [ number_literal ])) ;) (expression_statement "h1.aFrameCksum[1] = puVar2[7];" (assignment_expression "h1.aFrameCksum[1] = puVar2[7]" (subscript_expression "h1.aFrameCksum[1]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[7]" identifier [ number_literal ])) ;) (expression_statement "h1.aSalt[0] = puVar2[8];" (assignment_expression "h1.aSalt[0] = puVar2[8]" (subscript_expression "h1.aSalt[0]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[8]" identifier [ number_literal ])) ;) (expression_statement "h1.aSalt[1] = puVar2[9];" (assignment_expression "h1.aSalt[1] = puVar2[9]" (subscript_expression "h1.aSalt[1]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[9]" identifier [ number_literal ])) ;) (expression_statement "h1.aCksum[0] = puVar2[10];" (assignment_expression "h1.aCksum[0] = puVar2[10]" (subscript_expression "h1.aCksum[0]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[10]" identifier [ number_literal ])) ;) (expression_statement "h1.aCksum[1] = puVar2[0xb];" (assignment_expression "h1.aCksum[1] = puVar2[0xb]" (subscript_expression "h1.aCksum[1]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0xb]" identifier [ number_literal ])) ;) (if_statement "if (pWal->exclusiveMode != '\x02') {\n    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);\n  }" if (parenthesized_expression "(pWal->exclusiveMode != '\x02')" ( (binary_expression "pWal->exclusiveMode != '\x02'" (field_expression "pWal->exclusiveMode" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);\n  }" { (expression_statement "(*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);" (call_expression "(*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd)" (parenthesized_expression "(*pWal->pDbFd->pMethods->xShmBarrier)" ( (pointer_expression "*pWal->pDbFd->pMethods->xShmBarrier" * (field_expression "pWal->pDbFd->pMethods->xShmBarrier" (field_expression "pWal->pDbFd->pMethods" (field_expression "pWal->pDbFd" identifier -> field_identifier) -> field_identifier) -> field_identifier)) )) (argument_list "(pWal->pDbFd)" ( (field_expression "pWal->pDbFd" identifier -> field_identifier) ))) ;) })) (expression_statement "h2.iVersion = puVar2[0xc];" (assignment_expression "h2.iVersion = puVar2[0xc]" (field_expression "h2.iVersion" identifier . field_identifier) = (subscript_expression "puVar2[0xc]" identifier [ number_literal ])) ;) (expression_statement "h2.aCksum[1] = puVar2[0x17];" (assignment_expression "h2.aCksum[1] = puVar2[0x17]" (subscript_expression "h2.aCksum[1]" (field_expression "h2.aCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x17]" identifier [ number_literal ])) ;) (expression_statement "h2.unused = puVar2[0xd];" (assignment_expression "h2.unused = puVar2[0xd]" (field_expression "h2.unused" identifier . field_identifier) = (subscript_expression "puVar2[0xd]" identifier [ number_literal ])) ;) (expression_statement "h2.iChange = puVar2[0xe];" (assignment_expression "h2.iChange = puVar2[0xe]" (field_expression "h2.iChange" identifier . field_identifier) = (subscript_expression "puVar2[0xe]" identifier [ number_literal ])) ;) (expression_statement "h2._12_4_ = puVar2[0xf];" (assignment_expression "h2._12_4_ = puVar2[0xf]" (field_expression "h2._12_4_" identifier . field_identifier) = (subscript_expression "puVar2[0xf]" identifier [ number_literal ])) ;) (expression_statement "h2.mxFrame = puVar2[0x10];" (assignment_expression "h2.mxFrame = puVar2[0x10]" (field_expression "h2.mxFrame" identifier . field_identifier) = (subscript_expression "puVar2[0x10]" identifier [ number_literal ])) ;) (expression_statement "h2.nPage = puVar2[0x11];" (assignment_expression "h2.nPage = puVar2[0x11]" (field_expression "h2.nPage" identifier . field_identifier) = (subscript_expression "puVar2[0x11]" identifier [ number_literal ])) ;) (expression_statement "h2.aFrameCksum[0] = puVar2[0x12];" (assignment_expression "h2.aFrameCksum[0] = puVar2[0x12]" (subscript_expression "h2.aFrameCksum[0]" (field_expression "h2.aFrameCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x12]" identifier [ number_literal ])) ;) (expression_statement "h2.aFrameCksum[1] = puVar2[0x13];" (assignment_expression "h2.aFrameCksum[1] = puVar2[0x13]" (subscript_expression "h2.aFrameCksum[1]" (field_expression "h2.aFrameCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x13]" identifier [ number_literal ])) ;) (expression_statement "h2.aSalt[0] = puVar2[0x14];" (assignment_expression "h2.aSalt[0] = puVar2[0x14]" (subscript_expression "h2.aSalt[0]" (field_expression "h2.aSalt" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x14]" identifier [ number_literal ])) ;) (expression_statement "h2.aSalt[1] = puVar2[0x15];" (assignment_expression "h2.aSalt[1] = puVar2[0x15]" (subscript_expression "h2.aSalt[1]" (field_expression "h2.aSalt" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x15]" identifier [ number_literal ])) ;) (expression_statement "h2.aCksum[0] = puVar2[0x16];" (assignment_expression "h2.aCksum[0] = puVar2[0x16]" (subscript_expression "h2.aCksum[0]" (field_expression "h2.aCksum" identifier . field_identifier) [ number_literal ]) = (subscript_expression "puVar2[0x16]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = memcmp(&h1,&h2,0x30);" (assignment_expression "iVar3 = memcmp(&h1,&h2,0x30)" identifier = (call_expression "memcmp(&h1,&h2,0x30)" identifier (argument_list "(&h1,&h2,0x30)" ( (pointer_expression "&h1" & identifier) , (pointer_expression "&h2" & identifier) , number_literal )))) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (if_statement "if ((((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))) {\n    *pChanged = 1;\n    iVar4 = 0;\n    (pWal->hdr).iVersion = h1.iVersion;\n    (pWal->hdr).unused = h1.unused;\n    (pWal->hdr).iChange = h1.iChange;\n    (pWal->hdr).isInit = h1.isInit;\n    (pWal->hdr).bigEndCksum = h1.bigEndCksum;\n    (pWal->hdr).szPage = h1.szPage;\n    (pWal->hdr).mxFrame = h1.mxFrame;\n    (pWal->hdr).nPage = h1.nPage;\n    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];\n    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];\n    (pWal->hdr).aSalt[0] = h1.aSalt[0];\n    (pWal->hdr).aSalt[1] = h1.aSalt[1];\n    (pWal->hdr).aCksum[0] = h1.aCksum[0];\n    (pWal->hdr).aCksum[1] = h1.aCksum[1];\n    uVar7 = (uint)(pWal->hdr).szPage;\n    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;\n  }" if (parenthesized_expression "((((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0))))" ( (binary_expression "(((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)) &&\n     ((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))" (parenthesized_expression "(((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6))" ( (binary_expression "((iVar3 == 0) && (h1.isInit != '\0')) &&\n      (iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)" (parenthesized_expression "((iVar3 == 0) && (h1.isInit != '\0'))" ( (binary_expression "(iVar3 == 0) && (h1.isInit != '\0')" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "(h1.isInit != '\0')" ( (binary_expression "h1.isInit != '\0'" (field_expression "h1.isInit" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6)" ( (comma_expression "iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,\n      iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar5 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion" identifier = (binary_expression "h1.iVersion + h1.iChange + h1.unused + h1.iVersion" (binary_expression "h1.iVersion + h1.iChange + h1.unused" (binary_expression "h1.iVersion + h1.iChange" (field_expression "h1.iVersion" identifier . field_identifier) + (field_expression "h1.iChange" identifier . field_identifier)) + (field_expression "h1.unused" identifier . field_identifier)) + (field_expression "h1.iVersion" identifier . field_identifier))) , (comma_expression "iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5, iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar3 = h1.unused + h1.iVersion + h1._12_4_ + iVar5" identifier = (binary_expression "h1.unused + h1.iVersion + h1._12_4_ + iVar5" (binary_expression "h1.unused + h1.iVersion + h1._12_4_" (binary_expression "h1.unused + h1.iVersion" (field_expression "h1.unused" identifier . field_identifier) + (field_expression "h1.iVersion" identifier . field_identifier)) + (field_expression "h1._12_4_" identifier . field_identifier)) + identifier)) , (comma_expression "iVar5 = iVar5 + h1.mxFrame + iVar3,\n      iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar5 = iVar5 + h1.mxFrame + iVar3" identifier = (binary_expression "iVar5 + h1.mxFrame + iVar3" (binary_expression "iVar5 + h1.mxFrame" identifier + (field_expression "h1.mxFrame" identifier . field_identifier)) + identifier)) , (comma_expression "iVar3 = iVar3 + h1.nPage + iVar5, iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar3 = iVar3 + h1.nPage + iVar5" identifier = (binary_expression "iVar3 + h1.nPage + iVar5" (binary_expression "iVar3 + h1.nPage" identifier + (field_expression "h1.nPage" identifier . field_identifier)) + identifier)) , (comma_expression "iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3,\n      iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar5 = iVar5 + h1.aFrameCksum[0] + iVar3" identifier = (binary_expression "iVar5 + h1.aFrameCksum[0] + iVar3" (binary_expression "iVar5 + h1.aFrameCksum[0]" identifier + (subscript_expression "h1.aFrameCksum[0]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ])) + identifier)) , (comma_expression "iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5, uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "iVar3 = iVar3 + h1.aFrameCksum[1] + iVar5" identifier = (binary_expression "iVar3 + h1.aFrameCksum[1] + iVar5" (binary_expression "iVar3 + h1.aFrameCksum[1]" identifier + (subscript_expression "h1.aFrameCksum[1]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ])) + identifier)) , (comma_expression "uVar6 = iVar5 + h1.aSalt[0] + iVar3,\n      h1.aCksum[0] == uVar6" (assignment_expression "uVar6 = iVar5 + h1.aSalt[0] + iVar3" identifier = (binary_expression "iVar5 + h1.aSalt[0] + iVar3" (binary_expression "iVar5 + h1.aSalt[0]" identifier + (subscript_expression "h1.aSalt[0]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ])) + identifier)) , (binary_expression "h1.aCksum[0] == uVar6" (subscript_expression "h1.aCksum[0]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ]) == identifier)))))))) ))) )) && (parenthesized_expression "((h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)))" ( (parenthesized_expression "(h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0))" ( (binary_expression "h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6 &&\n      (iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)" (binary_expression "h1.aCksum[1] == iVar3 + h1.aSalt[1] + uVar6" (subscript_expression "h1.aCksum[1]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ]) == (binary_expression "iVar3 + h1.aSalt[1] + uVar6" (binary_expression "iVar3 + h1.aSalt[1]" identifier + (subscript_expression "h1.aSalt[1]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ])) + identifier)) && (parenthesized_expression "(iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0)" ( (comma_expression "iVar4 = memcmp(&pWal->hdr,&h1,0x30), iVar4 != 0" (assignment_expression "iVar4 = memcmp(&pWal->hdr,&h1,0x30)" identifier = (call_expression "memcmp(&pWal->hdr,&h1,0x30)" identifier (argument_list "(&pWal->hdr,&h1,0x30)" ( (pointer_expression "&pWal->hdr" & (field_expression "pWal->hdr" identifier -> field_identifier)) , (pointer_expression "&h1" & identifier) , number_literal )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n    *pChanged = 1;\n    iVar4 = 0;\n    (pWal->hdr).iVersion = h1.iVersion;\n    (pWal->hdr).unused = h1.unused;\n    (pWal->hdr).iChange = h1.iChange;\n    (pWal->hdr).isInit = h1.isInit;\n    (pWal->hdr).bigEndCksum = h1.bigEndCksum;\n    (pWal->hdr).szPage = h1.szPage;\n    (pWal->hdr).mxFrame = h1.mxFrame;\n    (pWal->hdr).nPage = h1.nPage;\n    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];\n    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];\n    (pWal->hdr).aSalt[0] = h1.aSalt[0];\n    (pWal->hdr).aSalt[1] = h1.aSalt[1];\n    (pWal->hdr).aCksum[0] = h1.aCksum[0];\n    (pWal->hdr).aCksum[1] = h1.aCksum[1];\n    uVar7 = (uint)(pWal->hdr).szPage;\n    pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;\n  }" { (expression_statement "*pChanged = 1;" (assignment_expression "*pChanged = 1" (pointer_expression "*pChanged" * identifier) = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "(pWal->hdr).iVersion = h1.iVersion;" (assignment_expression "(pWal->hdr).iVersion = h1.iVersion" (field_expression "(pWal->hdr).iVersion" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.iVersion" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).unused = h1.unused;" (assignment_expression "(pWal->hdr).unused = h1.unused" (field_expression "(pWal->hdr).unused" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.unused" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).iChange = h1.iChange;" (assignment_expression "(pWal->hdr).iChange = h1.iChange" (field_expression "(pWal->hdr).iChange" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.iChange" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).isInit = h1.isInit;" (assignment_expression "(pWal->hdr).isInit = h1.isInit" (field_expression "(pWal->hdr).isInit" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.isInit" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).bigEndCksum = h1.bigEndCksum;" (assignment_expression "(pWal->hdr).bigEndCksum = h1.bigEndCksum" (field_expression "(pWal->hdr).bigEndCksum" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.bigEndCksum" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).szPage = h1.szPage;" (assignment_expression "(pWal->hdr).szPage = h1.szPage" (field_expression "(pWal->hdr).szPage" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.szPage" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).mxFrame = h1.mxFrame;" (assignment_expression "(pWal->hdr).mxFrame = h1.mxFrame" (field_expression "(pWal->hdr).mxFrame" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.mxFrame" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).nPage = h1.nPage;" (assignment_expression "(pWal->hdr).nPage = h1.nPage" (field_expression "(pWal->hdr).nPage" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) = (field_expression "h1.nPage" identifier . field_identifier)) ;) (expression_statement "(pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];" (assignment_expression "(pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0]" (subscript_expression "(pWal->hdr).aFrameCksum[0]" (field_expression "(pWal->hdr).aFrameCksum" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aFrameCksum[0]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "(pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];" (assignment_expression "(pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1]" (subscript_expression "(pWal->hdr).aFrameCksum[1]" (field_expression "(pWal->hdr).aFrameCksum" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aFrameCksum[1]" (field_expression "h1.aFrameCksum" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "(pWal->hdr).aSalt[0] = h1.aSalt[0];" (assignment_expression "(pWal->hdr).aSalt[0] = h1.aSalt[0]" (subscript_expression "(pWal->hdr).aSalt[0]" (field_expression "(pWal->hdr).aSalt" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aSalt[0]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "(pWal->hdr).aSalt[1] = h1.aSalt[1];" (assignment_expression "(pWal->hdr).aSalt[1] = h1.aSalt[1]" (subscript_expression "(pWal->hdr).aSalt[1]" (field_expression "(pWal->hdr).aSalt" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aSalt[1]" (field_expression "h1.aSalt" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "(pWal->hdr).aCksum[0] = h1.aCksum[0];" (assignment_expression "(pWal->hdr).aCksum[0] = h1.aCksum[0]" (subscript_expression "(pWal->hdr).aCksum[0]" (field_expression "(pWal->hdr).aCksum" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aCksum[0]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "(pWal->hdr).aCksum[1] = h1.aCksum[1];" (assignment_expression "(pWal->hdr).aCksum[1] = h1.aCksum[1]" (subscript_expression "(pWal->hdr).aCksum[1]" (field_expression "(pWal->hdr).aCksum" (parenthesized_expression "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (subscript_expression "h1.aCksum[1]" (field_expression "h1.aCksum" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "uVar7 = (uint)(pWal->hdr).szPage;" (assignment_expression "uVar7 = (uint)(pWal->hdr).szPage" identifier = (field_expression "(uint)(pWal->hdr).szPage" (call_expression "(uint)(pWal->hdr)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pWal->hdr)" ( (field_expression "pWal->hdr" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00;" (assignment_expression "pWal->szPage = (uVar7 & 1) << 0x10 | uVar7 & 0xfe00" (field_expression "pWal->szPage" identifier -> field_identifier) = (binary_expression "(uVar7 & 1) << 0x10 | uVar7 & 0xfe00" (binary_expression "(uVar7 & 1) << 0x10" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) << number_literal) | (binary_expression "uVar7 & 0xfe00" identifier & number_literal))) ;) })) (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 iVar4;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return iVar3;\n}\n\n" (function_definition "int __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004a350(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return iVar3;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x4a35d;" (assignment_expression "uStack_14 = 0x4a35d" 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 "piVar1 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = (int *)**(int **)(param_1 + 0x20)" identifier = (cast_expression "(int *)**(int **)(param_1 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(param_1 + 0x20)" * (pointer_expression "*(int **)(param_1 + 0x20)" * (cast_expression "(int **)(param_1 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))))) ;) (expression_statement "local_80 = *piVar1;" (assignment_expression "local_80 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "local_7c = piVar1[1];" (assignment_expression "local_7c = piVar1[1]" identifier = (subscript_expression "piVar1[1]" identifier [ number_literal ])) ;) (expression_statement "local_78 = piVar1[2];" (assignment_expression "local_78 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) (expression_statement "local_74 = piVar1[3];" (assignment_expression "local_74 = piVar1[3]" identifier = (subscript_expression "piVar1[3]" identifier [ number_literal ])) ;) (expression_statement "local_70 = piVar1[4];" (assignment_expression "local_70 = piVar1[4]" identifier = (subscript_expression "piVar1[4]" identifier [ number_literal ])) ;) (expression_statement "local_6c = piVar1[5];" (assignment_expression "local_6c = piVar1[5]" identifier = (subscript_expression "piVar1[5]" identifier [ number_literal ])) ;) (expression_statement "local_68 = piVar1[6];" (assignment_expression "local_68 = piVar1[6]" identifier = (subscript_expression "piVar1[6]" identifier [ number_literal ])) ;) (expression_statement "local_64 = piVar1[7];" (assignment_expression "local_64 = piVar1[7]" identifier = (subscript_expression "piVar1[7]" identifier [ number_literal ])) ;) (expression_statement "local_60 = piVar1[8];" (assignment_expression "local_60 = piVar1[8]" identifier = (subscript_expression "piVar1[8]" identifier [ number_literal ])) ;) (expression_statement "local_5c = piVar1[9];" (assignment_expression "local_5c = piVar1[9]" identifier = (subscript_expression "piVar1[9]" identifier [ number_literal ])) ;) (expression_statement "local_58 = piVar1[10];" (assignment_expression "local_58 = piVar1[10]" identifier = (subscript_expression "piVar1[10]" identifier [ number_literal ])) ;) (expression_statement "local_54 = piVar1[0xb];" (assignment_expression "local_54 = piVar1[0xb]" identifier = (subscript_expression "piVar1[0xb]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x2b) != '\x02')" ( (binary_expression "*(char *)(param_1 + 0x2b) != '\x02'" (pointer_expression "*(char *)(param_1 + 0x2b)" * (cast_expression "(char *)(param_1 + 0x2b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" { (expression_statement "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));" (call_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 0x3c)" * (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 0x3c)" * (cast_expression "(code **)(**(int **)(param_1 + 4) + 0x3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 4) + 0x3c)" ( (binary_expression "**(int **)(param_1 + 4) + 0x3c" (pointer_expression "**(int **)(param_1 + 4)" * (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 4))" ( (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })) (expression_statement "local_50 = piVar1[0xc];" (assignment_expression "local_50 = piVar1[0xc]" identifier = (subscript_expression "piVar1[0xc]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar1[0x17];" (assignment_expression "local_24 = piVar1[0x17]" identifier = (subscript_expression "piVar1[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_4c = piVar1[0xd];" (assignment_expression "local_4c = piVar1[0xd]" identifier = (subscript_expression "piVar1[0xd]" identifier [ number_literal ])) ;) (expression_statement "local_48 = piVar1[0xe];" (assignment_expression "local_48 = piVar1[0xe]" identifier = (subscript_expression "piVar1[0xe]" identifier [ number_literal ])) ;) (expression_statement "local_44 = piVar1[0xf];" (assignment_expression "local_44 = piVar1[0xf]" identifier = (subscript_expression "piVar1[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_40 = piVar1[0x10];" (assignment_expression "local_40 = piVar1[0x10]" identifier = (subscript_expression "piVar1[0x10]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar1[0x11];" (assignment_expression "local_3c = piVar1[0x11]" identifier = (subscript_expression "piVar1[0x11]" identifier [ number_literal ])) ;) (expression_statement "local_38 = piVar1[0x12];" (assignment_expression "local_38 = piVar1[0x12]" identifier = (subscript_expression "piVar1[0x12]" identifier [ number_literal ])) ;) (expression_statement "local_34 = piVar1[0x13];" (assignment_expression "local_34 = piVar1[0x13]" identifier = (subscript_expression "piVar1[0x13]" identifier [ number_literal ])) ;) (expression_statement "local_30 = piVar1[0x14];" (assignment_expression "local_30 = piVar1[0x14]" identifier = (subscript_expression "piVar1[0x14]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar1[0x15];" (assignment_expression "local_2c = piVar1[0x15]" identifier = (subscript_expression "piVar1[0x15]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar1[0x16];" (assignment_expression "local_28 = piVar1[0x16]" identifier = (subscript_expression "piVar1[0x16]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = memcmp(&local_80,&local_50,0x30);" (assignment_expression "iVar2 = memcmp(&local_80,&local_50,0x30)" identifier = (call_expression "memcmp(&local_80,&local_50,0x30)" identifier (argument_list "(&local_80,&local_50,0x30)" ( (pointer_expression "&local_80" & identifier) , (pointer_expression "&local_50" & identifier) , number_literal )))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (if_statement "if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" if (parenthesized_expression "((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))))" ( (binary_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" (parenthesized_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4))" ( (binary_expression "((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" (parenthesized_expression "((iVar2 == 0) && ((char)local_74 != '\0'))" ( (binary_expression "(iVar2 == 0) && ((char)local_74 != '\0')" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) && (parenthesized_expression "((char)local_74 != '\0')" ( (binary_expression "(char)local_74 != '\0'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" ( (comma_expression "iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = local_80 + local_78 + local_7c + local_80" identifier = (binary_expression "local_80 + local_78 + local_7c + local_80" (binary_expression "local_80 + local_78 + local_7c" (binary_expression "local_80 + local_78" identifier + identifier) + identifier) + identifier)) , (comma_expression "iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = local_7c + local_80 + local_74 + iVar4" identifier = (binary_expression "local_7c + local_80 + local_74 + iVar4" (binary_expression "local_7c + local_80 + local_74" (binary_expression "local_7c + local_80" identifier + identifier) + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_70 + iVar2" identifier = (binary_expression "iVar4 + local_70 + iVar2" (binary_expression "iVar4 + local_70" identifier + identifier) + identifier)) , (comma_expression "iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_6c + iVar4" identifier = (binary_expression "iVar2 + local_6c + iVar4" (binary_expression "iVar2 + local_6c" identifier + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_68 + iVar2" identifier = (binary_expression "iVar4 + local_68 + iVar2" (binary_expression "iVar4 + local_68" identifier + identifier) + identifier)) , (comma_expression "iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_64 + iVar4" identifier = (binary_expression "iVar2 + local_64 + iVar4" (binary_expression "iVar2 + local_64" identifier + identifier) + identifier)) , (comma_expression "iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_60 + iVar2" identifier = (binary_expression "iVar4 + local_60 + iVar2" (binary_expression "iVar4 + local_60" identifier + identifier) + identifier)) , (binary_expression "local_58 == iVar4" identifier == identifier)))))))) ))) )) && (parenthesized_expression "((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" ( (parenthesized_expression "(local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))" ( (binary_expression "local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" (binary_expression "local_54 == iVar2 + local_5c + iVar4" identifier == (binary_expression "iVar2 + local_5c + iVar4" (binary_expression "iVar2 + local_5c" identifier + identifier) + identifier)) && (parenthesized_expression "(iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" ( (comma_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30)" identifier = (call_expression "memcmp((void *)(param_1 + 0x34),&local_80,0x30)" identifier (argument_list "((void *)(param_1 + 0x34),&local_80,0x30)" ( (cast_expression "(void *)(param_1 + 0x34)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))) , (pointer_expression "&local_80" & identifier) , number_literal )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" { (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x34) = local_80;" (assignment_expression "*(int *)(param_1 + 0x34) = local_80" (pointer_expression "*(int *)(param_1 + 0x34)" * (cast_expression "(int *)(param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x38) = local_7c;" (assignment_expression "*(int *)(param_1 + 0x38) = local_7c" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x3c) = local_78;" (assignment_expression "*(int *)(param_1 + 0x3c) = local_78" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_74;" (assignment_expression "*(int *)(param_1 + 0x40) = local_74" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x44) = local_70;" (assignment_expression "*(int *)(param_1 + 0x44) = local_70" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = local_6c;" (assignment_expression "*(int *)(param_1 + 0x48) = local_6c" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x4c) = local_68;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_68" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x50) = local_64;" (assignment_expression "*(int *)(param_1 + 0x50) = local_64" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x54) = local_60;" (assignment_expression "*(int *)(param_1 + 0x54) = local_60" (pointer_expression "*(int *)(param_1 + 0x54)" * (cast_expression "(int *)(param_1 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x58) = local_5c;" (assignment_expression "*(int *)(param_1 + 0x58) = local_5c" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x5c) = local_58;" (assignment_expression "*(int *)(param_1 + 0x5c) = local_58" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x60) = local_54;" (assignment_expression "*(int *)(param_1 + 0x60) = local_54" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;" (assignment_expression "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10" (parenthesized_expression "(*(ushort *)(param_1 + 0x42) & 1)" ( (binary_expression "*(ushort *)(param_1 + 0x42) & 1" (pointer_expression "*(ushort *)(param_1 + 0x42)" * (cast_expression "(ushort *)(param_1 + 0x42)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x42)" ( (binary_expression "param_1 + 0x42" identifier + number_literal) )))) & number_literal) )) << number_literal) | (binary_expression "*(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(ushort *)(param_1 + 0x42)" * (cast_expression "(ushort *)(param_1 + 0x42)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x42)" ( (binary_expression "param_1 + 0x42" identifier + number_literal) )))) & number_literal))) ;) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\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_00153870();\n  }" { (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) , (binary_expression IDENT == IDENT)))))))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (binary_expression (binary_expression IDENT + IDENT) + IDENT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (pointer_expression & IDENT) , LIT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) << LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_0004a350(int param_1,undefined4 *param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return iVar3;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0004a350(int param_1,undefined4 *param_2)" (identifier "FUN_0004a350") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  int local_80;\n  int local_7c;\n  int local_78;\n  int local_74;\n  int local_70;\n  int local_6c;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x4a35d;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  piVar1 = (int *)**(int **)(param_1 + 0x20);\n  local_80 = *piVar1;\n  local_7c = piVar1[1];\n  local_78 = piVar1[2];\n  local_74 = piVar1[3];\n  local_70 = piVar1[4];\n  local_6c = piVar1[5];\n  local_68 = piVar1[6];\n  local_64 = piVar1[7];\n  local_60 = piVar1[8];\n  local_5c = piVar1[9];\n  local_58 = piVar1[10];\n  local_54 = piVar1[0xb];\n  if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }\n  local_50 = piVar1[0xc];\n  local_24 = piVar1[0x17];\n  local_4c = piVar1[0xd];\n  local_48 = piVar1[0xe];\n  local_44 = piVar1[0xf];\n  local_40 = piVar1[0x10];\n  local_3c = piVar1[0x11];\n  local_38 = piVar1[0x12];\n  local_34 = piVar1[0x13];\n  local_30 = piVar1[0x14];\n  local_2c = piVar1[0x15];\n  local_28 = piVar1[0x16];\n  iVar2 = memcmp(&local_80,&local_50,0x30);\n  iVar3 = 1;\n  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return iVar3;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x4a35d;" (assignment_expression "uStack_14 = 0x4a35d" (identifier "uStack_14") (= "=") (number_literal "0x4a35d")) (; ";")) (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 "piVar1 = (int *)**(int **)(param_1 + 0x20);" (assignment_expression "piVar1 = (int *)**(int **)(param_1 + 0x20)" (identifier "piVar1") (= "=") (cast_expression "(int *)**(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(param_1 + 0x20)" (* "*") (pointer_expression "*(int **)(param_1 + 0x20)" (* "*") (cast_expression "(int **)(param_1 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))))) (; ";")) (expression_statement "local_80 = *piVar1;" (assignment_expression "local_80 = *piVar1" (identifier "local_80") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "local_7c = piVar1[1];" (assignment_expression "local_7c = piVar1[1]" (identifier "local_7c") (= "=") (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_78 = piVar1[2];" (assignment_expression "local_78 = piVar1[2]" (identifier "local_78") (= "=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_74 = piVar1[3];" (assignment_expression "local_74 = piVar1[3]" (identifier "local_74") (= "=") (subscript_expression "piVar1[3]" (identifier "piVar1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_70 = piVar1[4];" (assignment_expression "local_70 = piVar1[4]" (identifier "local_70") (= "=") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_6c = piVar1[5];" (assignment_expression "local_6c = piVar1[5]" (identifier "local_6c") (= "=") (subscript_expression "piVar1[5]" (identifier "piVar1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_68 = piVar1[6];" (assignment_expression "local_68 = piVar1[6]" (identifier "local_68") (= "=") (subscript_expression "piVar1[6]" (identifier "piVar1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_64 = piVar1[7];" (assignment_expression "local_64 = piVar1[7]" (identifier "local_64") (= "=") (subscript_expression "piVar1[7]" (identifier "piVar1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_60 = piVar1[8];" (assignment_expression "local_60 = piVar1[8]" (identifier "local_60") (= "=") (subscript_expression "piVar1[8]" (identifier "piVar1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_5c = piVar1[9];" (assignment_expression "local_5c = piVar1[9]" (identifier "local_5c") (= "=") (subscript_expression "piVar1[9]" (identifier "piVar1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_58 = piVar1[10];" (assignment_expression "local_58 = piVar1[10]" (identifier "local_58") (= "=") (subscript_expression "piVar1[10]" (identifier "piVar1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "local_54 = piVar1[0xb];" (assignment_expression "local_54 = piVar1[0xb]" (identifier "local_54") (= "=") (subscript_expression "piVar1[0xb]" (identifier "piVar1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x2b) != '\x02') {\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x2b) != '\x02')" (( "(") (binary_expression "*(char *)(param_1 + 0x2b) != '\x02'" (pointer_expression "*(char *)(param_1 + 0x2b)" (* "*") (cast_expression "(char *)(param_1 + 0x2b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));\n  }" ({ "{") (expression_statement "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));" (call_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 4) + 0x3c))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 4) + 0x3c)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 4) + 0x3c)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 4) + 0x3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 4) + 0x3c)" (( "(") (binary_expression "**(int **)(param_1 + 4) + 0x3c" (pointer_expression "**(int **)(param_1 + 4)" (* "*") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "0x3c")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 4))" (( "(") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "local_50 = piVar1[0xc];" (assignment_expression "local_50 = piVar1[0xc]" (identifier "local_50") (= "=") (subscript_expression "piVar1[0xc]" (identifier "piVar1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "local_24 = piVar1[0x17];" (assignment_expression "local_24 = piVar1[0x17]" (identifier "local_24") (= "=") (subscript_expression "piVar1[0x17]" (identifier "piVar1") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "local_4c = piVar1[0xd];" (assignment_expression "local_4c = piVar1[0xd]" (identifier "local_4c") (= "=") (subscript_expression "piVar1[0xd]" (identifier "piVar1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "local_48 = piVar1[0xe];" (assignment_expression "local_48 = piVar1[0xe]" (identifier "local_48") (= "=") (subscript_expression "piVar1[0xe]" (identifier "piVar1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "local_44 = piVar1[0xf];" (assignment_expression "local_44 = piVar1[0xf]" (identifier "local_44") (= "=") (subscript_expression "piVar1[0xf]" (identifier "piVar1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "local_40 = piVar1[0x10];" (assignment_expression "local_40 = piVar1[0x10]" (identifier "local_40") (= "=") (subscript_expression "piVar1[0x10]" (identifier "piVar1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "local_3c = piVar1[0x11];" (assignment_expression "local_3c = piVar1[0x11]" (identifier "local_3c") (= "=") (subscript_expression "piVar1[0x11]" (identifier "piVar1") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (expression_statement "local_38 = piVar1[0x12];" (assignment_expression "local_38 = piVar1[0x12]" (identifier "local_38") (= "=") (subscript_expression "piVar1[0x12]" (identifier "piVar1") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "local_34 = piVar1[0x13];" (assignment_expression "local_34 = piVar1[0x13]" (identifier "local_34") (= "=") (subscript_expression "piVar1[0x13]" (identifier "piVar1") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "local_30 = piVar1[0x14];" (assignment_expression "local_30 = piVar1[0x14]" (identifier "local_30") (= "=") (subscript_expression "piVar1[0x14]" (identifier "piVar1") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "local_2c = piVar1[0x15];" (assignment_expression "local_2c = piVar1[0x15]" (identifier "local_2c") (= "=") (subscript_expression "piVar1[0x15]" (identifier "piVar1") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "local_28 = piVar1[0x16];" (assignment_expression "local_28 = piVar1[0x16]" (identifier "local_28") (= "=") (subscript_expression "piVar1[0x16]" (identifier "piVar1") ([ "[") (number_literal "0x16") (] "]"))) (; ";")) (expression_statement "iVar2 = memcmp(&local_80,&local_50,0x30);" (assignment_expression "iVar2 = memcmp(&local_80,&local_50,0x30)" (identifier "iVar2") (= "=") (call_expression "memcmp(&local_80,&local_50,0x30)" (identifier "memcmp") (argument_list "(&local_80,&local_50,0x30)" (( "(") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (number_literal "0x30") () ")")))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" (if "if") (parenthesized_expression "((((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))))" (( "(") (binary_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&\n     ((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" (parenthesized_expression "(((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4))" (( "(") (binary_expression "((iVar2 == 0) && ((char)local_74 != '\0')) &&\n      (iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" (parenthesized_expression "((iVar2 == 0) && ((char)local_74 != '\0'))" (( "(") (binary_expression "(iVar2 == 0) && ((char)local_74 != '\0')" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((char)local_74 != '\0')" (( "(") (binary_expression "(char)local_74 != '\0'" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)" (( "(") (comma_expression "iVar4 = local_80 + local_78 + local_7c + local_80,\n      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = local_80 + local_78 + local_7c + local_80" (identifier "iVar4") (= "=") (binary_expression "local_80 + local_78 + local_7c + local_80" (binary_expression "local_80 + local_78 + local_7c" (binary_expression "local_80 + local_78" (identifier "local_80") (+ "+") (identifier "local_78")) (+ "+") (identifier "local_7c")) (+ "+") (identifier "local_80"))) (, ",") (comma_expression "iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = local_7c + local_80 + local_74 + iVar4" (identifier "iVar2") (= "=") (binary_expression "local_7c + local_80 + local_74 + iVar4" (binary_expression "local_7c + local_80 + local_74" (binary_expression "local_7c + local_80" (identifier "local_7c") (+ "+") (identifier "local_80")) (+ "+") (identifier "local_74")) (+ "+") (identifier "iVar4"))) (, ",") (comma_expression "iVar4 = iVar4 + local_70 + iVar2,\n      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_70 + iVar2" (identifier "iVar4") (= "=") (binary_expression "iVar4 + local_70 + iVar2" (binary_expression "iVar4 + local_70" (identifier "iVar4") (+ "+") (identifier "local_70")) (+ "+") (identifier "iVar2"))) (, ",") (comma_expression "iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_6c + iVar4" (identifier "iVar2") (= "=") (binary_expression "iVar2 + local_6c + iVar4" (binary_expression "iVar2 + local_6c" (identifier "iVar2") (+ "+") (identifier "local_6c")) (+ "+") (identifier "iVar4"))) (, ",") (comma_expression "iVar4 = iVar4 + local_68 + iVar2,\n      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_68 + iVar2" (identifier "iVar4") (= "=") (binary_expression "iVar4 + local_68 + iVar2" (binary_expression "iVar4 + local_68" (identifier "iVar4") (+ "+") (identifier "local_68")) (+ "+") (identifier "iVar2"))) (, ",") (comma_expression "iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar2 = iVar2 + local_64 + iVar4" (identifier "iVar2") (= "=") (binary_expression "iVar2 + local_64 + iVar4" (binary_expression "iVar2 + local_64" (identifier "iVar2") (+ "+") (identifier "local_64")) (+ "+") (identifier "iVar4"))) (, ",") (comma_expression "iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4" (assignment_expression "iVar4 = iVar4 + local_60 + iVar2" (identifier "iVar4") (= "=") (binary_expression "iVar4 + local_60 + iVar2" (binary_expression "iVar4 + local_60" (identifier "iVar4") (+ "+") (identifier "local_60")) (+ "+") (identifier "iVar2"))) (, ",") (binary_expression "local_58 == iVar4" (identifier "local_58") (== "==") (identifier "iVar4"))))))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))" (( "(") (parenthesized_expression "(local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0))" (( "(") (binary_expression "local_54 == iVar2 + local_5c + iVar4 &&\n      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" (binary_expression "local_54 == iVar2 + local_5c + iVar4" (identifier "local_54") (== "==") (binary_expression "iVar2 + local_5c + iVar4" (binary_expression "iVar2 + local_5c" (identifier "iVar2") (+ "+") (identifier "local_5c")) (+ "+") (identifier "iVar4"))) (&& "&&") (parenthesized_expression "(iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)" (( "(") (comma_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30)" (identifier "iVar3") (= "=") (call_expression "memcmp((void *)(param_1 + 0x34),&local_80,0x30)" (identifier "memcmp") (argument_list "((void *)(param_1 + 0x34),&local_80,0x30)" (( "(") (cast_expression "(void *)(param_1 + 0x34)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))) (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "0x30") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    *param_2 = 1;\n    iVar3 = 0;\n    *(int *)(param_1 + 0x34) = local_80;\n    *(int *)(param_1 + 0x38) = local_7c;\n    *(int *)(param_1 + 0x3c) = local_78;\n    *(int *)(param_1 + 0x40) = local_74;\n    *(int *)(param_1 + 0x44) = local_70;\n    *(int *)(param_1 + 0x48) = local_6c;\n    *(int *)(param_1 + 0x4c) = local_68;\n    *(int *)(param_1 + 0x50) = local_64;\n    *(int *)(param_1 + 0x54) = local_60;\n    *(int *)(param_1 + 0x58) = local_5c;\n    *(int *)(param_1 + 0x5c) = local_58;\n    *(int *)(param_1 + 0x60) = local_54;\n    *(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;\n  }" ({ "{") (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x34) = local_80;" (assignment_expression "*(int *)(param_1 + 0x34) = local_80" (pointer_expression "*(int *)(param_1 + 0x34)" (* "*") (cast_expression "(int *)(param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "local_80")) (; ";")) (expression_statement "*(int *)(param_1 + 0x38) = local_7c;" (assignment_expression "*(int *)(param_1 + 0x38) = local_7c" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "local_7c")) (; ";")) (expression_statement "*(int *)(param_1 + 0x3c) = local_78;" (assignment_expression "*(int *)(param_1 + 0x3c) = local_78" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "local_78")) (; ";")) (expression_statement "*(int *)(param_1 + 0x40) = local_74;" (assignment_expression "*(int *)(param_1 + 0x40) = local_74" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_74")) (; ";")) (expression_statement "*(int *)(param_1 + 0x44) = local_70;" (assignment_expression "*(int *)(param_1 + 0x44) = local_70" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "local_70")) (; ";")) (expression_statement "*(int *)(param_1 + 0x48) = local_6c;" (assignment_expression "*(int *)(param_1 + 0x48) = local_6c" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "local_6c")) (; ";")) (expression_statement "*(int *)(param_1 + 0x4c) = local_68;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_68" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "local_68")) (; ";")) (expression_statement "*(int *)(param_1 + 0x50) = local_64;" (assignment_expression "*(int *)(param_1 + 0x50) = local_64" (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(int *)(param_1 + 0x54) = local_60;" (assignment_expression "*(int *)(param_1 + 0x54) = local_60" (pointer_expression "*(int *)(param_1 + 0x54)" (* "*") (cast_expression "(int *)(param_1 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(int *)(param_1 + 0x58) = local_5c;" (assignment_expression "*(int *)(param_1 + 0x58) = local_5c" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(int *)(param_1 + 0x5c) = local_58;" (assignment_expression "*(int *)(param_1 + 0x5c) = local_58" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (identifier "local_58")) (; ";")) (expression_statement "*(int *)(param_1 + 0x60) = local_54;" (assignment_expression "*(int *)(param_1 + 0x60) = local_54" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "local_54")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;" (assignment_expression "*(uint *)(param_1 + 0x24) =\n         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(uint *)(param_1 + 0x24)" (* "*") (cast_expression "(uint *)(param_1 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00" (binary_expression "(*(ushort *)(param_1 + 0x42) & 1) << 0x10" (parenthesized_expression "(*(ushort *)(param_1 + 0x42) & 1)" (( "(") (binary_expression "*(ushort *)(param_1 + 0x42) & 1" (pointer_expression "*(ushort *)(param_1 + 0x42)" (* "*") (cast_expression "(ushort *)(param_1 + 0x42)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x42)" (( "(") (binary_expression "param_1 + 0x42" (identifier "param_1") (+ "+") (number_literal "0x42")) () ")")))) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "*(ushort *)(param_1 + 0x42) & 0xfe00" (pointer_expression "*(ushort *)(param_1 + 0x42)" (* "*") (cast_expression "(ushort *)(param_1 + 0x42)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x42)" (( "(") (binary_expression "param_1 + 0x42" (identifier "param_1") (+ "+") (number_literal "0x42")) () ")")))) (& "&") (number_literal "0xfe00")))) (; ";")) (} "}"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\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_00153870();\n  }" ({ "{") (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

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

int __regparm3 function_1(type_1 *pWal,int *pChanged)

{
  int var_8;
  type_2 *puVar2;
  int var_3;
  int var_6;
  int var_4;
  type_2 var_5;
  type_3 var_7;
  int var_1;
  type_4 h1;
  type_4 h2;
  
  var_8 = *(int *)(var_1 + 0x14);
  puVar2 = *pWal->apWiData;
  h1.iVersion = *puVar2;
  h1.unused = puVar2[1];
  h1.iChange = puVar2[2];
  h1._12_4_ = puVar2[3];
  h1.mxFrame = puVar2[4];
  h1.nPage = puVar2[5];
  h1.aFrameCksum[0] = puVar2[6];
  h1.aFrameCksum[1] = puVar2[7];
  h1.aSalt[0] = puVar2[8];
  h1.aSalt[1] = puVar2[9];
  h1.aCksum[0] = puVar2[10];
  h1.aCksum[1] = puVar2[0xb];
  if (pWal->exclusiveMode != '\x02') {
    (*pWal->pDbFd->pMethods->xShmBarrier)(pWal->pDbFd);
  }
  h2.iVersion = puVar2[0xc];
  h2.aCksum[1] = puVar2[0x17];
  h2.unused = puVar2[0xd];
  h2.iChange = puVar2[0xe];
  h2._12_4_ = puVar2[0xf];
  h2.mxFrame = puVar2[0x10];
  h2.nPage = puVar2[0x11];
  h2.aFrameCksum[0] = puVar2[0x12];
  h2.aFrameCksum[1] = puVar2[0x13];
  h2.aSalt[0] = puVar2[0x14];
  h2.aSalt[1] = puVar2[0x15];
  h2.aCksum[0] = puVar2[0x16];
  var_3 = var_2(&h1,&h2,0x30);
  var_6 = 1;
  if ((((var_3 == 0) && (h1.isInit != '\0')) &&
      (var_4 = h1.iVersion + h1.iChange + h1.unused + h1.iVersion,
      var_3 = h1.unused + h1.iVersion + h1._12_4_ + var_4, var_4 = var_4 + h1.mxFrame + var_3,
      var_3 = var_3 + h1.nPage + var_4, var_4 = var_4 + h1.aFrameCksum[0] + var_3,
      var_3 = var_3 + h1.aFrameCksum[1] + var_4, var_5 = var_4 + h1.aSalt[0] + var_3,
      h1.aCksum[0] == var_5)) &&
     ((h1.aCksum[1] == var_3 + h1.aSalt[1] + var_5 &&
      (var_6 = var_2(&pWal->hdr,&h1,0x30), var_6 != 0)))) {
    *pChanged = 1;
    var_6 = 0;
    (pWal->hdr).iVersion = h1.iVersion;
    (pWal->hdr).unused = h1.unused;
    (pWal->hdr).iChange = h1.iChange;
    (pWal->hdr).isInit = h1.isInit;
    (pWal->hdr).bigEndCksum = h1.bigEndCksum;
    (pWal->hdr).szPage = h1.szPage;
    (pWal->hdr).mxFrame = h1.mxFrame;
    (pWal->hdr).nPage = h1.nPage;
    (pWal->hdr).aFrameCksum[0] = h1.aFrameCksum[0];
    (pWal->hdr).aFrameCksum[1] = h1.aFrameCksum[1];
    (pWal->hdr).aSalt[0] = h1.aSalt[0];
    (pWal->hdr).aSalt[1] = h1.aSalt[1];
    (pWal->hdr).aCksum[0] = h1.aCksum[0];
    (pWal->hdr).aCksum[1] = h1.aCksum[1];
    var_7 = (type_3)(pWal->hdr).szPage;
    pWal->szPage = (var_7 & 1) << 0x10 | var_7 & 0xfe00;
  }
  if (var_8 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_9();
  }
  return var_6;
}


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

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

int __regparm3 MASKED(int param_1,undefined4 *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_GS_OFFSET;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  int local_70;
  int local_6c;
  int local_68;
  int local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x4a35d;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  piVar1 = (int *)**(int **)(param_1 + 0x20);
  local_80 = *piVar1;
  local_7c = piVar1[1];
  local_78 = piVar1[2];
  local_74 = piVar1[3];
  local_70 = piVar1[4];
  local_6c = piVar1[5];
  local_68 = piVar1[6];
  local_64 = piVar1[7];
  local_60 = piVar1[8];
  local_5c = piVar1[9];
  local_58 = piVar1[10];
  local_54 = piVar1[0xb];
  if (*(char *)(param_1 + 0x2b) != '\x02') {
    (**(code **)(**(int **)(param_1 + 4) + 0x3c))(*(int **)(param_1 + 4));
  }
  local_50 = piVar1[0xc];
  local_24 = piVar1[0x17];
  local_4c = piVar1[0xd];
  local_48 = piVar1[0xe];
  local_44 = piVar1[0xf];
  local_40 = piVar1[0x10];
  local_3c = piVar1[0x11];
  local_38 = piVar1[0x12];
  local_34 = piVar1[0x13];
  local_30 = piVar1[0x14];
  local_2c = piVar1[0x15];
  local_28 = piVar1[0x16];
  iVar2 = memcmp(&local_80,&local_50,0x30);
  iVar3 = 1;
  if ((((iVar2 == 0) && ((char)local_74 != '\0')) &&
      (iVar4 = local_80 + local_78 + local_7c + local_80,
      iVar2 = local_7c + local_80 + local_74 + iVar4, iVar4 = iVar4 + local_70 + iVar2,
      iVar2 = iVar2 + local_6c + iVar4, iVar4 = iVar4 + local_68 + iVar2,
      iVar2 = iVar2 + local_64 + iVar4, iVar4 = iVar4 + local_60 + iVar2, local_58 == iVar4)) &&
     ((local_54 == iVar2 + local_5c + iVar4 &&
      (iVar3 = memcmp((void *)(param_1 + 0x34),&local_80,0x30), iVar3 != 0)))) {
    *param_2 = 1;
    iVar3 = 0;
    *(int *)(param_1 + 0x34) = local_80;
    *(int *)(param_1 + 0x38) = local_7c;
    *(int *)(param_1 + 0x3c) = local_78;
    *(int *)(param_1 + 0x40) = local_74;
    *(int *)(param_1 + 0x44) = local_70;
    *(int *)(param_1 + 0x48) = local_6c;
    *(int *)(param_1 + 0x4c) = local_68;
    *(int *)(param_1 + 0x50) = local_64;
    *(int *)(param_1 + 0x54) = local_60;
    *(int *)(param_1 + 0x58) = local_5c;
    *(int *)(param_1 + 0x5c) = local_58;
    *(int *)(param_1 + 0x60) = local_54;
    *(uint *)(param_1 + 0x24) =
         (*(ushort *)(param_1 + 0x42) & 1) << 0x10 | *(ushort *)(param_1 + 0x42) & 0xfe00;
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return iVar3;
}

