
void __regparm3
addWhereTerm(Parse *pParse,SrcList *pSrc,int iLeft,int iColLeft,int iRight,int iColRight,
            int isOuterJoin,Expr **ppWhere)

{
  Bitmask *pBVar1;
  uint *puVar2;
  sqlite3 *db;
  Table *pTVar3;
  byte bVar4;
  uint uVar5;
  undefined4 *puVar6;
  uint uVar7;
  uint uVar8;
  Parse *pParse_00;
  Expr *pEVar9;
  uint uVar10;
  undefined4 *puVar11;
  byte bVar12;
  int in_stack_ffffffc8;
  Expr *in_stack_ffffffcc;
  Expr *in_stack_ffffffd0;
  undefined4 in_stack_ffffffd4;
  
  bVar12 = 0;
  db = pParse->db;
  if (db->mallocFailed == '\0') {
    in_stack_ffffffd0 = (Expr *)0x8985b;
    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));
    if (puVar6 != (undefined4 *)0x0) {
      *puVar6 = 0;
      puVar6[0xd] = 0;
      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);
      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;
          uVar10 != 0; uVar10 = uVar10 - 1) {
        *puVar11 = 0;
        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;
      }
      *(undefined1 *)puVar6 = 0x9e;
      *(undefined2 *)(puVar6 + 9) = 0xffff;
      puVar6[6] = 1;
      pTVar3 = pSrc->a[iLeft].pTab;
      puVar6[0xc] = pTVar3;
      puVar6[7] = pSrc->a[iLeft].iCursor;
      if (iColLeft == pTVar3->iPKey) {
        puVar6[8] = 0xffffffff;
      }
      else {
        puVar6[8] = iColLeft;
        uVar10 = 0x3f;
        if (iColLeft < 0x40) {
          uVar10 = iColLeft;
        }
        bVar4 = (byte)uVar10 & 0x1f;
        uVar7 = 1 << ((byte)uVar10 & 0x1f);
        uVar8 = uVar7;
        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;
        if ((uVar10 & 0x20) != 0) {
          uVar8 = 0;
          uVar5 = uVar7;
        }
        pBVar1 = &pSrc->a[iLeft].colUsed;
        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;
        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);
        *puVar2 = *puVar2 | uVar5;
      }
    }
    if (db->mallocFailed == '\0') {
      in_stack_ffffffd0 = (Expr *)0x89910;
      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));
      if (pParse_00 != (Parse *)0x0) {
        pParse_00->db = (sqlite3 *)0x0;
        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);
        pParse_00->iSelfTab = 0;
        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;
        for (; uVar10 != 0; uVar10 = uVar10 - 1) {
          *puVar6 = 0;
          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;
        }
        *(undefined1 *)&pParse_00->db = 0x9e;
        *(undefined2 *)&pParse_00->nErr = 0xffff;
        pParse_00->disableLookaside = '\x01';
        pParse_00->disableVtab = '\0';
        *(undefined2 *)&pParse_00->field_0x1a = 0;
        pTVar3 = pSrc->a[iRight].pTab;
        pParse_00->szOpAlloc = (int)pTVar3;
        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;
        if (iColRight == pTVar3->iPKey) {
          pParse_00->iRangeReg = -1;
        }
        else {
          pParse_00->iRangeReg = iColRight;
          uVar10 = 0x3f;
          if (iColRight < 0x40) {
            uVar10 = iColRight;
          }
          bVar12 = (byte)uVar10 & 0x1f;
          uVar7 = 1 << ((byte)uVar10 & 0x1f);
          uVar8 = uVar7;
          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;
          if ((uVar10 & 0x20) != 0) {
            uVar8 = 0;
            uVar5 = uVar7;
          }
          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);
          *puVar2 = *puVar2 | uVar5;
          pBVar1 = &pSrc->a[iRight].colUsed;
          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;
        }
      }
    }
    else {
      pParse_00 = (Parse *)0x0;
    }
  }
  else {
    pParse_00 = (Parse *)0x0;
  }
  pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);
  if ((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)) {
    pEVar9->flags = pEVar9->flags | 1;
    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;
  }
  pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9);
  *ppWhere = pEVar9;
  return;
}



void __regparm3
FUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7
            ,undefined4 *param_8)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  byte bVar12;
  
  bVar12 = 0;
  iVar7 = *param_1;
  if (*(char *)(iVar7 + 0x4d) == '\0') {
    puVar4 = (undefined4 *)FUN_00055c10();
    if (puVar4 != (undefined4 *)0x0) {
      *puVar4 = 0;
      puVar4[0xd] = 0;
      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);
      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;
          uVar9 != 0; uVar9 = uVar9 - 1) {
        *puVar11 = 0;
        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;
      }
      *(undefined1 *)puVar4 = 0x9e;
      *(undefined2 *)(puVar4 + 9) = 0xffff;
      iVar10 = param_3 * 0x44 + param_2;
      puVar4[6] = 1;
      iVar1 = *(int *)(iVar10 + 0x18);
      puVar4[0xc] = iVar1;
      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);
      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {
        puVar4[8] = 0xffffffff;
      }
      else {
        puVar4[8] = param_4;
        uVar9 = 0x3f;
        if ((int)param_4 < 0x40) {
          uVar9 = param_4;
        }
        bVar2 = (byte)uVar9 & 0x1f;
        uVar5 = 1 << ((byte)uVar9 & 0x1f);
        uVar6 = uVar5;
        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;
        if ((uVar9 & 0x20) != 0) {
          uVar6 = 0;
          uVar3 = uVar5;
        }
        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;
        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;
      }
    }
    if (*(char *)(iVar7 + 0x4d) == '\0') {
      puVar4 = (undefined4 *)FUN_00055c10();
      if (puVar4 != (undefined4 *)0x0) {
        *puVar4 = 0;
        puVar4[0xd] = 0;
        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);
        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;
            uVar9 != 0; uVar9 = uVar9 - 1) {
          *puVar11 = 0;
          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;
        }
        *(undefined1 *)puVar4 = 0x9e;
        *(undefined2 *)(puVar4 + 9) = 0xffff;
        param_2 = param_5 * 0x44 + param_2;
        puVar4[6] = 1;
        iVar7 = *(int *)(param_2 + 0x18);
        puVar4[0xc] = iVar7;
        puVar4[7] = *(undefined4 *)(param_2 + 0x30);
        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {
          puVar4[8] = 0xffffffff;
        }
        else {
          puVar4[8] = param_6;
          uVar9 = 0x3f;
          if ((int)param_6 < 0x40) {
            uVar9 = param_6;
          }
          bVar12 = (byte)uVar9 & 0x1f;
          uVar5 = 1 << ((byte)uVar9 & 0x1f);
          uVar6 = uVar5;
          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;
          if ((uVar9 & 0x20) != 0) {
            uVar6 = 0;
            uVar3 = uVar5;
          }
          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;
          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;
        }
      }
    }
    else {
      puVar4 = (undefined4 *)0x0;
    }
  }
  else {
    puVar4 = (undefined4 *)0x0;
  }
  iVar7 = FUN_000896d0(puVar4);
  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {
    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;
    *(short *)(iVar7 + 0x26) = (short)puVar4[7];
  }
  uVar8 = FUN_00064db0();
  *param_8 = uVar8;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBP,dword ptr [EAX]
MOV dword ptr [ESP + 0x8],EAX
CMP byte ptr [EBP + 0x4d],0x0
MOV dword ptr [ESP + 0x4],EDX
JNZ 0x00089a18
MOV EBX,ECX
MOV EDX,0x38
XOR ECX,ECX
MOV EAX,EBP
CALL 0x00055c10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x000898f8
MOV ECX,EAX
MOV dword ptr [EAX],0x0
IMUL EBX,EBX,0x44
LEA EDI,[EAX + 0x4]
AND EDI,0xfffffffc
MOV dword ptr [EAX + 0x34],0x0
XOR EAX,EAX
SUB ECX,EDI
ADD ECX,0x38
SHR ECX,0x2
STOSD.REP ES:EDI
MOV EDI,0xffffffff
MOV byte ptr [ESI],0x9e
MOV word ptr [ESI + 0x24],DI
ADD EBX,dword ptr [ESP + 0x4]
MOV dword ptr [ESI + 0x18],0x1
MOV EDX,dword ptr [EBX + 0x18]
LEA EAX,[EBX + 0x30]
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESI + 0x30],EDX
MOV ECX,dword ptr [EBX + 0x30]
MOV dword ptr [ESI + 0x1c],ECX
MOVSX EDX,word ptr [EDX + 0x28]
CMP dword ptr [ESP + 0x30],EDX
JZ 0x00089a08
MOV EDI,dword ptr [ESP + 0x30]
MOV EBX,0x3f
MOV EAX,0x1
CMP EDI,0x3f
MOV dword ptr [ESI + 0x20],EDI
CMOVLE EBX,EDI
XOR EDX,EDX
MOV ECX,EBX
XOR EBX,EBX
SHLD EDX,EAX,CL
SHL EAX,CL
TEST CL,0x20
CMOVNZ EDX,EAX
CMOVNZ EAX,EBX
MOV EBX,dword ptr [ESP + 0xc]
OR dword ptr [EBX + 0xc],EAX
MOV EAX,EDX
OR dword ptr [EBX + 0x10],EAX
CMP byte ptr [EBP + 0x4d],0x0
JNZ 0x00089a1e
MOV EDX,0x38
XOR ECX,ECX
MOV EAX,EBP
CALL 0x00055c10
MOV EBX,EAX
TEST EAX,EAX
JZ 0x000899ab
LEA EDI,[EAX + 0x4]
MOV ECX,EAX
MOV dword ptr [EAX],0x0
AND EDI,0xfffffffc
MOV dword ptr [EAX + 0x34],0x0
XOR EAX,EAX
SUB ECX,EDI
ADD ECX,0x38
SHR ECX,0x2
STOSD.REP ES:EDI
MOV EAX,0xffffffff
MOV byte ptr [EBX],0x9e
MOV word ptr [EBX + 0x24],AX
IMUL EAX,dword ptr [ESP + 0x34],0x44
ADD EAX,dword ptr [ESP + 0x4]
MOV dword ptr [EBX + 0x18],0x1
MOV ECX,dword ptr [EAX + 0x18]
LEA EDI,[EAX + 0x30]
MOV dword ptr [ESP + 0x4],EDI
MOV dword ptr [EBX + 0x30],ECX
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [EBX + 0x1c],EAX
MOVSX EAX,word ptr [ECX + 0x28]
CMP dword ptr [ESP + 0x38],EAX
JZ 0x000899f8
MOV EAX,dword ptr [ESP + 0x38]
MOV ECX,0x3f
CMP EAX,0x3f
MOV dword ptr [EBX + 0x20],EAX
CMOVLE ECX,EAX
MOV EAX,0x1
XOR EDX,EDX
XOR EDI,EDI
SHLD EDX,EAX,CL
SHL EAX,CL
TEST CL,0x20
MOV ECX,dword ptr [ESP + 0x4]
CMOVNZ EDX,EAX
CMOVNZ EAX,EDI
OR dword ptr [ECX + 0x10],EDX
OR dword ptr [ECX + 0xc],EAX
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x35
PUSH EBX
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000896d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000899d8
TEST byte ptr [ESP + 0x3c],0x1
JZ 0x000899d8
OR dword ptr [EAX + 0x4],0x1
MOV EDX,dword ptr [EBX + 0x1c]
MOV word ptr [EAX + 0x26],DX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [EAX]
MOV EAX,EBP
CALL 0x00064db0
MOV EDI,dword ptr [ESP + 0x40]
MOV dword ptr [EDI],EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EBX + 0x20],0xffffffff
JMP 0x000899ab
MOV dword ptr [ESI + 0x20],0xffffffff
JMP 0x000898f8
XOR ESI,ESI
XOR EBX,EBX
JMP 0x000899ab
XOR EBX,EBX
JMP 0x000899ab
(translation_unit "void __regparm3\nFUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}\n\n" (function_definition "void __regparm3\nFUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" identifier (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "byte param_7" type_identifier identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" * (cast_expression "(char *)(iVar7 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4d)" ( (binary_expression "iVar7 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" identifier = (cast_expression "(undefined4 *)FUN_00055c10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055c10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" for ( (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" ( (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" * (cast_expression "(undefined2 *)(puVar4 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = param_3 * 0x44 + param_2;" (assignment_expression "iVar10 = param_3 * 0x44 + param_2" identifier = (binary_expression "param_3 * 0x44 + param_2" (binary_expression "param_3 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = *(int *)(iVar10 + 0x18);" (assignment_expression "iVar1 = *(int *)(iVar10 + 0x18)" identifier = (pointer_expression "*(int *)(iVar10 + 0x18)" * (cast_expression "(int *)(iVar10 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x18)" ( (binary_expression "iVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar4[0xc] = iVar1;" (assignment_expression "puVar4[0xc] = iVar1" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(iVar10 + 0x30)" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" if (parenthesized_expression "(param_4 == (int)*(short *)(iVar1 + 0x28))" ( (binary_expression "param_4 == (int)*(short *)(iVar1 + 0x28)" identifier == (cast_expression "(int)*(short *)(iVar1 + 0x28)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar1 + 0x28)" * (cast_expression "(short *)(iVar1 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x28)" ( (binary_expression "iVar1 + 0x28" identifier + number_literal) )))))) )) (compound_statement "{\n        puVar4[8] = 0xffffffff;\n      }" { (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" else (compound_statement "{\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" { (expression_statement "puVar4[8] = param_4;" (assignment_expression "puVar4[8] = param_4" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }" if (parenthesized_expression "((int)param_4 < 0x40)" ( (binary_expression "(int)param_4 < 0x40" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar9 = param_4;\n        }" { (expression_statement "uVar9 = param_4;" (assignment_expression "uVar9 = param_4" identifier = identifier) ;) })) (expression_statement "bVar2 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar9 & 0x1f" identifier = (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar9 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;" (assignment_expression "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2" identifier = (binary_expression "0 << bVar2 | 1U >> 0x20 - bVar2" (binary_expression "0 << bVar2" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar2" number_literal >> (binary_expression "0x20 - bVar2" number_literal - identifier)))) ;) (if_statement "if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" if (parenthesized_expression "((uVar9 & 0x20) != 0)" ( (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" ( (binary_expression "uVar9 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" * (cast_expression "(uint *)(iVar10 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x3c)" ( (binary_expression "iVar10 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" * (cast_expression "(uint *)(iVar10 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x3c)" ( (binary_expression "iVar10 + 0x3c" identifier + number_literal) )))) | identifier)) ;) (expression_statement "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;" (assignment_expression "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" * (cast_expression "(uint *)(iVar10 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x40)" ( (binary_expression "iVar10 + 0x40" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" * (cast_expression "(uint *)(iVar10 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x40)" ( (binary_expression "iVar10 + 0x40" identifier + number_literal) )))) | identifier)) ;) }))) })) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }" if (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" * (cast_expression "(char *)(iVar7 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4d)" ( (binary_expression "iVar7 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }" { (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" identifier = (cast_expression "(undefined4 *)FUN_00055c10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055c10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" for ( (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" ( (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" * (cast_expression "(undefined2 *)(puVar4 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2 = param_5 * 0x44 + param_2;" (assignment_expression "param_2 = param_5 * 0x44 + param_2" identifier = (binary_expression "param_5 * 0x44 + param_2" (binary_expression "param_5 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x18);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x18)" identifier = (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar4[0xc] = iVar7;" (assignment_expression "puVar4[0xc] = iVar7" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = *(undefined4 *)(param_2 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(param_2 + 0x30)" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" if (parenthesized_expression "(param_6 == (int)*(short *)(iVar7 + 0x28))" ( (binary_expression "param_6 == (int)*(short *)(iVar7 + 0x28)" identifier == (cast_expression "(int)*(short *)(iVar7 + 0x28)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar7 + 0x28)" * (cast_expression "(short *)(iVar7 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))))) )) (compound_statement "{\n          puVar4[8] = 0xffffffff;\n        }" { (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" else (compound_statement "{\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" { (expression_statement "puVar4[8] = param_6;" (assignment_expression "puVar4[8] = param_6" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }" if (parenthesized_expression "((int)param_6 < 0x40)" ( (binary_expression "(int)param_6 < 0x40" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar9 = param_6;\n          }" { (expression_statement "uVar9 = param_6;" (assignment_expression "uVar9 = param_6" identifier = identifier) ;) })) (expression_statement "bVar12 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar12 = (byte)uVar9 & 0x1f" identifier = (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar9 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;" (assignment_expression "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12" identifier = (binary_expression "0 << bVar12 | 1U >> 0x20 - bVar12" (binary_expression "0 << bVar12" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar12" number_literal >> (binary_expression "0x20 - bVar12" number_literal - identifier)))) ;) (if_statement "if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" if (parenthesized_expression "((uVar9 & 0x20) != 0)" ( (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" ( (binary_expression "uVar9 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;" (assignment_expression "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) | identifier)) ;) (expression_statement "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" * (cast_expression "(uint *)(param_2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" * (cast_expression "(uint *)(param_2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) | identifier)) ;) }))) })) }) (else_clause "else {\n      puVar4 = (undefined4 *)0x0;\n    }" else (compound_statement "{\n      puVar4 = (undefined4 *)0x0;\n    }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" else (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "iVar7 = FUN_000896d0(puVar4);" (assignment_expression "iVar7 = FUN_000896d0(puVar4)" identifier = (call_expression "FUN_000896d0(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (if_statement "if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" if (parenthesized_expression "((iVar7 != 0) && ((param_7 & 1) != 0))" ( (binary_expression "(iVar7 != 0) && ((param_7 & 1) != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "((param_7 & 1) != 0)" ( (binary_expression "(param_7 & 1) != 0" (parenthesized_expression "(param_7 & 1)" ( (binary_expression "param_7 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" { (expression_statement "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;" (assignment_expression "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(short *)(iVar7 + 0x26) = (short)puVar4[7];" (assignment_expression "*(short *)(iVar7 + 0x26) = (short)puVar4[7]" (pointer_expression "*(short *)(iVar7 + 0x26)" * (cast_expression "(short *)(iVar7 + 0x26)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x26)" ( (binary_expression "iVar7 + 0x26" identifier + number_literal) )))) = (cast_expression "(short)puVar4[7]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar4[7]" identifier [ number_literal ]))) ;) })) (expression_statement "uVar8 = FUN_00064db0();" (assignment_expression "uVar8 = FUN_00064db0()" identifier = (call_expression "FUN_00064db0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_8 = uVar8;" (assignment_expression "*param_8 = uVar8" (pointer_expression "*param_8" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3\naddWhereTerm(Parse *pParse,SrcList *pSrc,int iLeft,int iColLeft,int iRight,int iColRight,\n            int isOuterJoin,Expr **ppWhere)\n\n{\n  Bitmask *pBVar1;\n  uint *puVar2;\n  sqlite3 *db;\n  Table *pTVar3;\n  byte bVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  Parse *pParse_00;\n  Expr *pEVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  int in_stack_ffffffc8;\n  Expr *in_stack_ffffffcc;\n  Expr *in_stack_ffffffd0;\n  undefined4 in_stack_ffffffd4;\n  \n  bVar12 = 0;\n  db = pParse->db;\n  if (db->mallocFailed == '\0') {\n    in_stack_ffffffd0 = (Expr *)0x8985b;\n    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n    if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }\n    if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }\n  }\n  else {\n    pParse_00 = (Parse *)0x0;\n  }\n  pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);\n  if ((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)) {\n    pEVar9->flags = pEVar9->flags | 1;\n    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;\n  }\n  pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9);\n  *ppWhere = pEVar9;\n  return;\n}\n\n" (function_definition "void __regparm3\naddWhereTerm(Parse *pParse,SrcList *pSrc,int iLeft,int iColLeft,int iRight,int iColRight,\n            int isOuterJoin,Expr **ppWhere)\n\n{\n  Bitmask *pBVar1;\n  uint *puVar2;\n  sqlite3 *db;\n  Table *pTVar3;\n  byte bVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  Parse *pParse_00;\n  Expr *pEVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  int in_stack_ffffffc8;\n  Expr *in_stack_ffffffcc;\n  Expr *in_stack_ffffffd0;\n  undefined4 in_stack_ffffffd4;\n  \n  bVar12 = 0;\n  db = pParse->db;\n  if (db->mallocFailed == '\0') {\n    in_stack_ffffffd0 = (Expr *)0x8985b;\n    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n    if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }\n    if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }\n  }\n  else {\n    pParse_00 = (Parse *)0x0;\n  }\n  pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);\n  if ((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)) {\n    pEVar9->flags = pEVar9->flags | 1;\n    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;\n  }\n  pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9);\n  *ppWhere = pEVar9;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "addWhereTerm(Parse *pParse,SrcList *pSrc,int iLeft,int iColLeft,int iRight,int iColRight,\n            int isOuterJoin,Expr **ppWhere)" identifier (parameter_list "(Parse *pParse,SrcList *pSrc,int iLeft,int iColLeft,int iRight,int iColRight,\n            int isOuterJoin,Expr **ppWhere)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "SrcList *pSrc" type_identifier (pointer_declarator "*pSrc" * identifier)) , (parameter_declaration "int iLeft" primitive_type identifier) , (parameter_declaration "int iColLeft" primitive_type identifier) , (parameter_declaration "int iRight" primitive_type identifier) , (parameter_declaration "int iColRight" primitive_type identifier) , (parameter_declaration "int isOuterJoin" primitive_type identifier) , (parameter_declaration "Expr **ppWhere" type_identifier (pointer_declarator "**ppWhere" * (pointer_declarator "*ppWhere" * identifier))) ))) (compound_statement "{\n  Bitmask *pBVar1;\n  uint *puVar2;\n  sqlite3 *db;\n  Table *pTVar3;\n  byte bVar4;\n  uint uVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  Parse *pParse_00;\n  Expr *pEVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  int in_stack_ffffffc8;\n  Expr *in_stack_ffffffcc;\n  Expr *in_stack_ffffffd0;\n  undefined4 in_stack_ffffffd4;\n  \n  bVar12 = 0;\n  db = pParse->db;\n  if (db->mallocFailed == '\0') {\n    in_stack_ffffffd0 = (Expr *)0x8985b;\n    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n    if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }\n    if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }\n  }\n  else {\n    pParse_00 = (Parse *)0x0;\n  }\n  pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);\n  if ((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)) {\n    pEVar9->flags = pEVar9->flags | 1;\n    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;\n  }\n  pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9);\n  *ppWhere = pEVar9;\n  return;\n}" { (declaration "Bitmask *pBVar1;" type_identifier (pointer_declarator "*pBVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "Table *pTVar3;" type_identifier (pointer_declarator "*pTVar3" * identifier) ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "Expr *pEVar9;" type_identifier (pointer_declarator "*pEVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "int in_stack_ffffffc8;" primitive_type identifier ;) (declaration "Expr *in_stack_ffffffcc;" type_identifier (pointer_declarator "*in_stack_ffffffcc" * identifier) ;) (declaration "Expr *in_stack_ffffffd0;" type_identifier (pointer_declarator "*in_stack_ffffffd0" * identifier) ;) (declaration "undefined4 in_stack_ffffffd4;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if (db->mallocFailed == '\0') {\n    in_stack_ffffffd0 = (Expr *)0x8985b;\n    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n    if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }\n    if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }\n  }\n  else {\n    pParse_00 = (Parse *)0x0;\n  }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    in_stack_ffffffd0 = (Expr *)0x8985b;\n    puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n    if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }\n    if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }\n  }" { (expression_statement "in_stack_ffffffd0 = (Expr *)0x8985b;" (assignment_expression "in_stack_ffffffd0 = (Expr *)0x8985b" identifier = (cast_expression "(Expr *)0x8985b" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));" (assignment_expression "puVar6 = (undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" identifier = (cast_expression "(undefined4 *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" identifier (argument_list "(db,CONCAT44(pSrc,in_stack_ffffffd4))" ( identifier , (call_expression "CONCAT44(pSrc,in_stack_ffffffd4)" identifier (argument_list "(pSrc,in_stack_ffffffd4)" ( identifier , identifier ))) ))))) ;) (if_statement "if (puVar6 != (undefined4 *)0x0) {\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }" if (parenthesized_expression "(puVar6 != (undefined4 *)0x0)" ( (binary_expression "puVar6 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar6 = 0;\n      puVar6[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);\n      for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar6 = 0x9e;\n      *(undefined2 *)(puVar6 + 9) = 0xffff;\n      puVar6[6] = 1;\n      pTVar3 = pSrc->a[iLeft].pTab;\n      puVar6[0xc] = pTVar3;\n      puVar6[7] = pSrc->a[iLeft].iCursor;\n      if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }\n    }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[0xd] = 0;" (assignment_expression "puVar6[0xd] = 0" (subscript_expression "puVar6[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2;\n          uVar10 != 0; uVar10 = uVar10 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" for ( (assignment_expression "uVar10 = (uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar6 + (0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc))" ( (binary_expression "0x38 - (int)((uint)(puVar6 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar6 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar6 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar6 + 1) & 0xfffffffc" (call_expression "(uint)(puVar6 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 1)" ( (binary_expression "puVar6 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar10 != 0" identifier != number_literal) ; (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)puVar6 = 0x9e;" (assignment_expression "*(undefined1 *)puVar6 = 0x9e" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar6 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar6 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar6 + 9)" * (cast_expression "(undefined2 *)(puVar6 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 9)" ( (binary_expression "puVar6 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar6[6] = 1;" (assignment_expression "puVar6[6] = 1" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pTVar3 = pSrc->a[iLeft].pTab;" (assignment_expression "pTVar3 = pSrc->a[iLeft].pTab" identifier = (field_expression "pSrc->a[iLeft].pTab" (subscript_expression "pSrc->a[iLeft]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "puVar6[0xc] = pTVar3;" (assignment_expression "puVar6[0xc] = pTVar3" (subscript_expression "puVar6[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[7] = pSrc->a[iLeft].iCursor;" (assignment_expression "puVar6[7] = pSrc->a[iLeft].iCursor" (subscript_expression "puVar6[7]" identifier [ number_literal ]) = (field_expression "pSrc->a[iLeft].iCursor" (subscript_expression "pSrc->a[iLeft]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (iColLeft == pTVar3->iPKey) {\n        puVar6[8] = 0xffffffff;\n      }\n      else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }" if (parenthesized_expression "(iColLeft == pTVar3->iPKey)" ( (binary_expression "iColLeft == pTVar3->iPKey" identifier == (field_expression "pTVar3->iPKey" identifier -> field_identifier)) )) (compound_statement "{\n        puVar6[8] = 0xffffffff;\n      }" { (expression_statement "puVar6[8] = 0xffffffff;" (assignment_expression "puVar6[8] = 0xffffffff" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }" else (compound_statement "{\n        puVar6[8] = iColLeft;\n        uVar10 = 0x3f;\n        if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }\n        bVar4 = (byte)uVar10 & 0x1f;\n        uVar7 = 1 << ((byte)uVar10 & 0x1f);\n        uVar8 = uVar7;\n        uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;\n        if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }\n        pBVar1 = &pSrc->a[iLeft].colUsed;\n        *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);\n        *puVar2 = *puVar2 | uVar5;\n      }" { (expression_statement "puVar6[8] = iColLeft;" (assignment_expression "puVar6[8] = iColLeft" (subscript_expression "puVar6[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = 0x3f;" (assignment_expression "uVar10 = 0x3f" identifier = number_literal) ;) (if_statement "if (iColLeft < 0x40) {\n          uVar10 = iColLeft;\n        }" if (parenthesized_expression "(iColLeft < 0x40)" ( (binary_expression "iColLeft < 0x40" identifier < number_literal) )) (compound_statement "{\n          uVar10 = iColLeft;\n        }" { (expression_statement "uVar10 = iColLeft;" (assignment_expression "uVar10 = iColLeft" identifier = identifier) ;) })) (expression_statement "bVar4 = (byte)uVar10 & 0x1f;" (assignment_expression "bVar4 = (byte)uVar10 & 0x1f" identifier = (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar7 = 1 << ((byte)uVar10 & 0x1f);" (assignment_expression "uVar7 = 1 << ((byte)uVar10 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar10 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) (expression_statement "uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4;" (assignment_expression "uVar5 = 0 << bVar4 | 1U >> 0x20 - bVar4" identifier = (binary_expression "0 << bVar4 | 1U >> 0x20 - bVar4" (binary_expression "0 << bVar4" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar4" number_literal >> (binary_expression "0x20 - bVar4" number_literal - identifier)))) ;) (if_statement "if ((uVar10 & 0x20) != 0) {\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }" if (parenthesized_expression "((uVar10 & 0x20) != 0)" ( (binary_expression "(uVar10 & 0x20) != 0" (parenthesized_expression "(uVar10 & 0x20)" ( (binary_expression "uVar10 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar8 = 0;\n          uVar5 = uVar7;\n        }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) })) (expression_statement "pBVar1 = &pSrc->a[iLeft].colUsed;" (assignment_expression "pBVar1 = &pSrc->a[iLeft].colUsed" identifier = (pointer_expression "&pSrc->a[iLeft].colUsed" & (field_expression "pSrc->a[iLeft].colUsed" (subscript_expression "pSrc->a[iLeft]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "*(uint *)pBVar1 = (uint)*pBVar1 | uVar8;" (assignment_expression "*(uint *)pBVar1 = (uint)*pBVar1 | uVar8" (pointer_expression "*(uint *)pBVar1" * (cast_expression "(uint *)pBVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(uint)*pBVar1 | uVar8" (binary_expression "(uint)*pBVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) | identifier)) ;) (expression_statement "puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4);" (assignment_expression "puVar2 = (uint *)((int)&pSrc->a[iLeft].colUsed + 4)" identifier = (cast_expression "(uint *)((int)&pSrc->a[iLeft].colUsed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSrc->a[iLeft].colUsed + 4)" ( (binary_expression "(int)&pSrc->a[iLeft].colUsed + 4" (cast_expression "(int)&pSrc->a[iLeft].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSrc->a[iLeft].colUsed" & (field_expression "pSrc->a[iLeft].colUsed" (subscript_expression "pSrc->a[iLeft]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | uVar5;" (assignment_expression "*puVar2 = *puVar2 | uVar5" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | uVar5" (pointer_expression "*puVar2" * identifier) | identifier)) ;) }))) })) (if_statement "if (db->mallocFailed == '\0') {\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }\n    else {\n      pParse_00 = (Parse *)0x0;\n    }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      in_stack_ffffffd0 = (Expr *)0x89910;\n      pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));\n      if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }\n    }" { (expression_statement "in_stack_ffffffd0 = (Expr *)0x89910;" (assignment_expression "in_stack_ffffffd0 = (Expr *)0x89910" identifier = (cast_expression "(Expr *)0x89910" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4));" (assignment_expression "pParse_00 = (Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" identifier = (cast_expression "(Parse *)dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dbMallocRawFinish(db,CONCAT44(pSrc,in_stack_ffffffd4))" identifier (argument_list "(db,CONCAT44(pSrc,in_stack_ffffffd4))" ( identifier , (call_expression "CONCAT44(pSrc,in_stack_ffffffd4)" identifier (argument_list "(pSrc,in_stack_ffffffd4)" ( identifier , identifier ))) ))))) ;) (if_statement "if (pParse_00 != (Parse *)0x0) {\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }" if (parenthesized_expression "(pParse_00 != (Parse *)0x0)" ( (binary_expression "pParse_00 != (Parse *)0x0" identifier != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pParse_00->db = (sqlite3 *)0x0;\n        puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);\n        pParse_00->iSelfTab = 0;\n        uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;\n        for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)&pParse_00->db = 0x9e;\n        *(undefined2 *)&pParse_00->nErr = 0xffff;\n        pParse_00->disableLookaside = '\x01';\n        pParse_00->disableVtab = '\0';\n        *(undefined2 *)&pParse_00->field_0x1a = 0;\n        pTVar3 = pSrc->a[iRight].pTab;\n        pParse_00->szOpAlloc = (int)pTVar3;\n        pParse_00->nRangeReg = pSrc->a[iRight].iCursor;\n        if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }\n      }" { (expression_statement "pParse_00->db = (sqlite3 *)0x0;" (assignment_expression "pParse_00->db = (sqlite3 *)0x0" (field_expression "pParse_00->db" identifier -> field_identifier) = (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc);" (assignment_expression "puVar6 = (undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)&pParse_00->zErrMsg & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)&pParse_00->zErrMsg & 0xfffffffc)" ( (binary_expression "(uint)&pParse_00->zErrMsg & 0xfffffffc" (binary_expression "(uint)&pParse_00->zErrMsg" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pParse_00->zErrMsg" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "pParse_00->iSelfTab = 0;" (assignment_expression "pParse_00->iSelfTab = 0" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2;" (assignment_expression "uVar10 = (uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2" identifier = (binary_expression "(uint)((int)pParse_00 + (0x38 - (int)puVar6)) >> 2" (call_expression "(uint)((int)pParse_00 + (0x38 - (int)puVar6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pParse_00 + (0x38 - (int)puVar6))" ( (binary_expression "(int)pParse_00 + (0x38 - (int)puVar6)" (cast_expression "(int)pParse_00" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)puVar6)" ( (binary_expression "0x38 - (int)puVar6" number_literal - (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal)) ;) (for_statement "for (; uVar10 != 0; uVar10 = uVar10 - 1) {\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }" for ( ; (binary_expression "uVar10 != 0" identifier != number_literal) ; (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar6 = 0;\n          puVar6 = puVar6 + (uint)bVar12 * -2 + 1;\n        }" { (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar12 * -2 + 1" (binary_expression "puVar6 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)&pParse_00->db = 0x9e;" (assignment_expression "*(undefined1 *)&pParse_00->db = 0x9e" (pointer_expression "*(undefined1 *)&pParse_00->db" * (cast_expression "(undefined1 *)&pParse_00->db" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pParse_00->db" & (field_expression "pParse_00->db" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined2 *)&pParse_00->nErr = 0xffff;" (assignment_expression "*(undefined2 *)&pParse_00->nErr = 0xffff" (pointer_expression "*(undefined2 *)&pParse_00->nErr" * (cast_expression "(undefined2 *)&pParse_00->nErr" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pParse_00->nErr" & (field_expression "pParse_00->nErr" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pParse_00->disableLookaside = '\x01';" (assignment_expression "pParse_00->disableLookaside = '\x01'" (field_expression "pParse_00->disableLookaside" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pParse_00->disableVtab = '\0';" (assignment_expression "pParse_00->disableVtab = '\0'" (field_expression "pParse_00->disableVtab" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined2 *)&pParse_00->field_0x1a = 0;" (assignment_expression "*(undefined2 *)&pParse_00->field_0x1a = 0" (pointer_expression "*(undefined2 *)&pParse_00->field_0x1a" * (cast_expression "(undefined2 *)&pParse_00->field_0x1a" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pParse_00->field_0x1a" & (field_expression "pParse_00->field_0x1a" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pTVar3 = pSrc->a[iRight].pTab;" (assignment_expression "pTVar3 = pSrc->a[iRight].pTab" identifier = (field_expression "pSrc->a[iRight].pTab" (subscript_expression "pSrc->a[iRight]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pParse_00->szOpAlloc = (int)pTVar3;" (assignment_expression "pParse_00->szOpAlloc = (int)pTVar3" (field_expression "pParse_00->szOpAlloc" identifier -> field_identifier) = (cast_expression "(int)pTVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pParse_00->nRangeReg = pSrc->a[iRight].iCursor;" (assignment_expression "pParse_00->nRangeReg = pSrc->a[iRight].iCursor" (field_expression "pParse_00->nRangeReg" identifier -> field_identifier) = (field_expression "pSrc->a[iRight].iCursor" (subscript_expression "pSrc->a[iRight]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (iColRight == pTVar3->iPKey) {\n          pParse_00->iRangeReg = -1;\n        }\n        else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }" if (parenthesized_expression "(iColRight == pTVar3->iPKey)" ( (binary_expression "iColRight == pTVar3->iPKey" identifier == (field_expression "pTVar3->iPKey" identifier -> field_identifier)) )) (compound_statement "{\n          pParse_00->iRangeReg = -1;\n        }" { (expression_statement "pParse_00->iRangeReg = -1;" (assignment_expression "pParse_00->iRangeReg = -1" (field_expression "pParse_00->iRangeReg" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }" else (compound_statement "{\n          pParse_00->iRangeReg = iColRight;\n          uVar10 = 0x3f;\n          if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }\n          bVar12 = (byte)uVar10 & 0x1f;\n          uVar7 = 1 << ((byte)uVar10 & 0x1f);\n          uVar8 = uVar7;\n          uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }\n          puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);\n          *puVar2 = *puVar2 | uVar5;\n          pBVar1 = &pSrc->a[iRight].colUsed;\n          *(uint *)pBVar1 = (uint)*pBVar1 | uVar8;\n        }" { (expression_statement "pParse_00->iRangeReg = iColRight;" (assignment_expression "pParse_00->iRangeReg = iColRight" (field_expression "pParse_00->iRangeReg" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar10 = 0x3f;" (assignment_expression "uVar10 = 0x3f" identifier = number_literal) ;) (if_statement "if (iColRight < 0x40) {\n            uVar10 = iColRight;\n          }" if (parenthesized_expression "(iColRight < 0x40)" ( (binary_expression "iColRight < 0x40" identifier < number_literal) )) (compound_statement "{\n            uVar10 = iColRight;\n          }" { (expression_statement "uVar10 = iColRight;" (assignment_expression "uVar10 = iColRight" identifier = identifier) ;) })) (expression_statement "bVar12 = (byte)uVar10 & 0x1f;" (assignment_expression "bVar12 = (byte)uVar10 & 0x1f" identifier = (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar7 = 1 << ((byte)uVar10 & 0x1f);" (assignment_expression "uVar7 = 1 << ((byte)uVar10 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar10 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar10 & 0x1f)" ( (binary_expression "(byte)uVar10 & 0x1f" (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) (expression_statement "uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12;" (assignment_expression "uVar5 = 0 << bVar12 | 1U >> 0x20 - bVar12" identifier = (binary_expression "0 << bVar12 | 1U >> 0x20 - bVar12" (binary_expression "0 << bVar12" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar12" number_literal >> (binary_expression "0x20 - bVar12" number_literal - identifier)))) ;) (if_statement "if ((uVar10 & 0x20) != 0) {\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }" if (parenthesized_expression "((uVar10 & 0x20) != 0)" ( (binary_expression "(uVar10 & 0x20) != 0" (parenthesized_expression "(uVar10 & 0x20)" ( (binary_expression "uVar10 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar8 = 0;\n            uVar5 = uVar7;\n          }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) })) (expression_statement "puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4);" (assignment_expression "puVar2 = (uint *)((int)&pSrc->a[iRight].colUsed + 4)" identifier = (cast_expression "(uint *)((int)&pSrc->a[iRight].colUsed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSrc->a[iRight].colUsed + 4)" ( (binary_expression "(int)&pSrc->a[iRight].colUsed + 4" (cast_expression "(int)&pSrc->a[iRight].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSrc->a[iRight].colUsed" & (field_expression "pSrc->a[iRight].colUsed" (subscript_expression "pSrc->a[iRight]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | uVar5;" (assignment_expression "*puVar2 = *puVar2 | uVar5" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | uVar5" (pointer_expression "*puVar2" * identifier) | identifier)) ;) (expression_statement "pBVar1 = &pSrc->a[iRight].colUsed;" (assignment_expression "pBVar1 = &pSrc->a[iRight].colUsed" identifier = (pointer_expression "&pSrc->a[iRight].colUsed" & (field_expression "pSrc->a[iRight].colUsed" (subscript_expression "pSrc->a[iRight]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "*(uint *)pBVar1 = (uint)*pBVar1 | uVar8;" (assignment_expression "*(uint *)pBVar1 = (uint)*pBVar1 | uVar8" (pointer_expression "*(uint *)pBVar1" * (cast_expression "(uint *)pBVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(uint)*pBVar1 | uVar8" (binary_expression "(uint)*pBVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) | identifier)) ;) }))) })) }) (else_clause "else {\n      pParse_00 = (Parse *)0x0;\n    }" else (compound_statement "{\n      pParse_00 = (Parse *)0x0;\n    }" { (expression_statement "pParse_00 = (Parse *)0x0;" (assignment_expression "pParse_00 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    pParse_00 = (Parse *)0x0;\n  }" else (compound_statement "{\n    pParse_00 = (Parse *)0x0;\n  }" { (expression_statement "pParse_00 = (Parse *)0x0;" (assignment_expression "pParse_00 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);" (assignment_expression "pEVar9 = sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0)" identifier = (call_expression "sqlite3PExpr(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0)" identifier (argument_list "(pParse_00,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)) {\n    pEVar9->flags = pEVar9->flags | 1;\n    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;\n  }" if (parenthesized_expression "((pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0))" ( (binary_expression "(pEVar9 != (Expr *)0x0) && ((isOuterJoin & 1U) != 0)" (parenthesized_expression "(pEVar9 != (Expr *)0x0)" ( (binary_expression "pEVar9 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((isOuterJoin & 1U) != 0)" ( (binary_expression "(isOuterJoin & 1U) != 0" (parenthesized_expression "(isOuterJoin & 1U)" ( (binary_expression "isOuterJoin & 1U" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    pEVar9->flags = pEVar9->flags | 1;\n    pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;\n  }" { (expression_statement "pEVar9->flags = pEVar9->flags | 1;" (assignment_expression "pEVar9->flags = pEVar9->flags | 1" (field_expression "pEVar9->flags" identifier -> field_identifier) = (binary_expression "pEVar9->flags | 1" (field_expression "pEVar9->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg;" (assignment_expression "pEVar9->iRightJoinTable = (i16)pParse_00->nRangeReg" (field_expression "pEVar9->iRightJoinTable" identifier -> field_identifier) = (cast_expression "(i16)pParse_00->nRangeReg" ( (type_descriptor "i16" type_identifier) ) (field_expression "pParse_00->nRangeReg" identifier -> field_identifier))) ;) })) (expression_statement "pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9);" (assignment_expression "pEVar9 = sqlite3ExprAnd(db,*ppWhere,pEVar9)" identifier = (call_expression "sqlite3ExprAnd(db,*ppWhere,pEVar9)" identifier (argument_list "(db,*ppWhere,pEVar9)" ( identifier , (pointer_expression "*ppWhere" * identifier) , identifier )))) ;) (expression_statement "*ppWhere = pEVar9;" (assignment_expression "*ppWhere = pEVar9" (pointer_expression "*ppWhere" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3\nFUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}\n\n" (function_definition "void __regparm3\nFUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" identifier (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "byte param_7" type_identifier identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" * (cast_expression "(char *)(iVar7 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4d)" ( (binary_expression "iVar7 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }" { (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" identifier = (cast_expression "(undefined4 *)FUN_00055c10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055c10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" for ( (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" ( (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" * (cast_expression "(undefined2 *)(puVar4 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = param_3 * 0x44 + param_2;" (assignment_expression "iVar10 = param_3 * 0x44 + param_2" identifier = (binary_expression "param_3 * 0x44 + param_2" (binary_expression "param_3 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar1 = *(int *)(iVar10 + 0x18);" (assignment_expression "iVar1 = *(int *)(iVar10 + 0x18)" identifier = (pointer_expression "*(int *)(iVar10 + 0x18)" * (cast_expression "(int *)(iVar10 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x18)" ( (binary_expression "iVar10 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar4[0xc] = iVar1;" (assignment_expression "puVar4[0xc] = iVar1" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(iVar10 + 0x30)" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" * (cast_expression "(undefined4 *)(iVar10 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x30)" ( (binary_expression "iVar10 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" if (parenthesized_expression "(param_4 == (int)*(short *)(iVar1 + 0x28))" ( (binary_expression "param_4 == (int)*(short *)(iVar1 + 0x28)" identifier == (cast_expression "(int)*(short *)(iVar1 + 0x28)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar1 + 0x28)" * (cast_expression "(short *)(iVar1 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x28)" ( (binary_expression "iVar1 + 0x28" identifier + number_literal) )))))) )) (compound_statement "{\n        puVar4[8] = 0xffffffff;\n      }" { (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" else (compound_statement "{\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" { (expression_statement "puVar4[8] = param_4;" (assignment_expression "puVar4[8] = param_4" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }" if (parenthesized_expression "((int)param_4 < 0x40)" ( (binary_expression "(int)param_4 < 0x40" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          uVar9 = param_4;\n        }" { (expression_statement "uVar9 = param_4;" (assignment_expression "uVar9 = param_4" identifier = identifier) ;) })) (expression_statement "bVar2 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar9 & 0x1f" identifier = (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar9 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;" (assignment_expression "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2" identifier = (binary_expression "0 << bVar2 | 1U >> 0x20 - bVar2" (binary_expression "0 << bVar2" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar2" number_literal >> (binary_expression "0x20 - bVar2" number_literal - identifier)))) ;) (if_statement "if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" if (parenthesized_expression "((uVar9 & 0x20) != 0)" ( (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" ( (binary_expression "uVar9 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" * (cast_expression "(uint *)(iVar10 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x3c)" ( (binary_expression "iVar10 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" * (cast_expression "(uint *)(iVar10 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x3c)" ( (binary_expression "iVar10 + 0x3c" identifier + number_literal) )))) | identifier)) ;) (expression_statement "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;" (assignment_expression "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" * (cast_expression "(uint *)(iVar10 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x40)" ( (binary_expression "iVar10 + 0x40" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" * (cast_expression "(uint *)(iVar10 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x40)" ( (binary_expression "iVar10 + 0x40" identifier + number_literal) )))) | identifier)) ;) }))) })) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }" if (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" * (cast_expression "(char *)(iVar7 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x4d)" ( (binary_expression "iVar7 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }" { (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" identifier = (cast_expression "(undefined4 *)FUN_00055c10()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00055c10()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" { (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" for ( (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" ( (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" ( (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" ( (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" identifier + (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" * (cast_expression "(undefined2 *)(puVar4 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 9)" ( (binary_expression "puVar4 + 9" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2 = param_5 * 0x44 + param_2;" (assignment_expression "param_2 = param_5 * 0x44 + param_2" identifier = (binary_expression "param_5 * 0x44 + param_2" (binary_expression "param_5 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = *(int *)(param_2 + 0x18);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x18)" identifier = (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "puVar4[0xc] = iVar7;" (assignment_expression "puVar4[0xc] = iVar7" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = *(undefined4 *)(param_2 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(param_2 + 0x30)" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x30)" * (cast_expression "(undefined4 *)(param_2 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" if (parenthesized_expression "(param_6 == (int)*(short *)(iVar7 + 0x28))" ( (binary_expression "param_6 == (int)*(short *)(iVar7 + 0x28)" identifier == (cast_expression "(int)*(short *)(iVar7 + 0x28)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar7 + 0x28)" * (cast_expression "(short *)(iVar7 + 0x28)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))))) )) (compound_statement "{\n          puVar4[8] = 0xffffffff;\n        }" { (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" else (compound_statement "{\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" { (expression_statement "puVar4[8] = param_6;" (assignment_expression "puVar4[8] = param_6" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }" if (parenthesized_expression "((int)param_6 < 0x40)" ( (binary_expression "(int)param_6 < 0x40" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar9 = param_6;\n          }" { (expression_statement "uVar9 = param_6;" (assignment_expression "uVar9 = param_6" identifier = identifier) ;) })) (expression_statement "bVar12 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar12 = (byte)uVar9 & 0x1f" identifier = (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar9 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;" (assignment_expression "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12" identifier = (binary_expression "0 << bVar12 | 1U >> 0x20 - bVar12" (binary_expression "0 << bVar12" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar12" number_literal >> (binary_expression "0x20 - bVar12" number_literal - identifier)))) ;) (if_statement "if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" if (parenthesized_expression "((uVar9 & 0x20) != 0)" ( (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" ( (binary_expression "uVar9 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;" (assignment_expression "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" * (cast_expression "(uint *)(param_2 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) | identifier)) ;) (expression_statement "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" * (cast_expression "(uint *)(param_2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" * (cast_expression "(uint *)(param_2 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) | identifier)) ;) }))) })) }) (else_clause "else {\n      puVar4 = (undefined4 *)0x0;\n    }" else (compound_statement "{\n      puVar4 = (undefined4 *)0x0;\n    }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" else (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "iVar7 = FUN_000896d0(puVar4);" (assignment_expression "iVar7 = FUN_000896d0(puVar4)" identifier = (call_expression "FUN_000896d0(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (if_statement "if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" if (parenthesized_expression "((iVar7 != 0) && ((param_7 & 1) != 0))" ( (binary_expression "(iVar7 != 0) && ((param_7 & 1) != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "((param_7 & 1) != 0)" ( (binary_expression "(param_7 & 1) != 0" (parenthesized_expression "(param_7 & 1)" ( (binary_expression "param_7 & 1" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" { (expression_statement "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;" (assignment_expression "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(short *)(iVar7 + 0x26) = (short)puVar4[7];" (assignment_expression "*(short *)(iVar7 + 0x26) = (short)puVar4[7]" (pointer_expression "*(short *)(iVar7 + 0x26)" * (cast_expression "(short *)(iVar7 + 0x26)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x26)" ( (binary_expression "iVar7 + 0x26" identifier + number_literal) )))) = (cast_expression "(short)puVar4[7]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "puVar4[7]" identifier [ number_literal ]))) ;) })) (expression_statement "uVar8 = FUN_00064db0();" (assignment_expression "uVar8 = FUN_00064db0()" identifier = (call_expression "FUN_00064db0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_8 = uVar8;" (assignment_expression "*param_8 = uVar8" (pointer_expression "*param_8" * identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | IDENT)) ;) }))) })) (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 (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | IDENT)) ;) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })))
(function_definition "void __regparm3\nFUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)\n\n{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00089830(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" (identifier "FUN_00089830") (parameter_list "(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7\n            ,undefined4 *param_8)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "byte param_7" (type_identifier "byte") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 *param_8" (type_identifier "undefined4") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) () ")"))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  uint uVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  iVar7 = *param_1;\n  if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  iVar7 = FUN_000896d0(puVar4);\n  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }\n  uVar8 = FUN_00064db0();\n  *param_8 = uVar8;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" (identifier "iVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" (* "*") (cast_expression "(char *)(iVar7 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x4d)" (( "(") (binary_expression "iVar7 + 0x4d" (identifier "iVar7") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    puVar4 = (undefined4 *)FUN_00055c10();\n    if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }\n    if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00055c10()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00055c10()" (identifier "FUN_00055c10") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *puVar4 = 0;\n      puVar4[0xd] = 0;\n      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }\n      *(undefined1 *)puVar4 = 0x9e;\n      *(undefined2 *)(puVar4 + 9) = 0xffff;\n      iVar10 = param_3 * 0x44 + param_2;\n      puVar4[6] = 1;\n      iVar1 = *(int *)(iVar10 + 0x18);\n      puVar4[0xc] = iVar1;\n      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);\n      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }\n    }" ({ "{") (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" (identifier "puVar4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n          uVar9 != 0; uVar9 = uVar9 - 1) {\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (identifier "uVar9") (= "=") (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (( "(") (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" (number_literal "0x38") (- "-") (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar9 = uVar9 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar11 = 0;\n        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" (* "*") (cast_expression "(undefined1 *)puVar4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0x9e")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" (* "*") (cast_expression "(undefined2 *)(puVar4 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 9)" (( "(") (binary_expression "puVar4 + 9" (identifier "puVar4") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "iVar10 = param_3 * 0x44 + param_2;" (assignment_expression "iVar10 = param_3 * 0x44 + param_2" (identifier "iVar10") (= "=") (binary_expression "param_3 * 0x44 + param_2" (binary_expression "param_3 * 0x44" (identifier "param_3") (* "*") (number_literal "0x44")) (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = *(int *)(iVar10 + 0x18);" (assignment_expression "iVar1 = *(int *)(iVar10 + 0x18)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar10 + 0x18)" (* "*") (cast_expression "(int *)(iVar10 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x18)" (( "(") (binary_expression "iVar10 + 0x18" (identifier "iVar10") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "puVar4[0xc] = iVar1;" (assignment_expression "puVar4[0xc] = iVar1" (subscript_expression "puVar4[0xc]" (identifier "puVar4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "puVar4[7] = *(undefined4 *)(iVar10 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(iVar10 + 0x30)" (subscript_expression "puVar4[7]" (identifier "puVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar10 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x30)" (( "(") (binary_expression "iVar10 + 0x30" (identifier "iVar10") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (param_4 == (int)*(short *)(iVar1 + 0x28)) {\n        puVar4[8] = 0xffffffff;\n      }\n      else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" (if "if") (parenthesized_expression "(param_4 == (int)*(short *)(iVar1 + 0x28))" (( "(") (binary_expression "param_4 == (int)*(short *)(iVar1 + 0x28)" (identifier "param_4") (== "==") (cast_expression "(int)*(short *)(iVar1 + 0x28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(iVar1 + 0x28)" (* "*") (cast_expression "(short *)(iVar1 + 0x28)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x28)" (( "(") (binary_expression "iVar1 + 0x28" (identifier "iVar1") (+ "+") (number_literal "0x28")) () ")")))))) () ")")) (compound_statement "{\n        puVar4[8] = 0xffffffff;\n      }" ({ "{") (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" (else "else") (compound_statement "{\n        puVar4[8] = param_4;\n        uVar9 = 0x3f;\n        if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }\n        bVar2 = (byte)uVar9 & 0x1f;\n        uVar5 = 1 << ((byte)uVar9 & 0x1f);\n        uVar6 = uVar5;\n        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;\n        if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }\n        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;\n        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;\n      }" ({ "{") (expression_statement "puVar4[8] = param_4;" (assignment_expression "puVar4[8] = param_4" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" (identifier "uVar9") (= "=") (number_literal "0x3f")) (; ";")) (if_statement "if ((int)param_4 < 0x40) {\n          uVar9 = param_4;\n        }" (if "if") (parenthesized_expression "((int)param_4 < 0x40)" (( "(") (binary_expression "(int)param_4 < 0x40" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n          uVar9 = param_4;\n        }" ({ "{") (expression_statement "uVar9 = param_4;" (assignment_expression "uVar9 = param_4" (identifier "uVar9") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "bVar2 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar2 = (byte)uVar9 & 0x1f" (identifier "bVar2") (= "=") (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" (identifier "uVar5") (= "=") (binary_expression "1 << ((byte)uVar9 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar9 & 0x1f)" (( "(") (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;" (assignment_expression "uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2" (identifier "uVar3") (= "=") (binary_expression "0 << bVar2 | 1U >> 0x20 - bVar2" (binary_expression "0 << bVar2" (number_literal "0") (<< "<<") (identifier "bVar2")) (| "|") (binary_expression "1U >> 0x20 - bVar2" (number_literal "1U") (>> ">>") (binary_expression "0x20 - bVar2" (number_literal "0x20") (- "-") (identifier "bVar2"))))) (; ";")) (if_statement "if ((uVar9 & 0x20) != 0) {\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" (if "if") (parenthesized_expression "((uVar9 & 0x20) != 0)" (( "(") (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" (( "(") (binary_expression "uVar9 & 0x20" (identifier "uVar9") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar6 = 0;\n          uVar3 = uVar5;\n        }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" (identifier "uVar3") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar10 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x3c)" (( "(") (binary_expression "iVar10 + 0x3c" (identifier "iVar10") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar10 + 0x3c) | uVar6" (pointer_expression "*(uint *)(iVar10 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar10 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x3c)" (( "(") (binary_expression "iVar10 + 0x3c" (identifier "iVar10") (+ "+") (number_literal "0x3c")) () ")")))) (| "|") (identifier "uVar6"))) (; ";")) (expression_statement "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;" (assignment_expression "*(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" (* "*") (cast_expression "(uint *)(iVar10 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x40)" (( "(") (binary_expression "iVar10 + 0x40" (identifier "iVar10") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar10 + 0x40) | uVar3" (pointer_expression "*(uint *)(iVar10 + 0x40)" (* "*") (cast_expression "(uint *)(iVar10 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x40)" (( "(") (binary_expression "iVar10 + 0x40" (identifier "iVar10") (+ "+") (number_literal "0x40")) () ")")))) (| "|") (identifier "uVar3"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (*(char *)(iVar7 + 0x4d) == '\0') {\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }\n    else {\n      puVar4 = (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar7 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar7 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar7 + 0x4d)" (* "*") (cast_expression "(char *)(iVar7 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x4d)" (( "(") (binary_expression "iVar7 + 0x4d" (identifier "iVar7") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      puVar4 = (undefined4 *)FUN_00055c10();\n      if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }\n    }" ({ "{") (expression_statement "puVar4 = (undefined4 *)FUN_00055c10();" (assignment_expression "puVar4 = (undefined4 *)FUN_00055c10()" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00055c10()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00055c10()" (identifier "FUN_00055c10") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar4 = 0;\n        puVar4[0xd] = 0;\n        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);\n        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }\n        *(undefined1 *)puVar4 = 0x9e;\n        *(undefined2 *)(puVar4 + 9) = 0xffff;\n        param_2 = param_5 * 0x44 + param_2;\n        puVar4[6] = 1;\n        iVar7 = *(int *)(param_2 + 0x18);\n        puVar4[0xc] = iVar7;\n        puVar4[7] = *(undefined4 *)(param_2 + 0x30);\n        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }\n      }" ({ "{") (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" (identifier "puVar4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);" (assignment_expression "puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;\n            uVar9 != 0; uVar9 = uVar9 - 1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (identifier "uVar9") (= "=") (binary_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (parenthesized_expression "(0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))" (( "(") (binary_expression "0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc)" (number_literal "0x38") (- "-") (cast_expression "(int)((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(puVar4 + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(puVar4 + 1) & 0xfffffffc" (call_expression "(uint)(puVar4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar9 = uVar9 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;\n        }" ({ "{") (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar12 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar12 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar12 * -2 + 1" (binary_expression "puVar11 + (uint)bVar12 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar12 * -2" (cast_expression "(uint)bVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)puVar4 = 0x9e;" (assignment_expression "*(undefined1 *)puVar4 = 0x9e" (pointer_expression "*(undefined1 *)puVar4" (* "*") (cast_expression "(undefined1 *)puVar4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0x9e")) (; ";")) (expression_statement "*(undefined2 *)(puVar4 + 9) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar4 + 9) = 0xffff" (pointer_expression "*(undefined2 *)(puVar4 + 9)" (* "*") (cast_expression "(undefined2 *)(puVar4 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 9)" (( "(") (binary_expression "puVar4 + 9" (identifier "puVar4") (+ "+") (number_literal "9")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "param_2 = param_5 * 0x44 + param_2;" (assignment_expression "param_2 = param_5 * 0x44 + param_2" (identifier "param_2") (= "=") (binary_expression "param_5 * 0x44 + param_2" (binary_expression "param_5 * 0x44" (identifier "param_5") (* "*") (number_literal "0x44")) (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "puVar4[6] = 1;" (assignment_expression "puVar4[6] = 1" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar7 = *(int *)(param_2 + 0x18);" (assignment_expression "iVar7 = *(int *)(param_2 + 0x18)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_2 + 0x18)" (* "*") (cast_expression "(int *)(param_2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "puVar4[0xc] = iVar7;" (assignment_expression "puVar4[0xc] = iVar7" (subscript_expression "puVar4[0xc]" (identifier "puVar4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "puVar4[7] = *(undefined4 *)(param_2 + 0x30);" (assignment_expression "puVar4[7] = *(undefined4 *)(param_2 + 0x30)" (subscript_expression "puVar4[7]" (identifier "puVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (param_6 == (int)*(short *)(iVar7 + 0x28)) {\n          puVar4[8] = 0xffffffff;\n        }\n        else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" (if "if") (parenthesized_expression "(param_6 == (int)*(short *)(iVar7 + 0x28))" (( "(") (binary_expression "param_6 == (int)*(short *)(iVar7 + 0x28)" (identifier "param_6") (== "==") (cast_expression "(int)*(short *)(iVar7 + 0x28)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(iVar7 + 0x28)" (* "*") (cast_expression "(short *)(iVar7 + 0x28)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x28)" (( "(") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28")) () ")")))))) () ")")) (compound_statement "{\n          puVar4[8] = 0xffffffff;\n        }" ({ "{") (expression_statement "puVar4[8] = 0xffffffff;" (assignment_expression "puVar4[8] = 0xffffffff" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" (else "else") (compound_statement "{\n          puVar4[8] = param_6;\n          uVar9 = 0x3f;\n          if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }\n          bVar12 = (byte)uVar9 & 0x1f;\n          uVar5 = 1 << ((byte)uVar9 & 0x1f);\n          uVar6 = uVar5;\n          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;\n          if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }\n          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;\n          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;\n        }" ({ "{") (expression_statement "puVar4[8] = param_6;" (assignment_expression "puVar4[8] = param_6" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "uVar9 = 0x3f;" (assignment_expression "uVar9 = 0x3f" (identifier "uVar9") (= "=") (number_literal "0x3f")) (; ";")) (if_statement "if ((int)param_6 < 0x40) {\n            uVar9 = param_6;\n          }" (if "if") (parenthesized_expression "((int)param_6 < 0x40)" (( "(") (binary_expression "(int)param_6 < 0x40" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n            uVar9 = param_6;\n          }" ({ "{") (expression_statement "uVar9 = param_6;" (assignment_expression "uVar9 = param_6" (identifier "uVar9") (= "=") (identifier "param_6")) (; ";")) (} "}"))) (expression_statement "bVar12 = (byte)uVar9 & 0x1f;" (assignment_expression "bVar12 = (byte)uVar9 & 0x1f" (identifier "bVar12") (= "=") (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar5 = 1 << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar5 = 1 << ((byte)uVar9 & 0x1f)" (identifier "uVar5") (= "=") (binary_expression "1 << ((byte)uVar9 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar9 & 0x1f)" (( "(") (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;" (assignment_expression "uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12" (identifier "uVar3") (= "=") (binary_expression "0 << bVar12 | 1U >> 0x20 - bVar12" (binary_expression "0 << bVar12" (number_literal "0") (<< "<<") (identifier "bVar12")) (| "|") (binary_expression "1U >> 0x20 - bVar12" (number_literal "1U") (>> ">>") (binary_expression "0x20 - bVar12" (number_literal "0x20") (- "-") (identifier "bVar12"))))) (; ";")) (if_statement "if ((uVar9 & 0x20) != 0) {\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" (if "if") (parenthesized_expression "((uVar9 & 0x20) != 0)" (( "(") (binary_expression "(uVar9 & 0x20) != 0" (parenthesized_expression "(uVar9 & 0x20)" (( "(") (binary_expression "uVar9 & 0x20" (identifier "uVar9") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar6 = 0;\n            uVar3 = uVar5;\n          }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" (identifier "uVar3") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;" (assignment_expression "*(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" (* "*") (cast_expression "(uint *)(param_2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (binary_expression "*(uint *)(param_2 + 0x40) | uVar3" (pointer_expression "*(uint *)(param_2 + 0x40)" (* "*") (cast_expression "(uint *)(param_2 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (| "|") (identifier "uVar3"))) (; ";")) (expression_statement "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;" (assignment_expression "*(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" (* "*") (cast_expression "(uint *)(param_2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(uint *)(param_2 + 0x3c) | uVar6" (pointer_expression "*(uint *)(param_2 + 0x3c)" (* "*") (cast_expression "(uint *)(param_2 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (| "|") (identifier "uVar6"))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n      puVar4 = (undefined4 *)0x0;\n    }" (else "else") (compound_statement "{\n      puVar4 = (undefined4 *)0x0;\n    }" ({ "{") (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" (else "else") (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "iVar7 = FUN_000896d0(puVar4);" (assignment_expression "iVar7 = FUN_000896d0(puVar4)" (identifier "iVar7") (= "=") (call_expression "FUN_000896d0(puVar4)" (identifier "FUN_000896d0") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")")))) (; ";")) (if_statement "if ((iVar7 != 0) && ((param_7 & 1) != 0)) {\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" (if "if") (parenthesized_expression "((iVar7 != 0) && ((param_7 & 1) != 0))" (( "(") (binary_expression "(iVar7 != 0) && ((param_7 & 1) != 0)" (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((param_7 & 1) != 0)" (( "(") (binary_expression "(param_7 & 1) != 0" (parenthesized_expression "(param_7 & 1)" (( "(") (binary_expression "param_7 & 1" (identifier "param_7") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;\n    *(short *)(iVar7 + 0x26) = (short)puVar4[7];\n  }" ({ "{") (expression_statement "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;" (assignment_expression "*(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" (* "*") (cast_expression "(uint *)(iVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar7 + 4) | 1" (pointer_expression "*(uint *)(iVar7 + 4)" (* "*") (cast_expression "(uint *)(iVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(short *)(iVar7 + 0x26) = (short)puVar4[7];" (assignment_expression "*(short *)(iVar7 + 0x26) = (short)puVar4[7]" (pointer_expression "*(short *)(iVar7 + 0x26)" (* "*") (cast_expression "(short *)(iVar7 + 0x26)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x26)" (( "(") (binary_expression "iVar7 + 0x26" (identifier "iVar7") (+ "+") (number_literal "0x26")) () ")")))) (= "=") (cast_expression "(short)puVar4[7]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "puVar4[7]" (identifier "puVar4") ([ "[") (number_literal "7") (] "]")))) (; ";")) (} "}"))) (expression_statement "uVar8 = FUN_00064db0();" (assignment_expression "uVar8 = FUN_00064db0()" (identifier "uVar8") (= "=") (call_expression "FUN_00064db0()" (identifier "FUN_00064db0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_8 = uVar8;" (assignment_expression "*param_8 = uVar8" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (identifier "uVar8")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void __regparm3
function_1(type_1 *pParse,type_2 *pSrc,int iLeft,int var_6,int iRight,int var_12,
            int var_16,type_3 **ppWhere)

{
  type_4 *var_8;
  type_5 *puVar2;
  type_6 *db;
  type_7 *pTVar3;
  type_8 var_7;
  type_5 var_10;
  type_9 *var_3;
  type_5 uVar7;
  type_5 var_9;
  type_1 *var_11;
  type_3 *var_15;
  type_5 var_4;
  type_9 *var_5;
  type_8 var_13;
  int in_stack_ffffffc8;
  type_3 *in_stack_ffffffcc;
  type_3 *in_stack_ffffffd0;
  type_9 in_stack_ffffffd4;
  
  var_13 = 0;
  db = pParse->db;
  if (db->mallocFailed == '\0') {
    in_stack_ffffffd0 = (type_3 *)0x8985b;
    var_3 = (type_9 *)var_1(db,var_2(pSrc,in_stack_ffffffd4));
    if (var_3 != (type_9 *)0x0) {
      *var_3 = 0;
      var_3[0xd] = 0;
      var_5 = (type_9 *)((type_5)(var_3 + 1) & 0xfffffffc);
      for (var_4 = (type_5)((int)var_3 + (0x38 - (int)((type_5)(var_3 + 1) & 0xfffffffc))) >> 2;
          var_4 != 0; var_4 = var_4 - 1) {
        *var_5 = 0;
        var_5 = var_5 + (type_5)var_13 * -2 + 1;
      }
      *(type_10 *)var_3 = 0x9e;
      *(type_11 *)(var_3 + 9) = 0xffff;
      var_3[6] = 1;
      pTVar3 = pSrc->a[iLeft].pTab;
      var_3[0xc] = pTVar3;
      var_3[7] = pSrc->a[iLeft].iCursor;
      if (var_6 == pTVar3->iPKey) {
        var_3[8] = 0xffffffff;
      }
      else {
        var_3[8] = var_6;
        var_4 = 0x3f;
        if (var_6 < 0x40) {
          var_4 = var_6;
        }
        var_7 = (type_8)var_4 & 0x1f;
        uVar7 = 1 << ((type_8)var_4 & 0x1f);
        var_9 = uVar7;
        var_10 = 0 << var_7 | 1U >> 0x20 - var_7;
        if ((var_4 & 0x20) != 0) {
          var_9 = 0;
          var_10 = uVar7;
        }
        var_8 = &pSrc->a[iLeft].colUsed;
        *(type_5 *)var_8 = (type_5)*var_8 | var_9;
        puVar2 = (type_5 *)((int)&pSrc->a[iLeft].colUsed + 4);
        *puVar2 = *puVar2 | var_10;
      }
    }
    if (db->mallocFailed == '\0') {
      in_stack_ffffffd0 = (type_3 *)0x89910;
      var_11 = (type_1 *)var_1(db,var_2(pSrc,in_stack_ffffffd4));
      if (var_11 != (type_1 *)0x0) {
        var_11->db = (type_6 *)0x0;
        var_3 = (type_9 *)((type_5)&var_11->zErrMsg & 0xfffffffc);
        var_11->iSelfTab = 0;
        var_4 = (type_5)((int)var_11 + (0x38 - (int)var_3)) >> 2;
        for (; var_4 != 0; var_4 = var_4 - 1) {
          *var_3 = 0;
          var_3 = var_3 + (type_5)var_13 * -2 + 1;
        }
        *(type_10 *)&var_11->db = 0x9e;
        *(type_11 *)&var_11->nErr = 0xffff;
        var_11->disableLookaside = '\x01';
        var_11->disableVtab = '\0';
        *(type_11 *)&var_11->field_0x1a = 0;
        pTVar3 = pSrc->a[iRight].pTab;
        var_11->szOpAlloc = (int)pTVar3;
        var_11->nRangeReg = pSrc->a[iRight].iCursor;
        if (var_12 == pTVar3->iPKey) {
          var_11->iRangeReg = -1;
        }
        else {
          var_11->iRangeReg = var_12;
          var_4 = 0x3f;
          if (var_12 < 0x40) {
            var_4 = var_12;
          }
          var_13 = (type_8)var_4 & 0x1f;
          uVar7 = 1 << ((type_8)var_4 & 0x1f);
          var_9 = uVar7;
          var_10 = 0 << var_13 | 1U >> 0x20 - var_13;
          if ((var_4 & 0x20) != 0) {
            var_9 = 0;
            var_10 = uVar7;
          }
          puVar2 = (type_5 *)((int)&pSrc->a[iRight].colUsed + 4);
          *puVar2 = *puVar2 | var_10;
          var_8 = &pSrc->a[iRight].colUsed;
          *(type_5 *)var_8 = (type_5)*var_8 | var_9;
        }
      }
    }
    else {
      var_11 = (type_1 *)0x0;
    }
  }
  else {
    var_11 = (type_1 *)0x0;
  }
  var_15 = var_14(var_11,in_stack_ffffffc8,in_stack_ffffffcc,in_stack_ffffffd0);
  if ((var_15 != (type_3 *)0x0) && ((var_16 & 1U) != 0)) {
    var_15->flags = var_15->flags | 1;
    var_15->iRightJoinTable = (type_12)var_11->nRangeReg;
  }
  var_15 = var_17(db,*ppWhere,var_15);
  *ppWhere = var_15;
  return;
}


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

void __regparm3
MASKED(int *param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,byte param_7
            ,undefined4 *param_8)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  byte bVar12;
  
  bVar12 = 0;
  iVar7 = *param_1;
  if (*(char *)(iVar7 + 0x4d) == '\0') {
    puVar4 = (undefined4 *)FUN_00055c10();
    if (puVar4 != (undefined4 *)0x0) {
      *puVar4 = 0;
      puVar4[0xd] = 0;
      puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);
      for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;
          uVar9 != 0; uVar9 = uVar9 - 1) {
        *puVar11 = 0;
        puVar11 = puVar11 + (uint)bVar12 * -2 + 1;
      }
      *(undefined1 *)puVar4 = 0x9e;
      *(undefined2 *)(puVar4 + 9) = 0xffff;
      iVar10 = param_3 * 0x44 + param_2;
      puVar4[6] = 1;
      iVar1 = *(int *)(iVar10 + 0x18);
      puVar4[0xc] = iVar1;
      puVar4[7] = *(undefined4 *)(iVar10 + 0x30);
      if (param_4 == (int)*(short *)(iVar1 + 0x28)) {
        puVar4[8] = 0xffffffff;
      }
      else {
        puVar4[8] = param_4;
        uVar9 = 0x3f;
        if ((int)param_4 < 0x40) {
          uVar9 = param_4;
        }
        bVar2 = (byte)uVar9 & 0x1f;
        uVar5 = 1 << ((byte)uVar9 & 0x1f);
        uVar6 = uVar5;
        uVar3 = 0 << bVar2 | 1U >> 0x20 - bVar2;
        if ((uVar9 & 0x20) != 0) {
          uVar6 = 0;
          uVar3 = uVar5;
        }
        *(uint *)(iVar10 + 0x3c) = *(uint *)(iVar10 + 0x3c) | uVar6;
        *(uint *)(iVar10 + 0x40) = *(uint *)(iVar10 + 0x40) | uVar3;
      }
    }
    if (*(char *)(iVar7 + 0x4d) == '\0') {
      puVar4 = (undefined4 *)FUN_00055c10();
      if (puVar4 != (undefined4 *)0x0) {
        *puVar4 = 0;
        puVar4[0xd] = 0;
        puVar11 = (undefined4 *)((uint)(puVar4 + 1) & 0xfffffffc);
        for (uVar9 = (uint)((int)puVar4 + (0x38 - (int)((uint)(puVar4 + 1) & 0xfffffffc))) >> 2;
            uVar9 != 0; uVar9 = uVar9 - 1) {
          *puVar11 = 0;
          puVar11 = puVar11 + (uint)bVar12 * -2 + 1;
        }
        *(undefined1 *)puVar4 = 0x9e;
        *(undefined2 *)(puVar4 + 9) = 0xffff;
        param_2 = param_5 * 0x44 + param_2;
        puVar4[6] = 1;
        iVar7 = *(int *)(param_2 + 0x18);
        puVar4[0xc] = iVar7;
        puVar4[7] = *(undefined4 *)(param_2 + 0x30);
        if (param_6 == (int)*(short *)(iVar7 + 0x28)) {
          puVar4[8] = 0xffffffff;
        }
        else {
          puVar4[8] = param_6;
          uVar9 = 0x3f;
          if ((int)param_6 < 0x40) {
            uVar9 = param_6;
          }
          bVar12 = (byte)uVar9 & 0x1f;
          uVar5 = 1 << ((byte)uVar9 & 0x1f);
          uVar6 = uVar5;
          uVar3 = 0 << bVar12 | 1U >> 0x20 - bVar12;
          if ((uVar9 & 0x20) != 0) {
            uVar6 = 0;
            uVar3 = uVar5;
          }
          *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) | uVar3;
          *(uint *)(param_2 + 0x3c) = *(uint *)(param_2 + 0x3c) | uVar6;
        }
      }
    }
    else {
      puVar4 = (undefined4 *)0x0;
    }
  }
  else {
    puVar4 = (undefined4 *)0x0;
  }
  iVar7 = FUN_000896d0(puVar4);
  if ((iVar7 != 0) && ((param_7 & 1) != 0)) {
    *(uint *)(iVar7 + 4) = *(uint *)(iVar7 + 4) | 1;
    *(short *)(iVar7 + 0x26) = (short)puVar4[7];
  }
  uVar8 = FUN_00064db0();
  *param_8 = uVar8;
  return;
}

