
void applyNumericAffinity(Mem *pRec,int bTryForInt)

{
  undefined1 *puVar1;
  undefined1 *puVar2;
  u8 enc;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  undefined *puVar13;
  int iVar14;
  ushort uVar15;
  Mem *pTo;
  char *pcVar16;
  Mem *pMem_1;
  uint length;
  uint uVar17;
  uint in_t0;
  double rValue;
  i64 iValue;
  char *pcStack_1c;
  
  puVar13 = PTR___stack_chk_guard_00190e24;
  pMem_1 = (Mem *)&rValue;
  enc = pRec->enc;
  length = pRec->n;
  pTo = (Mem *)pRec->z;
  pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24;
  iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc);
  if (iVar14 != 0) {
    pMem_1 = (Mem *)&iValue;
    length = pRec->n;
    pTo = (Mem *)pRec->z;
    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);
    if (iVar14 == 0) {
      uVar15 = pRec->flags | 4;
      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;
      (pRec->u).pDef = (FuncDef *)iValue._0_4_;
      pTo = iValue._0_4_;
      pMem_1 = iValue._4_4_;
    }
    else {
      uVar15 = pRec->flags | 8;
      pRec->flags = uVar15;
      (pRec->u).r = rValue;
      if (bTryForInt != 0) {
        pMem_1 = (Mem *)&pRec->flags;
        pTo = pRec;
        sqlite3VdbeIntegerAffinity(pRec,pMem_1);
        pRec->flags = pRec->flags & 0xfffd;
        goto LAB_000582d8;
      }
    }
    pRec->flags = uVar15 & 0xfffd;
  }
LAB_000582d8:
  if (pcStack_1c == *(char **)puVar13) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_00190df8)();
  if ((pTo->flags & 0x2400) == 0) {
    uVar3 = (uint)pMem_1 & 3;
    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);
    uVar4 = (uint)puVar1 & 3;
    iVar14 = *(int *)(puVar1 + -uVar4);
    uVar17 = (uint)&pMem_1->flags & 3;
    pcVar16 = pMem_1->z;
    uVar5 = (uint)&pMem_1->n & 3;
    iVar6 = *(int *)((int)&pMem_1->n - uVar5);
    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);
    uVar7 = (uint)puVar1 & 3;
    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);
    uVar8 = (uint)puVar2 & 3;
    uVar11 = *(uint *)(puVar2 + -uVar8);
    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);
    uVar9 = (uint)puVar2 & 3;
    uVar12 = *(uint *)(puVar2 + -uVar9);
    uVar10 = (uint)&pMem_1->eSubtype & 3;
    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |
             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |
             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;
    (pTo->u).nZero =
         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &
         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;
    *(uint *)((int)&pTo->u + 4) =
         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &
         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;
    pTo->flags = (short)(uVar17 >> 0x10);
    pTo->enc = (char)(uVar17 >> 8);
    pTo->eSubtype = (char)uVar17;
    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &
             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;
    pTo->z = pcVar16;
    if ((pMem_1->flags & 0x800) == 0) {
      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;
    }
    return;
  }
  vdbeClrCopy(pTo,pMem_1,length);
  return;
}



void FUN_00058270(uint *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  undefined *puVar14;
  int iVar15;
  ushort uVar16;
  uint *puVar17;
  uint *puVar18;
  uint **ppuVar19;
  uint uVar20;
  uint in_t0;
  undefined8 local_30;
  uint *local_28;
  uint **local_24;
  int local_1c;
  
  puVar14 = PTR___stack_chk_guard_00190e24;
  ppuVar19 = (uint **)&local_30;
  uVar20 = param_1[3];
  puVar17 = (uint *)param_1[4];
  local_1c = *(int *)PTR___stack_chk_guard_00190e24;
  iVar15 = FUN_0003f2e8();
  if (iVar15 != 0) {
    ppuVar19 = &local_28;
    uVar20 = param_1[3];
    puVar17 = (uint *)param_1[4];
    iVar15 = FUN_0003faa0();
    if (iVar15 == 0) {
      uVar16 = *(ushort *)(param_1 + 2) | 4;
      param_1[1] = (uint)local_24;
      *param_1 = (uint)local_28;
      puVar17 = local_28;
      ppuVar19 = local_24;
    }
    else {
      uVar16 = *(ushort *)(param_1 + 2) | 8;
      *(ushort *)(param_1 + 2) = uVar16;
      *(undefined8 *)param_1 = local_30;
      if (param_2 != 0) {
        ppuVar19 = (uint **)(param_1 + 2);
        puVar17 = param_1;
        FUN_00058184();
        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;
        goto LAB_000582d8;
      }
    }
    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;
  }
LAB_000582d8:
  if (local_1c == *(int *)puVar14) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_00190df8)();
  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {
    FUN_0004de90();
  }
  uVar1 = (uint)ppuVar19 & 3;
  uVar2 = (uint)(ppuVar19 + 1) & 3;
  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);
  uVar3 = (uint)(ppuVar19 + 2) & 3;
  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);
  puVar18 = ppuVar19[4];
  uVar4 = (uint)(ppuVar19 + 3) & 3;
  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);
  uVar7 = (int)ppuVar19 + 3U & 3;
  uVar8 = (int)ppuVar19 + 7U & 3;
  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);
  uVar9 = (int)ppuVar19 + 0xfU & 3;
  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);
  uVar10 = (int)ppuVar19 + 0xbU & 3;
  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);
  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)
             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;
  puVar17[1] = (iVar15 << uVar2 * 8 |
               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &
               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;
  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &
               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;
  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &
               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;
  puVar17[4] = (uint)puVar18;
  if (((uint)ppuVar19[2] & 0x8000000) == 0) {
    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;
  }
  return;
}


lui gp,0x14
addiu gp,gp,0x6b0
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7de0(gp)
sw s1,0x38(sp)
addiu t9,t9,-0xd18
sw gp,0x10(sp)
sw s3,0x40(sp)
or s3,a1,zero
sw s0,0x34(sp)
or s0,a0,zero
sw ra,0x44(sp)
addiu a1,sp,0x18
sw s2,0x3c(sp)
lw s1,-0x7afc(gp)
lbu s2,0xa(a0)
lw a2,0xc(a0)
lw a0,0x10(a0)
lw v0,0x0(s1)
or a3,s2,zero
sw v0,0x2c(sp)
bal 0x0003f2e8
_nop
bne v0,zero,0x00058300
_lw gp,0x10(sp)
lw v1,0x2c(sp)
lw v0,0x0(s1)
bne v1,v0,0x00058388
_lw ra,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x48
lw t9,-0x7de0(gp)
addiu a1,sp,0x20
lw a2,0xc(s0)
or a3,s2,zero
addiu t9,t9,-0x560
bal 0x0003faa0
_lw a0,0x10(s0)
bne v0,zero,0x00058348
_lw gp,0x10(sp)
lhu v0,0x8(s0)
lw a1,0x24(sp)
lw a0,0x20(sp)
ori v0,v0,0x4
sw a1,0x4(s0)
sw a0,0x0(s0)
andi v0,v0,0xfffd
b 0x000582d8
_sh v0,0x8(s0)
ldc1 f0,0x18(sp)
lhu v0,0x8(s0)
ori v0,v0,0x8
sh v0,0x8(s0)
beq s3,zero,0x0005833c
_sdc1 f0,0x0(s0)
lw t9,-0x7d7c(gp)
addiu a1,s0,0x8
addiu t9,t9,-0x7e7c
bal 0x00058184
_or a0,s0,zero
lhu v0,0x8(s0)
lw gp,0x10(sp)
andi v0,v0,0xfffd
b 0x000582d8
_sh v0,0x8(s0)
lw t9,-0x7b28(gp)
jalr t9
_nop
(translation_unit "void FUN_00058270(uint *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00058270(uint *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00058270(uint *param_1,int param_2)" identifier (parameter_list "(uint *param_1,int param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "ushort uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint **ppuVar19;" type_identifier (pointer_declarator "**ppuVar19" * (pointer_declarator "*ppuVar19" * identifier)) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint in_t0;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (declaration "uint *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint **local_24;" type_identifier (pointer_declarator "**local_24" * (pointer_declarator "*local_24" * identifier)) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar14 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar14 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "ppuVar19 = (uint **)&local_30;" (assignment_expression "ppuVar19 = (uint **)&local_30" identifier = (cast_expression "(uint **)&local_30" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" identifier = (cast_expression "(uint *)param_1[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar15 = FUN_0003f2e8();" (assignment_expression "iVar15 = FUN_0003f2e8()" identifier = (call_expression "FUN_0003f2e8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" { (expression_statement "ppuVar19 = &local_28;" (assignment_expression "ppuVar19 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" identifier = (cast_expression "(uint *)param_1[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "iVar15 = FUN_0003faa0();" (assignment_expression "iVar15 = FUN_0003faa0()" identifier = (call_expression "FUN_0003faa0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }" { (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 4;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 4" identifier = (binary_expression "*(ushort *)(param_1 + 2) | 4" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "param_1[1] = (uint)local_24;" (assignment_expression "param_1[1] = (uint)local_24" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*param_1 = (uint)local_28;" (assignment_expression "*param_1 = (uint)local_28" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)local_28" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) (expression_statement "ppuVar19 = local_24;" (assignment_expression "ppuVar19 = local_24" identifier = identifier) ;) }) (else_clause "else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" else (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" { (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 8;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 8" identifier = (binary_expression "*(ushort *)(param_1 + 2) | 8" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(ushort *)(param_1 + 2) = uVar16;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)param_1 = local_30;" (assignment_expression "*(undefined8 *)param_1 = local_30" (pointer_expression "*(undefined8 *)param_1" * (cast_expression "(undefined8 *)param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" { (expression_statement "ppuVar19 = (uint **)(param_1 + 2);" (assignment_expression "ppuVar19 = (uint **)(param_1 + 2)" identifier = (cast_expression "(uint **)(param_1 + 2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" identifier = identifier) ;) (expression_statement "FUN_00058184();" (call_expression "FUN_00058184()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) & number_literal)) ;) (goto_statement "goto LAB_000582d8;" goto statement_identifier ;) })) }))) (expression_statement "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "uVar16 & 0xfffd" identifier & number_literal)) ;) })) (labeled_statement "LAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar14) {\n    return;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar14)" ( (binary_expression "local_1c == *(int *)puVar14" identifier == (pointer_expression "*(int *)puVar14" * (cast_expression "(int *)puVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (while_statement "while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }" while (parenthesized_expression "((*(ushort *)(puVar17 + 2) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(puVar17 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(puVar17 + 2) & 0x2400)" ( (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0004de90();\n  }" { (expression_statement "FUN_0004de90();" (call_expression "FUN_0004de90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar1 = (uint)ppuVar19 & 3;" (assignment_expression "uVar1 = (uint)ppuVar19 & 3" identifier = (binary_expression "(uint)ppuVar19 & 3" (cast_expression "(uint)ppuVar19" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar2 = (uint)(ppuVar19 + 1) & 3;" (assignment_expression "uVar2 = (uint)(ppuVar19 + 1) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 1) & 3" (call_expression "(uint)(ppuVar19 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 1)" ( (binary_expression "ppuVar19 + 1" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);" (assignment_expression "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 1) - uVar2)" * (cast_expression "(int *)((int)(ppuVar19 + 1) - uVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 1) - uVar2)" ( (binary_expression "(int)(ppuVar19 + 1) - uVar2" (cast_expression "(int)(ppuVar19 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 1)" ( (binary_expression "ppuVar19 + 1" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "uVar3 = (uint)(ppuVar19 + 2) & 3;" (assignment_expression "uVar3 = (uint)(ppuVar19 + 2) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 2) & 3" (call_expression "(uint)(ppuVar19 + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 2)" ( (binary_expression "ppuVar19 + 2" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);" (assignment_expression "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 2) - uVar3)" * (cast_expression "(int *)((int)(ppuVar19 + 2) - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 2) - uVar3)" ( (binary_expression "(int)(ppuVar19 + 2) - uVar3" (cast_expression "(int)(ppuVar19 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 2)" ( (binary_expression "ppuVar19 + 2" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "puVar18 = ppuVar19[4];" (assignment_expression "puVar18 = ppuVar19[4]" identifier = (subscript_expression "ppuVar19[4]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = (uint)(ppuVar19 + 3) & 3;" (assignment_expression "uVar4 = (uint)(ppuVar19 + 3) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 3) & 3" (call_expression "(uint)(ppuVar19 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 3)" ( (binary_expression "ppuVar19 + 3" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);" (assignment_expression "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 3) - uVar4)" * (cast_expression "(int *)((int)(ppuVar19 + 3) - uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 3) - uVar4)" ( (binary_expression "(int)(ppuVar19 + 3) - uVar4" (cast_expression "(int)(ppuVar19 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 3)" ( (binary_expression "ppuVar19 + 3" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "uVar7 = (int)ppuVar19 + 3U & 3;" (assignment_expression "uVar7 = (int)ppuVar19 + 3U & 3" identifier = (binary_expression "(int)ppuVar19 + 3U & 3" (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar8 = (int)ppuVar19 + 7U & 3;" (assignment_expression "uVar8 = (int)ppuVar19 + 7U & 3" identifier = (binary_expression "(int)ppuVar19 + 7U & 3" (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);" (assignment_expression "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 7U) - uVar8)" * (cast_expression "(uint *)(((int)ppuVar19 + 7U) - uVar8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 7U) - uVar8)" ( (binary_expression "((int)ppuVar19 + 7U) - uVar8" (parenthesized_expression "((int)ppuVar19 + 7U)" ( (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "uVar9 = (int)ppuVar19 + 0xfU & 3;" (assignment_expression "uVar9 = (int)ppuVar19 + 0xfU & 3" identifier = (binary_expression "(int)ppuVar19 + 0xfU & 3" (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);" (assignment_expression "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" * (cast_expression "(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 0xfU) - uVar9)" ( (binary_expression "((int)ppuVar19 + 0xfU) - uVar9" (parenthesized_expression "((int)ppuVar19 + 0xfU)" ( (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "uVar10 = (int)ppuVar19 + 0xbU & 3;" (assignment_expression "uVar10 = (int)ppuVar19 + 0xbU & 3" identifier = (binary_expression "(int)ppuVar19 + 0xbU & 3" (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);" (assignment_expression "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" * (cast_expression "(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 0xbU) - uVar10)" ( (binary_expression "((int)ppuVar19 + 0xbU) - uVar10" (parenthesized_expression "((int)ppuVar19 + 0xbU)" ( (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;" (assignment_expression "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*puVar17" * identifier) = (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8" (parenthesized_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)" ( (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8" (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8" (pointer_expression "*(int *)((int)ppuVar19 - uVar1)" * (cast_expression "(int *)((int)ppuVar19 - uVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar19 - uVar1)" ( (binary_expression "(int)ppuVar19 - uVar1" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) << (binary_expression "uVar1 * 8" identifier * number_literal)) | (binary_expression "in_t0 & 0xffffffffU >> (4 - uVar1) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar1) * 8" number_literal >> (binary_expression "(4 - uVar1) * 8" (parenthesized_expression "(4 - uVar1)" ( (binary_expression "4 - uVar1" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar7 + 1) * 8" number_literal << (binary_expression "(uVar7 + 1) * 8" (parenthesized_expression "(uVar7 + 1)" ( (binary_expression "uVar7 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7)" * (cast_expression "(uint *)(((int)ppuVar19 + 3U) - uVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 3U) - uVar7)" ( (binary_expression "((int)ppuVar19 + 3U) - uVar7" (parenthesized_expression "((int)ppuVar19 + 3U)" ( (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) )))) >> (binary_expression "(3 - uVar7) * 8" (parenthesized_expression "(3 - uVar7)" ( (binary_expression "3 - uVar7" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;" (assignment_expression "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8" (parenthesized_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8)" ( (binary_expression "iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "iVar15 << uVar2 * 8" identifier << (binary_expression "uVar2 * 8" identifier * number_literal)) | (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) & (binary_expression "0xffffffffU >> (4 - uVar2) * 8" number_literal >> (binary_expression "(4 - uVar2) * 8" (parenthesized_expression "(4 - uVar2)" ( (binary_expression "4 - uVar2" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar8 + 1) * 8" number_literal << (binary_expression "(uVar8 + 1) * 8" (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar11 >> (3 - uVar8) * 8" identifier >> (binary_expression "(3 - uVar8) * 8" (parenthesized_expression "(3 - uVar8)" ( (binary_expression "3 - uVar8" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;" (assignment_expression "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8" (parenthesized_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8)" ( (binary_expression "iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "iVar5 << uVar3 * 8" identifier << (binary_expression "uVar3 * 8" identifier * number_literal)) | (binary_expression "uVar20 & 0xffffffffU >> (4 - uVar3) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar3) * 8" number_literal >> (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" ( (binary_expression "4 - uVar3" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar10 + 1) * 8" number_literal << (binary_expression "(uVar10 + 1) * 8" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar13 >> (3 - uVar10) * 8" identifier >> (binary_expression "(3 - uVar10) * 8" (parenthesized_expression "(3 - uVar10)" ( (binary_expression "3 - uVar10" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;" (assignment_expression "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (subscript_expression "puVar17[3]" identifier [ number_literal ]) = (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8" (parenthesized_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8)" ( (binary_expression "iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "iVar6 << uVar4 * 8" identifier << (binary_expression "uVar4 * 8" identifier * number_literal)) | (binary_expression "(uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (cast_expression "(uint)ppuVar19" ( (type_descriptor "uint" type_identifier) ) identifier) & (binary_expression "0xffffffffU >> (4 - uVar4) * 8" number_literal >> (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar9 + 1) * 8" number_literal << (binary_expression "(uVar9 + 1) * 8" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar12 >> (3 - uVar9) * 8" identifier >> (binary_expression "(3 - uVar9) * 8" (parenthesized_expression "(3 - uVar9)" ( (binary_expression "3 - uVar9" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[4] = (uint)puVar18;" (assignment_expression "puVar17[4] = (uint)puVar18" (subscript_expression "puVar17[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" if (parenthesized_expression "(((uint)ppuVar19[2] & 0x8000000) == 0)" ( (binary_expression "((uint)ppuVar19[2] & 0x8000000) == 0" (parenthesized_expression "((uint)ppuVar19[2] & 0x8000000)" ( (binary_expression "(uint)ppuVar19[2] & 0x8000000" (cast_expression "(uint)ppuVar19[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppuVar19[2]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" { (expression_statement "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;" (assignment_expression "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) = (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) | (cast_expression "(ushort)uVar20" ( (type_descriptor "ushort" type_identifier) ) identifier))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void applyNumericAffinity(Mem *pRec,int bTryForInt)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  u8 enc;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  ushort uVar15;\n  Mem *pTo;\n  char *pcVar16;\n  Mem *pMem_1;\n  uint length;\n  uint uVar17;\n  uint in_t0;\n  double rValue;\n  i64 iValue;\n  char *pcStack_1c;\n  \n  puVar13 = PTR___stack_chk_guard_00190e24;\n  pMem_1 = (Mem *)&rValue;\n  enc = pRec->enc;\n  length = pRec->n;\n  pTo = (Mem *)pRec->z;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24;\n  iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc);\n  if (iVar14 != 0) {\n    pMem_1 = (Mem *)&iValue;\n    length = pRec->n;\n    pTo = (Mem *)pRec->z;\n    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);\n    if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    pRec->flags = uVar15 & 0xfffd;\n  }\nLAB_000582d8:\n  if (pcStack_1c == *(char **)puVar13) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  if ((pTo->flags & 0x2400) == 0) {\n    uVar3 = (uint)pMem_1 & 3;\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);\n    uVar4 = (uint)puVar1 & 3;\n    iVar14 = *(int *)(puVar1 + -uVar4);\n    uVar17 = (uint)&pMem_1->flags & 3;\n    pcVar16 = pMem_1->z;\n    uVar5 = (uint)&pMem_1->n & 3;\n    iVar6 = *(int *)((int)&pMem_1->n - uVar5);\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);\n    uVar7 = (uint)puVar1 & 3;\n    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);\n    uVar8 = (uint)puVar2 & 3;\n    uVar11 = *(uint *)(puVar2 + -uVar8);\n    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);\n    uVar9 = (uint)puVar2 & 3;\n    uVar12 = *(uint *)(puVar2 + -uVar9);\n    uVar10 = (uint)&pMem_1->eSubtype & 3;\n    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;\n    (pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;\n    *(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n    pTo->flags = (short)(uVar17 >> 0x10);\n    pTo->enc = (char)(uVar17 >> 8);\n    pTo->eSubtype = (char)uVar17;\n    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n    pTo->z = pcVar16;\n    if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }\n    return;\n  }\n  vdbeClrCopy(pTo,pMem_1,length);\n  return;\n}\n\n" (function_definition "void applyNumericAffinity(Mem *pRec,int bTryForInt)\n\n{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  u8 enc;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  ushort uVar15;\n  Mem *pTo;\n  char *pcVar16;\n  Mem *pMem_1;\n  uint length;\n  uint uVar17;\n  uint in_t0;\n  double rValue;\n  i64 iValue;\n  char *pcStack_1c;\n  \n  puVar13 = PTR___stack_chk_guard_00190e24;\n  pMem_1 = (Mem *)&rValue;\n  enc = pRec->enc;\n  length = pRec->n;\n  pTo = (Mem *)pRec->z;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24;\n  iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc);\n  if (iVar14 != 0) {\n    pMem_1 = (Mem *)&iValue;\n    length = pRec->n;\n    pTo = (Mem *)pRec->z;\n    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);\n    if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    pRec->flags = uVar15 & 0xfffd;\n  }\nLAB_000582d8:\n  if (pcStack_1c == *(char **)puVar13) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  if ((pTo->flags & 0x2400) == 0) {\n    uVar3 = (uint)pMem_1 & 3;\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);\n    uVar4 = (uint)puVar1 & 3;\n    iVar14 = *(int *)(puVar1 + -uVar4);\n    uVar17 = (uint)&pMem_1->flags & 3;\n    pcVar16 = pMem_1->z;\n    uVar5 = (uint)&pMem_1->n & 3;\n    iVar6 = *(int *)((int)&pMem_1->n - uVar5);\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);\n    uVar7 = (uint)puVar1 & 3;\n    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);\n    uVar8 = (uint)puVar2 & 3;\n    uVar11 = *(uint *)(puVar2 + -uVar8);\n    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);\n    uVar9 = (uint)puVar2 & 3;\n    uVar12 = *(uint *)(puVar2 + -uVar9);\n    uVar10 = (uint)&pMem_1->eSubtype & 3;\n    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;\n    (pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;\n    *(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n    pTo->flags = (short)(uVar17 >> 0x10);\n    pTo->enc = (char)(uVar17 >> 8);\n    pTo->eSubtype = (char)uVar17;\n    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n    pTo->z = pcVar16;\n    if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }\n    return;\n  }\n  vdbeClrCopy(pTo,pMem_1,length);\n  return;\n}" primitive_type (function_declarator "applyNumericAffinity(Mem *pRec,int bTryForInt)" identifier (parameter_list "(Mem *pRec,int bTryForInt)" ( (parameter_declaration "Mem *pRec" type_identifier (pointer_declarator "*pRec" * identifier)) , (parameter_declaration "int bTryForInt" primitive_type identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  undefined1 *puVar2;\n  u8 enc;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  ushort uVar15;\n  Mem *pTo;\n  char *pcVar16;\n  Mem *pMem_1;\n  uint length;\n  uint uVar17;\n  uint in_t0;\n  double rValue;\n  i64 iValue;\n  char *pcStack_1c;\n  \n  puVar13 = PTR___stack_chk_guard_00190e24;\n  pMem_1 = (Mem *)&rValue;\n  enc = pRec->enc;\n  length = pRec->n;\n  pTo = (Mem *)pRec->z;\n  pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24;\n  iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc);\n  if (iVar14 != 0) {\n    pMem_1 = (Mem *)&iValue;\n    length = pRec->n;\n    pTo = (Mem *)pRec->z;\n    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);\n    if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    pRec->flags = uVar15 & 0xfffd;\n  }\nLAB_000582d8:\n  if (pcStack_1c == *(char **)puVar13) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  if ((pTo->flags & 0x2400) == 0) {\n    uVar3 = (uint)pMem_1 & 3;\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);\n    uVar4 = (uint)puVar1 & 3;\n    iVar14 = *(int *)(puVar1 + -uVar4);\n    uVar17 = (uint)&pMem_1->flags & 3;\n    pcVar16 = pMem_1->z;\n    uVar5 = (uint)&pMem_1->n & 3;\n    iVar6 = *(int *)((int)&pMem_1->n - uVar5);\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);\n    uVar7 = (uint)puVar1 & 3;\n    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);\n    uVar8 = (uint)puVar2 & 3;\n    uVar11 = *(uint *)(puVar2 + -uVar8);\n    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);\n    uVar9 = (uint)puVar2 & 3;\n    uVar12 = *(uint *)(puVar2 + -uVar9);\n    uVar10 = (uint)&pMem_1->eSubtype & 3;\n    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;\n    (pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;\n    *(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n    pTo->flags = (short)(uVar17 >> 0x10);\n    pTo->enc = (char)(uVar17 >> 8);\n    pTo->eSubtype = (char)uVar17;\n    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n    pTo->z = pcVar16;\n    if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }\n    return;\n  }\n  vdbeClrCopy(pTo,pMem_1,length);\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "u8 enc;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "ushort uVar15;" type_identifier identifier ;) (declaration "Mem *pTo;" type_identifier (pointer_declarator "*pTo" * identifier) ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "Mem *pMem_1;" type_identifier (pointer_declarator "*pMem_1" * identifier) ;) (declaration "uint length;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint in_t0;" type_identifier identifier ;) (declaration "double rValue;" primitive_type identifier ;) (declaration "i64 iValue;" type_identifier identifier ;) (declaration "char *pcStack_1c;" primitive_type (pointer_declarator "*pcStack_1c" * identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar13 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "pMem_1 = (Mem *)&rValue;" (assignment_expression "pMem_1 = (Mem *)&rValue" identifier = (cast_expression "(Mem *)&rValue" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&rValue" & identifier))) ;) (expression_statement "enc = pRec->enc;" (assignment_expression "enc = pRec->enc" identifier = (field_expression "pRec->enc" identifier -> field_identifier)) ;) (expression_statement "length = pRec->n;" (assignment_expression "length = pRec->n" identifier = (field_expression "pRec->n" identifier -> field_identifier)) ;) (expression_statement "pTo = (Mem *)pRec->z;" (assignment_expression "pTo = (Mem *)pRec->z" identifier = (cast_expression "(Mem *)pRec->z" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pRec->z" identifier -> field_identifier))) ;) (expression_statement "pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24;" (assignment_expression "pcStack_1c = *(char **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(char **)PTR___stack_chk_guard_00190e24" * (cast_expression "(char **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc);" (assignment_expression "iVar14 = sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc)" identifier = (call_expression "sqlite3AtoF((char *)pTo,(double *)pMem_1,length,enc)" identifier (argument_list "((char *)pTo,(double *)pMem_1,length,enc)" ( (cast_expression "(char *)pTo" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(double *)pMem_1" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (if_statement "if (iVar14 != 0) {\n    pMem_1 = (Mem *)&iValue;\n    length = pRec->n;\n    pTo = (Mem *)pRec->z;\n    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);\n    if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    pRec->flags = uVar15 & 0xfffd;\n  }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    pMem_1 = (Mem *)&iValue;\n    length = pRec->n;\n    pTo = (Mem *)pRec->z;\n    iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);\n    if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    pRec->flags = uVar15 & 0xfffd;\n  }" { (expression_statement "pMem_1 = (Mem *)&iValue;" (assignment_expression "pMem_1 = (Mem *)&iValue" identifier = (cast_expression "(Mem *)&iValue" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iValue" & identifier))) ;) (expression_statement "length = pRec->n;" (assignment_expression "length = pRec->n" identifier = (field_expression "pRec->n" identifier -> field_identifier)) ;) (expression_statement "pTo = (Mem *)pRec->z;" (assignment_expression "pTo = (Mem *)pRec->z" identifier = (cast_expression "(Mem *)pRec->z" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pRec->z" identifier -> field_identifier))) ;) (expression_statement "iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc);" (assignment_expression "iVar14 = sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc)" identifier = (call_expression "sqlite3Atoi64((char *)pTo,(i64 *)pMem_1,length,enc)" identifier (argument_list "((char *)pTo,(i64 *)pMem_1,length,enc)" ( (cast_expression "(char *)pTo" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(i64 *)pMem_1" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (if_statement "if (iVar14 == 0) {\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }\n    else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar15 = pRec->flags | 4;\n      *(Mem **)((int)&pRec->u + 4) = iValue._4_4_;\n      (pRec->u).pDef = (FuncDef *)iValue._0_4_;\n      pTo = iValue._0_4_;\n      pMem_1 = iValue._4_4_;\n    }" { (expression_statement "uVar15 = pRec->flags | 4;" (assignment_expression "uVar15 = pRec->flags | 4" identifier = (binary_expression "pRec->flags | 4" (field_expression "pRec->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "*(Mem **)((int)&pRec->u + 4) = iValue._4_4_;" (assignment_expression "*(Mem **)((int)&pRec->u + 4) = iValue._4_4_" (pointer_expression "*(Mem **)((int)&pRec->u + 4)" * (cast_expression "(Mem **)((int)&pRec->u + 4)" ( (type_descriptor "Mem **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pRec->u + 4)" ( (binary_expression "(int)&pRec->u + 4" (cast_expression "(int)&pRec->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pRec->u" & (field_expression "pRec->u" identifier -> field_identifier))) + number_literal) )))) = (field_expression "iValue._4_4_" identifier . field_identifier)) ;) (expression_statement "(pRec->u).pDef = (FuncDef *)iValue._0_4_;" (assignment_expression "(pRec->u).pDef = (FuncDef *)iValue._0_4_" (field_expression "(pRec->u).pDef" (parenthesized_expression "(pRec->u)" ( (field_expression "pRec->u" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(FuncDef *)iValue._0_4_" ( (type_descriptor "FuncDef *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "iValue._0_4_" identifier . field_identifier))) ;) (expression_statement "pTo = iValue._0_4_;" (assignment_expression "pTo = iValue._0_4_" identifier = (field_expression "iValue._0_4_" identifier . field_identifier)) ;) (expression_statement "pMem_1 = iValue._4_4_;" (assignment_expression "pMem_1 = iValue._4_4_" identifier = (field_expression "iValue._4_4_" identifier . field_identifier)) ;) }) (else_clause "else {\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" else (compound_statement "{\n      uVar15 = pRec->flags | 8;\n      pRec->flags = uVar15;\n      (pRec->u).r = rValue;\n      if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" { (expression_statement "uVar15 = pRec->flags | 8;" (assignment_expression "uVar15 = pRec->flags | 8" identifier = (binary_expression "pRec->flags | 8" (field_expression "pRec->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pRec->flags = uVar15;" (assignment_expression "pRec->flags = uVar15" (field_expression "pRec->flags" identifier -> field_identifier) = identifier) ;) (expression_statement "(pRec->u).r = rValue;" (assignment_expression "(pRec->u).r = rValue" (field_expression "(pRec->u).r" (parenthesized_expression "(pRec->u)" ( (field_expression "pRec->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (bTryForInt != 0) {\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }" if (parenthesized_expression "(bTryForInt != 0)" ( (binary_expression "bTryForInt != 0" identifier != number_literal) )) (compound_statement "{\n        pMem_1 = (Mem *)&pRec->flags;\n        pTo = pRec;\n        sqlite3VdbeIntegerAffinity(pRec,pMem_1);\n        pRec->flags = pRec->flags & 0xfffd;\n        goto LAB_000582d8;\n      }" { (expression_statement "pMem_1 = (Mem *)&pRec->flags;" (assignment_expression "pMem_1 = (Mem *)&pRec->flags" identifier = (cast_expression "(Mem *)&pRec->flags" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRec->flags" & (field_expression "pRec->flags" identifier -> field_identifier)))) ;) (expression_statement "pTo = pRec;" (assignment_expression "pTo = pRec" identifier = identifier) ;) (expression_statement "sqlite3VdbeIntegerAffinity(pRec,pMem_1);" (call_expression "sqlite3VdbeIntegerAffinity(pRec,pMem_1)" identifier (argument_list "(pRec,pMem_1)" ( identifier , identifier ))) ;) (expression_statement "pRec->flags = pRec->flags & 0xfffd;" (assignment_expression "pRec->flags = pRec->flags & 0xfffd" (field_expression "pRec->flags" identifier -> field_identifier) = (binary_expression "pRec->flags & 0xfffd" (field_expression "pRec->flags" identifier -> field_identifier) & number_literal)) ;) (goto_statement "goto LAB_000582d8;" goto statement_identifier ;) })) }))) (expression_statement "pRec->flags = uVar15 & 0xfffd;" (assignment_expression "pRec->flags = uVar15 & 0xfffd" (field_expression "pRec->flags" identifier -> field_identifier) = (binary_expression "uVar15 & 0xfffd" identifier & number_literal)) ;) })) (labeled_statement "LAB_000582d8:\n  if (pcStack_1c == *(char **)puVar13) {\n    return;\n  }" statement_identifier : (if_statement "if (pcStack_1c == *(char **)puVar13) {\n    return;\n  }" if (parenthesized_expression "(pcStack_1c == *(char **)puVar13)" ( (binary_expression "pcStack_1c == *(char **)puVar13" identifier == (pointer_expression "*(char **)puVar13" * (cast_expression "(char **)puVar13" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if ((pTo->flags & 0x2400) == 0) {\n    uVar3 = (uint)pMem_1 & 3;\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);\n    uVar4 = (uint)puVar1 & 3;\n    iVar14 = *(int *)(puVar1 + -uVar4);\n    uVar17 = (uint)&pMem_1->flags & 3;\n    pcVar16 = pMem_1->z;\n    uVar5 = (uint)&pMem_1->n & 3;\n    iVar6 = *(int *)((int)&pMem_1->n - uVar5);\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);\n    uVar7 = (uint)puVar1 & 3;\n    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);\n    uVar8 = (uint)puVar2 & 3;\n    uVar11 = *(uint *)(puVar2 + -uVar8);\n    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);\n    uVar9 = (uint)puVar2 & 3;\n    uVar12 = *(uint *)(puVar2 + -uVar9);\n    uVar10 = (uint)&pMem_1->eSubtype & 3;\n    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;\n    (pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;\n    *(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n    pTo->flags = (short)(uVar17 >> 0x10);\n    pTo->enc = (char)(uVar17 >> 8);\n    pTo->eSubtype = (char)uVar17;\n    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n    pTo->z = pcVar16;\n    if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }\n    return;\n  }" if (parenthesized_expression "((pTo->flags & 0x2400) == 0)" ( (binary_expression "(pTo->flags & 0x2400) == 0" (parenthesized_expression "(pTo->flags & 0x2400)" ( (binary_expression "pTo->flags & 0x2400" (field_expression "pTo->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar3 = (uint)pMem_1 & 3;\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 4);\n    uVar4 = (uint)puVar1 & 3;\n    iVar14 = *(int *)(puVar1 + -uVar4);\n    uVar17 = (uint)&pMem_1->flags & 3;\n    pcVar16 = pMem_1->z;\n    uVar5 = (uint)&pMem_1->n & 3;\n    iVar6 = *(int *)((int)&pMem_1->n - uVar5);\n    puVar1 = (undefined1 *)((int)&pMem_1->u + 3);\n    uVar7 = (uint)puVar1 & 3;\n    puVar2 = (undefined1 *)((int)&pMem_1->u + 7);\n    uVar8 = (uint)puVar2 & 3;\n    uVar11 = *(uint *)(puVar2 + -uVar8);\n    puVar2 = (undefined1 *)((int)&pMem_1->n + 3);\n    uVar9 = (uint)puVar2 & 3;\n    uVar12 = *(uint *)(puVar2 + -uVar9);\n    uVar10 = (uint)&pMem_1->eSubtype & 3;\n    uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;\n    (pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;\n    *(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n    pTo->flags = (short)(uVar17 >> 0x10);\n    pTo->enc = (char)(uVar17 >> 8);\n    pTo->eSubtype = (char)uVar17;\n    pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n    pTo->z = pcVar16;\n    if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }\n    return;\n  }" { (expression_statement "uVar3 = (uint)pMem_1 & 3;" (assignment_expression "uVar3 = (uint)pMem_1 & 3" identifier = (binary_expression "(uint)pMem_1 & 3" (cast_expression "(uint)pMem_1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "puVar1 = (undefined1 *)((int)&pMem_1->u + 4);" (assignment_expression "puVar1 = (undefined1 *)((int)&pMem_1->u + 4)" identifier = (cast_expression "(undefined1 *)((int)&pMem_1->u + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->u + 4)" ( (binary_expression "(int)&pMem_1->u + 4" (cast_expression "(int)&pMem_1->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->u" & (field_expression "pMem_1->u" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar4 = (uint)puVar1 & 3;" (assignment_expression "uVar4 = (uint)puVar1 & 3" identifier = (binary_expression "(uint)puVar1 & 3" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "iVar14 = *(int *)(puVar1 + -uVar4);" (assignment_expression "iVar14 = *(int *)(puVar1 + -uVar4)" identifier = (pointer_expression "*(int *)(puVar1 + -uVar4)" * (cast_expression "(int *)(puVar1 + -uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -uVar4)" ( (binary_expression "puVar1 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) ))))) ;) (expression_statement "uVar17 = (uint)&pMem_1->flags & 3;" (assignment_expression "uVar17 = (uint)&pMem_1->flags & 3" identifier = (binary_expression "(uint)&pMem_1->flags & 3" (binary_expression "(uint)&pMem_1->flags" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pMem_1->flags" identifier -> field_identifier)) & number_literal)) ;) (expression_statement "pcVar16 = pMem_1->z;" (assignment_expression "pcVar16 = pMem_1->z" identifier = (field_expression "pMem_1->z" identifier -> field_identifier)) ;) (expression_statement "uVar5 = (uint)&pMem_1->n & 3;" (assignment_expression "uVar5 = (uint)&pMem_1->n & 3" identifier = (binary_expression "(uint)&pMem_1->n & 3" (binary_expression "(uint)&pMem_1->n" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pMem_1->n" identifier -> field_identifier)) & number_literal)) ;) (expression_statement "iVar6 = *(int *)((int)&pMem_1->n - uVar5);" (assignment_expression "iVar6 = *(int *)((int)&pMem_1->n - uVar5)" identifier = (pointer_expression "*(int *)((int)&pMem_1->n - uVar5)" * (cast_expression "(int *)((int)&pMem_1->n - uVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->n - uVar5)" ( (binary_expression "(int)&pMem_1->n - uVar5" (cast_expression "(int)&pMem_1->n" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->n" & (field_expression "pMem_1->n" identifier -> field_identifier))) - identifier) ))))) ;) (expression_statement "puVar1 = (undefined1 *)((int)&pMem_1->u + 3);" (assignment_expression "puVar1 = (undefined1 *)((int)&pMem_1->u + 3)" identifier = (cast_expression "(undefined1 *)((int)&pMem_1->u + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->u + 3)" ( (binary_expression "(int)&pMem_1->u + 3" (cast_expression "(int)&pMem_1->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->u" & (field_expression "pMem_1->u" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar7 = (uint)puVar1 & 3;" (assignment_expression "uVar7 = (uint)puVar1 & 3" identifier = (binary_expression "(uint)puVar1 & 3" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "puVar2 = (undefined1 *)((int)&pMem_1->u + 7);" (assignment_expression "puVar2 = (undefined1 *)((int)&pMem_1->u + 7)" identifier = (cast_expression "(undefined1 *)((int)&pMem_1->u + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->u + 7)" ( (binary_expression "(int)&pMem_1->u + 7" (cast_expression "(int)&pMem_1->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->u" & (field_expression "pMem_1->u" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar8 = (uint)puVar2 & 3;" (assignment_expression "uVar8 = (uint)puVar2 & 3" identifier = (binary_expression "(uint)puVar2 & 3" (cast_expression "(uint)puVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar11 = *(uint *)(puVar2 + -uVar8);" (assignment_expression "uVar11 = *(uint *)(puVar2 + -uVar8)" identifier = (pointer_expression "*(uint *)(puVar2 + -uVar8)" * (cast_expression "(uint *)(puVar2 + -uVar8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -uVar8)" ( (binary_expression "puVar2 + -uVar8" identifier + (unary_expression "-uVar8" - identifier)) ))))) ;) (expression_statement "puVar2 = (undefined1 *)((int)&pMem_1->n + 3);" (assignment_expression "puVar2 = (undefined1 *)((int)&pMem_1->n + 3)" identifier = (cast_expression "(undefined1 *)((int)&pMem_1->n + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->n + 3)" ( (binary_expression "(int)&pMem_1->n + 3" (cast_expression "(int)&pMem_1->n" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->n" & (field_expression "pMem_1->n" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "uVar9 = (uint)puVar2 & 3;" (assignment_expression "uVar9 = (uint)puVar2 & 3" identifier = (binary_expression "(uint)puVar2 & 3" (cast_expression "(uint)puVar2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar12 = *(uint *)(puVar2 + -uVar9);" (assignment_expression "uVar12 = *(uint *)(puVar2 + -uVar9)" identifier = (pointer_expression "*(uint *)(puVar2 + -uVar9)" * (cast_expression "(uint *)(puVar2 + -uVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -uVar9)" ( (binary_expression "puVar2 + -uVar9" identifier + (unary_expression "-uVar9" - identifier)) ))))) ;) (expression_statement "uVar10 = (uint)&pMem_1->eSubtype & 3;" (assignment_expression "uVar10 = (uint)&pMem_1->eSubtype & 3" identifier = (binary_expression "(uint)&pMem_1->eSubtype & 3" (binary_expression "(uint)&pMem_1->eSubtype" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "pMem_1->eSubtype" identifier -> field_identifier)) & number_literal)) ;) (expression_statement "uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8;" (assignment_expression "uVar17 = (*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8" identifier = (binary_expression "(*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8 |\n             *(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8" (binary_expression "(*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8) & -1 << (uVar10 + 1) * 8" (parenthesized_expression "(*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8)" ( (binary_expression "*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8 |\n             length & 0xffffffffU >> (4 - uVar17) * 8" (binary_expression "*(int *)((int)&pMem_1->flags - uVar17) << uVar17 * 8" (pointer_expression "*(int *)((int)&pMem_1->flags - uVar17)" * (cast_expression "(int *)((int)&pMem_1->flags - uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem_1->flags - uVar17)" ( (binary_expression "(int)&pMem_1->flags - uVar17" (cast_expression "(int)&pMem_1->flags" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem_1->flags" & (field_expression "pMem_1->flags" identifier -> field_identifier))) - identifier) )))) << (binary_expression "uVar17 * 8" identifier * number_literal)) | (binary_expression "length & 0xffffffffU >> (4 - uVar17) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar17) * 8" number_literal >> (binary_expression "(4 - uVar17) * 8" (parenthesized_expression "(4 - uVar17)" ( (binary_expression "4 - uVar17" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar10 + 1) * 8" number_literal << (binary_expression "(uVar10 + 1) * 8" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)(&pMem_1->eSubtype + -uVar10) >> (3 - uVar10) * 8" (pointer_expression "*(uint *)(&pMem_1->eSubtype + -uVar10)" * (cast_expression "(uint *)(&pMem_1->eSubtype + -uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&pMem_1->eSubtype + -uVar10)" ( (binary_expression "&pMem_1->eSubtype + -uVar10" (pointer_expression "&pMem_1->eSubtype" & (field_expression "pMem_1->eSubtype" identifier -> field_identifier)) + (unary_expression "-uVar10" - identifier)) )))) >> (binary_expression "(3 - uVar10) * 8" (parenthesized_expression "(3 - uVar10)" ( (binary_expression "3 - uVar10" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "(pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8;" (assignment_expression "(pTo->u).nZero =\n         (*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8" (field_expression "(pTo->u).nZero" (parenthesized_expression "(pTo->u)" ( (field_expression "pTo->u" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8 | *(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8" (binary_expression "(*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8) &\n         -1 << (uVar7 + 1) * 8" (parenthesized_expression "(*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8)" ( (binary_expression "*(int *)((int)pMem_1 - uVar3) << uVar3 * 8 | in_t0 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "*(int *)((int)pMem_1 - uVar3) << uVar3 * 8" (pointer_expression "*(int *)((int)pMem_1 - uVar3)" * (cast_expression "(int *)((int)pMem_1 - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pMem_1 - uVar3)" ( (binary_expression "(int)pMem_1 - uVar3" (cast_expression "(int)pMem_1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) << (binary_expression "uVar3 * 8" identifier * number_literal)) | (binary_expression "in_t0 & 0xffffffffU >> (4 - uVar3) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar3) * 8" number_literal >> (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" ( (binary_expression "4 - uVar3" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar7 + 1) * 8" number_literal << (binary_expression "(uVar7 + 1) * 8" (parenthesized_expression "(uVar7 + 1)" ( (binary_expression "uVar7 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)(puVar1 + -uVar7) >> (3 - uVar7) * 8" (pointer_expression "*(uint *)(puVar1 + -uVar7)" * (cast_expression "(uint *)(puVar1 + -uVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -uVar7)" ( (binary_expression "puVar1 + -uVar7" identifier + (unary_expression "-uVar7" - identifier)) )))) >> (binary_expression "(3 - uVar7) * 8" (parenthesized_expression "(3 - uVar7)" ( (binary_expression "3 - uVar7" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "*(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;" (assignment_expression "*(uint *)((int)&pTo->u + 4) =\n         (iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (pointer_expression "*(uint *)((int)&pTo->u + 4)" * (cast_expression "(uint *)((int)&pTo->u + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pTo->u + 4)" ( (binary_expression "(int)&pTo->u + 4" (cast_expression "(int)&pTo->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pTo->u" & (field_expression "pTo->u" identifier -> field_identifier))) + number_literal) )))) = (binary_expression "(iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (binary_expression "(iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8) &\n         -1 << (uVar8 + 1) * 8" (parenthesized_expression "(iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8)" ( (binary_expression "iVar14 << uVar4 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "iVar14 << uVar4 * 8" identifier << (binary_expression "uVar4 * 8" identifier * number_literal)) | (binary_expression "pTo->flags & 0x2400 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "pTo->flags & 0x2400" (field_expression "pTo->flags" identifier -> field_identifier) & number_literal) & (binary_expression "0xffffffffU >> (4 - uVar4) * 8" number_literal >> (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar8 + 1) * 8" number_literal << (binary_expression "(uVar8 + 1) * 8" (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar11 >> (3 - uVar8) * 8" identifier >> (binary_expression "(3 - uVar8) * 8" (parenthesized_expression "(3 - uVar8)" ( (binary_expression "3 - uVar8" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "pTo->flags = (short)(uVar17 >> 0x10);" (assignment_expression "pTo->flags = (short)(uVar17 >> 0x10)" (field_expression "pTo->flags" identifier -> field_identifier) = (cast_expression "(short)(uVar17 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar17 >> 0x10)" ( (binary_expression "uVar17 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "pTo->enc = (char)(uVar17 >> 8);" (assignment_expression "pTo->enc = (char)(uVar17 >> 8)" (field_expression "pTo->enc" identifier -> field_identifier) = (cast_expression "(char)(uVar17 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar17 >> 8)" ( (binary_expression "uVar17 >> 8" identifier >> number_literal) )))) ;) (expression_statement "pTo->eSubtype = (char)uVar17;" (assignment_expression "pTo->eSubtype = (char)uVar17" (field_expression "pTo->eSubtype" identifier -> field_identifier) = (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;" (assignment_expression "pTo->n = (iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (field_expression "pTo->n" identifier -> field_identifier) = (binary_expression "(iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (binary_expression "(iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8) &\n             -1 << (uVar9 + 1) * 8" (parenthesized_expression "(iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8)" ( (binary_expression "iVar6 << uVar5 * 8 | (uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8" (binary_expression "iVar6 << uVar5 * 8" identifier << (binary_expression "uVar5 * 8" identifier * number_literal)) | (binary_expression "(uint)pMem_1 & 0xffffffffU >> (4 - uVar5) * 8" (cast_expression "(uint)pMem_1" ( (type_descriptor "uint" type_identifier) ) identifier) & (binary_expression "0xffffffffU >> (4 - uVar5) * 8" number_literal >> (binary_expression "(4 - uVar5) * 8" (parenthesized_expression "(4 - uVar5)" ( (binary_expression "4 - uVar5" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar9 + 1) * 8" number_literal << (binary_expression "(uVar9 + 1) * 8" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar12 >> (3 - uVar9) * 8" identifier >> (binary_expression "(3 - uVar9) * 8" (parenthesized_expression "(3 - uVar9)" ( (binary_expression "3 - uVar9" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "pTo->z = pcVar16;" (assignment_expression "pTo->z = pcVar16" (field_expression "pTo->z" identifier -> field_identifier) = identifier) ;) (if_statement "if ((pMem_1->flags & 0x800) == 0) {\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }" if (parenthesized_expression "((pMem_1->flags & 0x800) == 0)" ( (binary_expression "(pMem_1->flags & 0x800) == 0" (parenthesized_expression "(pMem_1->flags & 0x800)" ( (binary_expression "pMem_1->flags & 0x800" (field_expression "pMem_1->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      pTo->flags = pTo->flags & 0xe3ff | (ushort)length;\n    }" { (expression_statement "pTo->flags = pTo->flags & 0xe3ff | (ushort)length;" (assignment_expression "pTo->flags = pTo->flags & 0xe3ff | (ushort)length" (field_expression "pTo->flags" identifier -> field_identifier) = (binary_expression "pTo->flags & 0xe3ff | (ushort)length" (binary_expression "pTo->flags & 0xe3ff" (field_expression "pTo->flags" identifier -> field_identifier) & number_literal) | (cast_expression "(ushort)length" ( (type_descriptor "ushort" type_identifier) ) identifier))) ;) })) (return_statement "return;" return ;) })) (expression_statement "vdbeClrCopy(pTo,pMem_1,length);" (call_expression "vdbeClrCopy(pTo,pMem_1,length)" identifier (argument_list "(pTo,pMem_1,length)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00058270(uint *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00058270(uint *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00058270(uint *param_1,int param_2)" identifier (parameter_list "(uint *param_1,int param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "ushort uVar16;" type_identifier identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint **ppuVar19;" type_identifier (pointer_declarator "**ppuVar19" * (pointer_declarator "*ppuVar19" * identifier)) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint in_t0;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (declaration "uint *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint **local_24;" type_identifier (pointer_declarator "**local_24" * (pointer_declarator "*local_24" * identifier)) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar14 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar14 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "ppuVar19 = (uint **)&local_30;" (assignment_expression "ppuVar19 = (uint **)&local_30" identifier = (cast_expression "(uint **)&local_30" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" identifier = (cast_expression "(uint *)param_1[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar15 = FUN_0003f2e8();" (assignment_expression "iVar15 = FUN_0003f2e8()" identifier = (call_expression "FUN_0003f2e8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" { (expression_statement "ppuVar19 = &local_28;" (assignment_expression "ppuVar19 = &local_28" identifier = (pointer_expression "&local_28" & identifier)) ;) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" identifier = (cast_expression "(uint *)param_1[4]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "iVar15 = FUN_0003faa0();" (assignment_expression "iVar15 = FUN_0003faa0()" identifier = (call_expression "FUN_0003faa0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }" { (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 4;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 4" identifier = (binary_expression "*(ushort *)(param_1 + 2) | 4" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "param_1[1] = (uint)local_24;" (assignment_expression "param_1[1] = (uint)local_24" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*param_1 = (uint)local_28;" (assignment_expression "*param_1 = (uint)local_28" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)local_28" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" identifier = identifier) ;) (expression_statement "ppuVar19 = local_24;" (assignment_expression "ppuVar19 = local_24" identifier = identifier) ;) }) (else_clause "else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" else (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" { (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 8;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 8" identifier = (binary_expression "*(ushort *)(param_1 + 2) | 8" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(ushort *)(param_1 + 2) = uVar16;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)param_1 = local_30;" (assignment_expression "*(undefined8 *)param_1 = local_30" (pointer_expression "*(undefined8 *)param_1" * (cast_expression "(undefined8 *)param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" { (expression_statement "ppuVar19 = (uint **)(param_1 + 2);" (assignment_expression "ppuVar19 = (uint **)(param_1 + 2)" identifier = (cast_expression "(uint **)(param_1 + 2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" identifier = identifier) ;) (expression_statement "FUN_00058184();" (call_expression "FUN_00058184()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) & number_literal)) ;) (goto_statement "goto LAB_000582d8;" goto statement_identifier ;) })) }))) (expression_statement "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" * (cast_expression "(ushort *)(param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "uVar16 & 0xfffd" identifier & number_literal)) ;) })) (labeled_statement "LAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar14) {\n    return;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar14)" ( (binary_expression "local_1c == *(int *)puVar14" identifier == (pointer_expression "*(int *)puVar14" * (cast_expression "(int *)puVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (while_statement "while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }" while (parenthesized_expression "((*(ushort *)(puVar17 + 2) & 0x2400) != 0)" ( (binary_expression "(*(ushort *)(puVar17 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(puVar17 + 2) & 0x2400)" ( (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_0004de90();\n  }" { (expression_statement "FUN_0004de90();" (call_expression "FUN_0004de90()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar1 = (uint)ppuVar19 & 3;" (assignment_expression "uVar1 = (uint)ppuVar19 & 3" identifier = (binary_expression "(uint)ppuVar19 & 3" (cast_expression "(uint)ppuVar19" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar2 = (uint)(ppuVar19 + 1) & 3;" (assignment_expression "uVar2 = (uint)(ppuVar19 + 1) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 1) & 3" (call_expression "(uint)(ppuVar19 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 1)" ( (binary_expression "ppuVar19 + 1" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);" (assignment_expression "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 1) - uVar2)" * (cast_expression "(int *)((int)(ppuVar19 + 1) - uVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 1) - uVar2)" ( (binary_expression "(int)(ppuVar19 + 1) - uVar2" (cast_expression "(int)(ppuVar19 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 1)" ( (binary_expression "ppuVar19 + 1" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "uVar3 = (uint)(ppuVar19 + 2) & 3;" (assignment_expression "uVar3 = (uint)(ppuVar19 + 2) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 2) & 3" (call_expression "(uint)(ppuVar19 + 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 2)" ( (binary_expression "ppuVar19 + 2" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);" (assignment_expression "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 2) - uVar3)" * (cast_expression "(int *)((int)(ppuVar19 + 2) - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 2) - uVar3)" ( (binary_expression "(int)(ppuVar19 + 2) - uVar3" (cast_expression "(int)(ppuVar19 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 2)" ( (binary_expression "ppuVar19 + 2" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "puVar18 = ppuVar19[4];" (assignment_expression "puVar18 = ppuVar19[4]" identifier = (subscript_expression "ppuVar19[4]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = (uint)(ppuVar19 + 3) & 3;" (assignment_expression "uVar4 = (uint)(ppuVar19 + 3) & 3" identifier = (binary_expression "(uint)(ppuVar19 + 3) & 3" (call_expression "(uint)(ppuVar19 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ppuVar19 + 3)" ( (binary_expression "ppuVar19 + 3" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);" (assignment_expression "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4)" identifier = (pointer_expression "*(int *)((int)(ppuVar19 + 3) - uVar4)" * (cast_expression "(int *)((int)(ppuVar19 + 3) - uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(ppuVar19 + 3) - uVar4)" ( (binary_expression "(int)(ppuVar19 + 3) - uVar4" (cast_expression "(int)(ppuVar19 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppuVar19 + 3)" ( (binary_expression "ppuVar19 + 3" identifier + number_literal) ))) - identifier) ))))) ;) (expression_statement "uVar7 = (int)ppuVar19 + 3U & 3;" (assignment_expression "uVar7 = (int)ppuVar19 + 3U & 3" identifier = (binary_expression "(int)ppuVar19 + 3U & 3" (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar8 = (int)ppuVar19 + 7U & 3;" (assignment_expression "uVar8 = (int)ppuVar19 + 7U & 3" identifier = (binary_expression "(int)ppuVar19 + 7U & 3" (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);" (assignment_expression "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 7U) - uVar8)" * (cast_expression "(uint *)(((int)ppuVar19 + 7U) - uVar8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 7U) - uVar8)" ( (binary_expression "((int)ppuVar19 + 7U) - uVar8" (parenthesized_expression "((int)ppuVar19 + 7U)" ( (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "uVar9 = (int)ppuVar19 + 0xfU & 3;" (assignment_expression "uVar9 = (int)ppuVar19 + 0xfU & 3" identifier = (binary_expression "(int)ppuVar19 + 0xfU & 3" (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);" (assignment_expression "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" * (cast_expression "(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 0xfU) - uVar9)" ( (binary_expression "((int)ppuVar19 + 0xfU) - uVar9" (parenthesized_expression "((int)ppuVar19 + 0xfU)" ( (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "uVar10 = (int)ppuVar19 + 0xbU & 3;" (assignment_expression "uVar10 = (int)ppuVar19 + 0xbU & 3" identifier = (binary_expression "(int)ppuVar19 + 0xbU & 3" (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);" (assignment_expression "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" identifier = (pointer_expression "*(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" * (cast_expression "(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 0xbU) - uVar10)" ( (binary_expression "((int)ppuVar19 + 0xbU) - uVar10" (parenthesized_expression "((int)ppuVar19 + 0xbU)" ( (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) ))))) ;) (expression_statement "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;" (assignment_expression "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*puVar17" * identifier) = (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8" (parenthesized_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)" ( (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8" (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8" (pointer_expression "*(int *)((int)ppuVar19 - uVar1)" * (cast_expression "(int *)((int)ppuVar19 - uVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar19 - uVar1)" ( (binary_expression "(int)ppuVar19 - uVar1" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) << (binary_expression "uVar1 * 8" identifier * number_literal)) | (binary_expression "in_t0 & 0xffffffffU >> (4 - uVar1) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar1) * 8" number_literal >> (binary_expression "(4 - uVar1) * 8" (parenthesized_expression "(4 - uVar1)" ( (binary_expression "4 - uVar1" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar7 + 1) * 8" number_literal << (binary_expression "(uVar7 + 1) * 8" (parenthesized_expression "(uVar7 + 1)" ( (binary_expression "uVar7 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7)" * (cast_expression "(uint *)(((int)ppuVar19 + 3U) - uVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)ppuVar19 + 3U) - uVar7)" ( (binary_expression "((int)ppuVar19 + 3U) - uVar7" (parenthesized_expression "((int)ppuVar19 + 3U)" ( (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) - identifier) )))) >> (binary_expression "(3 - uVar7) * 8" (parenthesized_expression "(3 - uVar7)" ( (binary_expression "3 - uVar7" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;" (assignment_expression "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8" (parenthesized_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8)" ( (binary_expression "iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "iVar15 << uVar2 * 8" identifier << (binary_expression "uVar2 * 8" identifier * number_literal)) | (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) & (binary_expression "0xffffffffU >> (4 - uVar2) * 8" number_literal >> (binary_expression "(4 - uVar2) * 8" (parenthesized_expression "(4 - uVar2)" ( (binary_expression "4 - uVar2" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar8 + 1) * 8" number_literal << (binary_expression "(uVar8 + 1) * 8" (parenthesized_expression "(uVar8 + 1)" ( (binary_expression "uVar8 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar11 >> (3 - uVar8) * 8" identifier >> (binary_expression "(3 - uVar8) * 8" (parenthesized_expression "(3 - uVar8)" ( (binary_expression "3 - uVar8" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;" (assignment_expression "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8" (parenthesized_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8)" ( (binary_expression "iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "iVar5 << uVar3 * 8" identifier << (binary_expression "uVar3 * 8" identifier * number_literal)) | (binary_expression "uVar20 & 0xffffffffU >> (4 - uVar3) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar3) * 8" number_literal >> (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" ( (binary_expression "4 - uVar3" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar10 + 1) * 8" number_literal << (binary_expression "(uVar10 + 1) * 8" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar13 >> (3 - uVar10) * 8" identifier >> (binary_expression "(3 - uVar10) * 8" (parenthesized_expression "(3 - uVar10)" ( (binary_expression "3 - uVar10" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;" (assignment_expression "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (subscript_expression "puVar17[3]" identifier [ number_literal ]) = (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8" (parenthesized_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8)" ( (binary_expression "iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "iVar6 << uVar4 * 8" identifier << (binary_expression "uVar4 * 8" identifier * number_literal)) | (binary_expression "(uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (cast_expression "(uint)ppuVar19" ( (type_descriptor "uint" type_identifier) ) identifier) & (binary_expression "0xffffffffU >> (4 - uVar4) * 8" number_literal >> (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar9 + 1) * 8" number_literal << (binary_expression "(uVar9 + 1) * 8" (parenthesized_expression "(uVar9 + 1)" ( (binary_expression "uVar9 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "uVar12 >> (3 - uVar9) * 8" identifier >> (binary_expression "(3 - uVar9) * 8" (parenthesized_expression "(3 - uVar9)" ( (binary_expression "3 - uVar9" number_literal - identifier) )) * number_literal)))) ;) (expression_statement "puVar17[4] = (uint)puVar18;" (assignment_expression "puVar17[4] = (uint)puVar18" (subscript_expression "puVar17[4]" identifier [ number_literal ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" if (parenthesized_expression "(((uint)ppuVar19[2] & 0x8000000) == 0)" ( (binary_expression "((uint)ppuVar19[2] & 0x8000000) == 0" (parenthesized_expression "((uint)ppuVar19[2] & 0x8000000)" ( (binary_expression "(uint)ppuVar19[2] & 0x8000000" (cast_expression "(uint)ppuVar19[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppuVar19[2]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" { (expression_statement "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;" (assignment_expression "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) = (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff" (pointer_expression "*(ushort *)(puVar17 + 2)" * (cast_expression "(ushort *)(puVar17 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) )))) & number_literal) | (cast_expression "(ushort)uVar20" ( (type_descriptor "ushort" type_identifier) ) identifier))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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 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 *)) ) IDENT)) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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)) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) - IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) << (binary_expression IDENT * LIT)) | (binary_expression IDENT & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) )) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )) - IDENT) )))) >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << (binary_expression IDENT * LIT)) | (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) )) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression IDENT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << (binary_expression IDENT * LIT)) | (binary_expression IDENT & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) )) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression IDENT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << (binary_expression IDENT * LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) )) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression IDENT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & 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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00058270(uint *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00058270(uint *param_1,int param_2)" (identifier "FUN_00058270") (parameter_list "(uint *param_1,int param_2)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  undefined *puVar14;\n  int iVar15;\n  ushort uVar16;\n  uint *puVar17;\n  uint *puVar18;\n  uint **ppuVar19;\n  uint uVar20;\n  uint in_t0;\n  undefined8 local_30;\n  uint *local_28;\n  uint **local_24;\n  int local_1c;\n  \n  puVar14 = PTR___stack_chk_guard_00190e24;\n  ppuVar19 = (uint **)&local_30;\n  uVar20 = param_1[3];\n  puVar17 = (uint *)param_1[4];\n  local_1c = *(int *)PTR___stack_chk_guard_00190e24;\n  iVar15 = FUN_0003f2e8();\n  if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }\nLAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }\n  uVar1 = (uint)ppuVar19 & 3;\n  uVar2 = (uint)(ppuVar19 + 1) & 3;\n  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);\n  uVar3 = (uint)(ppuVar19 + 2) & 3;\n  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);\n  puVar18 = ppuVar19[4];\n  uVar4 = (uint)(ppuVar19 + 3) & 3;\n  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);\n  uVar7 = (int)ppuVar19 + 3U & 3;\n  uVar8 = (int)ppuVar19 + 7U & 3;\n  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);\n  uVar9 = (int)ppuVar19 + 0xfU & 3;\n  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);\n  uVar10 = (int)ppuVar19 + 0xbU & 3;\n  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);\n  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;\n  puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;\n  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;\n  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;\n  puVar17[4] = (uint)puVar18;\n  if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "undefined *puVar14;" (type_identifier "undefined") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "ushort uVar16;" (type_identifier "ushort") (identifier "uVar16") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint **ppuVar19;" (type_identifier "uint") (pointer_declarator "**ppuVar19" (* "*") (pointer_declarator "*ppuVar19" (* "*") (identifier "ppuVar19"))) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint in_t0;" (type_identifier "uint") (identifier "in_t0") (; ";")) (declaration "undefined8 local_30;" (type_identifier "undefined8") (identifier "local_30") (; ";")) (declaration "uint *local_28;" (type_identifier "uint") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "uint **local_24;" (type_identifier "uint") (pointer_declarator "**local_24" (* "*") (pointer_declarator "*local_24" (* "*") (identifier "local_24"))) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar14 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar14 = PTR___stack_chk_guard_00190e24" (identifier "puVar14") (= "=") (identifier "PTR___stack_chk_guard_00190e24")) (; ";")) (expression_statement "ppuVar19 = (uint **)&local_30;" (assignment_expression "ppuVar19 = (uint **)&local_30" (identifier "ppuVar19") (= "=") (cast_expression "(uint **)&local_30" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "&local_30" (& "&") (identifier "local_30")))) (; ";")) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" (identifier "uVar20") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_1[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00190e24" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00190e24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00190e24")))) (; ";")) (expression_statement "iVar15 = FUN_0003f2e8();" (assignment_expression "iVar15 = FUN_0003f2e8()" (identifier "iVar15") (= "=") (call_expression "FUN_0003f2e8()" (identifier "FUN_0003f2e8") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar15 != 0) {\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    ppuVar19 = &local_28;\n    uVar20 = param_1[3];\n    puVar17 = (uint *)param_1[4];\n    iVar15 = FUN_0003faa0();\n    if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }\n    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;\n  }" ({ "{") (expression_statement "ppuVar19 = &local_28;" (assignment_expression "ppuVar19 = &local_28" (identifier "ppuVar19") (= "=") (pointer_expression "&local_28" (& "&") (identifier "local_28"))) (; ";")) (expression_statement "uVar20 = param_1[3];" (assignment_expression "uVar20 = param_1[3]" (identifier "uVar20") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar17 = (uint *)param_1[4];" (assignment_expression "puVar17 = (uint *)param_1[4]" (identifier "puVar17") (= "=") (cast_expression "(uint *)param_1[4]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "iVar15 = FUN_0003faa0();" (assignment_expression "iVar15 = FUN_0003faa0()" (identifier "iVar15") (= "=") (call_expression "FUN_0003faa0()" (identifier "FUN_0003faa0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar15 == 0) {\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }\n    else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 4;\n      param_1[1] = (uint)local_24;\n      *param_1 = (uint)local_28;\n      puVar17 = local_28;\n      ppuVar19 = local_24;\n    }" ({ "{") (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 4;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 4" (identifier "uVar16") (= "=") (binary_expression "*(ushort *)(param_1 + 2) | 4" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "param_1[1] = (uint)local_24;" (assignment_expression "param_1[1] = (uint)local_24" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)local_24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_24"))) (; ";")) (expression_statement "*param_1 = (uint)local_28;" (assignment_expression "*param_1 = (uint)local_28" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(uint)local_28" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_28"))) (; ";")) (expression_statement "puVar17 = local_28;" (assignment_expression "puVar17 = local_28" (identifier "puVar17") (= "=") (identifier "local_28")) (; ";")) (expression_statement "ppuVar19 = local_24;" (assignment_expression "ppuVar19 = local_24" (identifier "ppuVar19") (= "=") (identifier "local_24")) (; ";")) (} "}")) (else_clause "else {\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" (else "else") (compound_statement "{\n      uVar16 = *(ushort *)(param_1 + 2) | 8;\n      *(ushort *)(param_1 + 2) = uVar16;\n      *(undefined8 *)param_1 = local_30;\n      if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }\n    }" ({ "{") (expression_statement "uVar16 = *(ushort *)(param_1 + 2) | 8;" (assignment_expression "uVar16 = *(ushort *)(param_1 + 2) | 8" (identifier "uVar16") (= "=") (binary_expression "*(ushort *)(param_1 + 2) | 8" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (expression_statement "*(ushort *)(param_1 + 2) = uVar16;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(undefined8 *)param_1 = local_30;" (assignment_expression "*(undefined8 *)param_1 = local_30" (pointer_expression "*(undefined8 *)param_1" (* "*") (cast_expression "(undefined8 *)param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (identifier "local_30")) (; ";")) (if_statement "if (param_2 != 0) {\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        ppuVar19 = (uint **)(param_1 + 2);\n        puVar17 = param_1;\n        FUN_00058184();\n        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;\n        goto LAB_000582d8;\n      }" ({ "{") (expression_statement "ppuVar19 = (uint **)(param_1 + 2);" (assignment_expression "ppuVar19 = (uint **)(param_1 + 2)" (identifier "ppuVar19") (= "=") (cast_expression "(uint **)(param_1 + 2)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" (identifier "puVar17") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00058184();" (call_expression "FUN_00058184()" (identifier "FUN_00058184") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(ushort *)(param_1 + 2) & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0xfffd"))) (; ";")) (goto_statement "goto LAB_000582d8;" (goto "goto") (statement_identifier "LAB_000582d8") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd;" (assignment_expression "*(ushort *)(param_1 + 2) = uVar16 & 0xfffd" (pointer_expression "*(ushort *)(param_1 + 2)" (* "*") (cast_expression "(ushort *)(param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "uVar16 & 0xfffd" (identifier "uVar16") (& "&") (number_literal "0xfffd"))) (; ";")) (} "}"))) (labeled_statement "LAB_000582d8:\n  if (local_1c == *(int *)puVar14) {\n    return;\n  }" (statement_identifier "LAB_000582d8") (: ":") (if_statement "if (local_1c == *(int *)puVar14) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_1c == *(int *)puVar14)" (( "(") (binary_expression "local_1c == *(int *)puVar14" (identifier "local_1c") (== "==") (pointer_expression "*(int *)puVar14" (* "*") (cast_expression "(int *)puVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00190df8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00190df8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (while_statement "while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {\n    FUN_0004de90();\n  }" (while "while") (parenthesized_expression "((*(ushort *)(puVar17 + 2) & 0x2400) != 0)" (( "(") (binary_expression "(*(ushort *)(puVar17 + 2) & 0x2400) != 0" (parenthesized_expression "(*(ushort *)(puVar17 + 2) & 0x2400)" (( "(") (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" (* "*") (cast_expression "(ushort *)(puVar17 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 2)" (( "(") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x2400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0004de90();\n  }" ({ "{") (expression_statement "FUN_0004de90();" (call_expression "FUN_0004de90()" (identifier "FUN_0004de90") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar1 = (uint)ppuVar19 & 3;" (assignment_expression "uVar1 = (uint)ppuVar19 & 3" (identifier "uVar1") (= "=") (binary_expression "(uint)ppuVar19 & 3" (cast_expression "(uint)ppuVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "ppuVar19")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar2 = (uint)(ppuVar19 + 1) & 3;" (assignment_expression "uVar2 = (uint)(ppuVar19 + 1) & 3" (identifier "uVar2") (= "=") (binary_expression "(uint)(ppuVar19 + 1) & 3" (call_expression "(uint)(ppuVar19 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ppuVar19 + 1)" (( "(") (binary_expression "ppuVar19 + 1" (identifier "ppuVar19") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "3"))) (; ";")) (expression_statement "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);" (assignment_expression "iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)((int)(ppuVar19 + 1) - uVar2)" (* "*") (cast_expression "(int *)((int)(ppuVar19 + 1) - uVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)(ppuVar19 + 1) - uVar2)" (( "(") (binary_expression "(int)(ppuVar19 + 1) - uVar2" (cast_expression "(int)(ppuVar19 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ppuVar19 + 1)" (( "(") (binary_expression "ppuVar19 + 1" (identifier "ppuVar19") (+ "+") (number_literal "1")) () ")"))) (- "-") (identifier "uVar2")) () ")"))))) (; ";")) (expression_statement "uVar3 = (uint)(ppuVar19 + 2) & 3;" (assignment_expression "uVar3 = (uint)(ppuVar19 + 2) & 3" (identifier "uVar3") (= "=") (binary_expression "(uint)(ppuVar19 + 2) & 3" (call_expression "(uint)(ppuVar19 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ppuVar19 + 2)" (( "(") (binary_expression "ppuVar19 + 2" (identifier "ppuVar19") (+ "+") (number_literal "2")) () ")"))) (& "&") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);" (assignment_expression "iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)((int)(ppuVar19 + 2) - uVar3)" (* "*") (cast_expression "(int *)((int)(ppuVar19 + 2) - uVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)(ppuVar19 + 2) - uVar3)" (( "(") (binary_expression "(int)(ppuVar19 + 2) - uVar3" (cast_expression "(int)(ppuVar19 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ppuVar19 + 2)" (( "(") (binary_expression "ppuVar19 + 2" (identifier "ppuVar19") (+ "+") (number_literal "2")) () ")"))) (- "-") (identifier "uVar3")) () ")"))))) (; ";")) (expression_statement "puVar18 = ppuVar19[4];" (assignment_expression "puVar18 = ppuVar19[4]" (identifier "puVar18") (= "=") (subscript_expression "ppuVar19[4]" (identifier "ppuVar19") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar4 = (uint)(ppuVar19 + 3) & 3;" (assignment_expression "uVar4 = (uint)(ppuVar19 + 3) & 3" (identifier "uVar4") (= "=") (binary_expression "(uint)(ppuVar19 + 3) & 3" (call_expression "(uint)(ppuVar19 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ppuVar19 + 3)" (( "(") (binary_expression "ppuVar19 + 3" (identifier "ppuVar19") (+ "+") (number_literal "3")) () ")"))) (& "&") (number_literal "3"))) (; ";")) (expression_statement "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);" (assignment_expression "iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)((int)(ppuVar19 + 3) - uVar4)" (* "*") (cast_expression "(int *)((int)(ppuVar19 + 3) - uVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)(ppuVar19 + 3) - uVar4)" (( "(") (binary_expression "(int)(ppuVar19 + 3) - uVar4" (cast_expression "(int)(ppuVar19 + 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(ppuVar19 + 3)" (( "(") (binary_expression "ppuVar19 + 3" (identifier "ppuVar19") (+ "+") (number_literal "3")) () ")"))) (- "-") (identifier "uVar4")) () ")"))))) (; ";")) (expression_statement "uVar7 = (int)ppuVar19 + 3U & 3;" (assignment_expression "uVar7 = (int)ppuVar19 + 3U & 3" (identifier "uVar7") (= "=") (binary_expression "(int)ppuVar19 + 3U & 3" (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "3U")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar8 = (int)ppuVar19 + 7U & 3;" (assignment_expression "uVar8 = (int)ppuVar19 + 7U & 3" (identifier "uVar8") (= "=") (binary_expression "(int)ppuVar19 + 7U & 3" (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "7U")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);" (assignment_expression "uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(((int)ppuVar19 + 7U) - uVar8)" (* "*") (cast_expression "(uint *)(((int)ppuVar19 + 7U) - uVar8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)ppuVar19 + 7U) - uVar8)" (( "(") (binary_expression "((int)ppuVar19 + 7U) - uVar8" (parenthesized_expression "((int)ppuVar19 + 7U)" (( "(") (binary_expression "(int)ppuVar19 + 7U" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "7U")) () ")")) (- "-") (identifier "uVar8")) () ")"))))) (; ";")) (expression_statement "uVar9 = (int)ppuVar19 + 0xfU & 3;" (assignment_expression "uVar9 = (int)ppuVar19 + 0xfU & 3" (identifier "uVar9") (= "=") (binary_expression "(int)ppuVar19 + 0xfU & 3" (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "0xfU")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);" (assignment_expression "uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" (* "*") (cast_expression "(uint *)(((int)ppuVar19 + 0xfU) - uVar9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)ppuVar19 + 0xfU) - uVar9)" (( "(") (binary_expression "((int)ppuVar19 + 0xfU) - uVar9" (parenthesized_expression "((int)ppuVar19 + 0xfU)" (( "(") (binary_expression "(int)ppuVar19 + 0xfU" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "0xfU")) () ")")) (- "-") (identifier "uVar9")) () ")"))))) (; ";")) (expression_statement "uVar10 = (int)ppuVar19 + 0xbU & 3;" (assignment_expression "uVar10 = (int)ppuVar19 + 0xbU & 3" (identifier "uVar10") (= "=") (binary_expression "(int)ppuVar19 + 0xbU & 3" (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "0xbU")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);" (assignment_expression "uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" (* "*") (cast_expression "(uint *)(((int)ppuVar19 + 0xbU) - uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)ppuVar19 + 0xbU) - uVar10)" (( "(") (binary_expression "((int)ppuVar19 + 0xbU) - uVar10" (parenthesized_expression "((int)ppuVar19 + 0xbU)" (( "(") (binary_expression "(int)ppuVar19 + 0xbU" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "0xbU")) () ")")) (- "-") (identifier "uVar10")) () ")"))))) (; ";")) (expression_statement "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;" (assignment_expression "*puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (binary_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)\n             & -1 << (uVar7 + 1) * 8" (parenthesized_expression "(*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)" (( "(") (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8" (binary_expression "*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8" (pointer_expression "*(int *)((int)ppuVar19 - uVar1)" (* "*") (cast_expression "(int *)((int)ppuVar19 - uVar1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar19 - uVar1)" (( "(") (binary_expression "(int)ppuVar19 - uVar1" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (- "-") (identifier "uVar1")) () ")")))) (<< "<<") (binary_expression "uVar1 * 8" (identifier "uVar1") (* "*") (number_literal "8"))) (| "|") (binary_expression "in_t0 & 0xffffffffU >> (4 - uVar1) * 8" (identifier "in_t0") (& "&") (binary_expression "0xffffffffU >> (4 - uVar1) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(4 - uVar1) * 8" (parenthesized_expression "(4 - uVar1)" (( "(") (binary_expression "4 - uVar1" (number_literal "4") (- "-") (identifier "uVar1")) () ")")) (* "*") (number_literal "8"))))) () ")")) (& "&") (binary_expression "-1 << (uVar7 + 1) * 8" (number_literal "-1") (<< "<<") (binary_expression "(uVar7 + 1) * 8" (parenthesized_expression "(uVar7 + 1)" (( "(") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8" (pointer_expression "*(uint *)(((int)ppuVar19 + 3U) - uVar7)" (* "*") (cast_expression "(uint *)(((int)ppuVar19 + 3U) - uVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)ppuVar19 + 3U) - uVar7)" (( "(") (binary_expression "((int)ppuVar19 + 3U) - uVar7" (parenthesized_expression "((int)ppuVar19 + 3U)" (( "(") (binary_expression "(int)ppuVar19 + 3U" (cast_expression "(int)ppuVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar19")) (+ "+") (number_literal "3U")) () ")")) (- "-") (identifier "uVar7")) () ")")))) (>> ">>") (binary_expression "(3 - uVar7) * 8" (parenthesized_expression "(3 - uVar7)" (( "(") (binary_expression "3 - uVar7" (number_literal "3") (- "-") (identifier "uVar7")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;" (assignment_expression "puVar17[1] = (iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8" (binary_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &\n               -1 << (uVar8 + 1) * 8" (parenthesized_expression "(iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8)" (( "(") (binary_expression "iVar15 << uVar2 * 8 |\n               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "iVar15 << uVar2 * 8" (identifier "iVar15") (<< "<<") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) (| "|") (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8" (binary_expression "*(ushort *)(puVar17 + 2) & 0x2400" (pointer_expression "*(ushort *)(puVar17 + 2)" (* "*") (cast_expression "(ushort *)(puVar17 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 2)" (( "(") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x2400")) (& "&") (binary_expression "0xffffffffU >> (4 - uVar2) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(4 - uVar2) * 8" (parenthesized_expression "(4 - uVar2)" (( "(") (binary_expression "4 - uVar2" (number_literal "4") (- "-") (identifier "uVar2")) () ")")) (* "*") (number_literal "8"))))) () ")")) (& "&") (binary_expression "-1 << (uVar8 + 1) * 8" (number_literal "-1") (<< "<<") (binary_expression "(uVar8 + 1) * 8" (parenthesized_expression "(uVar8 + 1)" (( "(") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar11 >> (3 - uVar8) * 8" (identifier "uVar11") (>> ">>") (binary_expression "(3 - uVar8) * 8" (parenthesized_expression "(3 - uVar8)" (( "(") (binary_expression "3 - uVar8" (number_literal "3") (- "-") (identifier "uVar8")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;" (assignment_expression "puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8" (binary_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &\n               -1 << (uVar10 + 1) * 8" (parenthesized_expression "(iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8)" (( "(") (binary_expression "iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "iVar5 << uVar3 * 8" (identifier "iVar5") (<< "<<") (binary_expression "uVar3 * 8" (identifier "uVar3") (* "*") (number_literal "8"))) (| "|") (binary_expression "uVar20 & 0xffffffffU >> (4 - uVar3) * 8" (identifier "uVar20") (& "&") (binary_expression "0xffffffffU >> (4 - uVar3) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" (( "(") (binary_expression "4 - uVar3" (number_literal "4") (- "-") (identifier "uVar3")) () ")")) (* "*") (number_literal "8"))))) () ")")) (& "&") (binary_expression "-1 << (uVar10 + 1) * 8" (number_literal "-1") (<< "<<") (binary_expression "(uVar10 + 1) * 8" (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar13 >> (3 - uVar10) * 8" (identifier "uVar13") (>> ">>") (binary_expression "(3 - uVar10) * 8" (parenthesized_expression "(3 - uVar10)" (( "(") (binary_expression "3 - uVar10" (number_literal "3") (- "-") (identifier "uVar10")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;" (assignment_expression "puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (subscript_expression "puVar17[3]" (identifier "puVar17") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8" (binary_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &\n               -1 << (uVar9 + 1) * 8" (parenthesized_expression "(iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8)" (( "(") (binary_expression "iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "iVar6 << uVar4 * 8" (identifier "iVar6") (<< "<<") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))) (| "|") (binary_expression "(uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8" (cast_expression "(uint)ppuVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "ppuVar19")) (& "&") (binary_expression "0xffffffffU >> (4 - uVar4) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" (( "(") (binary_expression "4 - uVar4" (number_literal "4") (- "-") (identifier "uVar4")) () ")")) (* "*") (number_literal "8"))))) () ")")) (& "&") (binary_expression "-1 << (uVar9 + 1) * 8" (number_literal "-1") (<< "<<") (binary_expression "(uVar9 + 1) * 8" (parenthesized_expression "(uVar9 + 1)" (( "(") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "uVar12 >> (3 - uVar9) * 8" (identifier "uVar12") (>> ">>") (binary_expression "(3 - uVar9) * 8" (parenthesized_expression "(3 - uVar9)" (( "(") (binary_expression "3 - uVar9" (number_literal "3") (- "-") (identifier "uVar9")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (expression_statement "puVar17[4] = (uint)puVar18;" (assignment_expression "puVar17[4] = (uint)puVar18" (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (if_statement "if (((uint)ppuVar19[2] & 0x8000000) == 0) {\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" (if "if") (parenthesized_expression "(((uint)ppuVar19[2] & 0x8000000) == 0)" (( "(") (binary_expression "((uint)ppuVar19[2] & 0x8000000) == 0" (parenthesized_expression "((uint)ppuVar19[2] & 0x8000000)" (( "(") (binary_expression "(uint)ppuVar19[2] & 0x8000000" (cast_expression "(uint)ppuVar19[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "ppuVar19[2]" (identifier "ppuVar19") ([ "[") (number_literal "2") (] "]"))) (& "&") (number_literal "0x8000000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;\n  }" ({ "{") (expression_statement "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;" (assignment_expression "*(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (pointer_expression "*(ushort *)(puVar17 + 2)" (* "*") (cast_expression "(ushort *)(puVar17 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 2)" (( "(") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20" (binary_expression "*(ushort *)(puVar17 + 2) & 0xe3ff" (pointer_expression "*(ushort *)(puVar17 + 2)" (* "*") (cast_expression "(ushort *)(puVar17 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 2)" (( "(") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0xe3ff")) (| "|") (cast_expression "(ushort)uVar20" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar20")))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pRec,int var_4)

{
  type_2 *var_8;
  type_2 *var_10;
  type_3 enc;
  type_4 var_14;
  type_4 var_17;
  type_4 var_9;
  int var_20;
  type_4 var_16;
  type_4 var_18;
  type_4 var_21;
  type_4 var_13;
  type_4 var_19;
  type_4 var_22;
  type_5 *puVar13;
  int var_2;
  type_6 var_6;
  type_1 *pTo;
  char *pcVar16;
  type_1 *pMem_1;
  type_4 var_12;
  type_4 var_11;
  type_4 var_15;
  double rValue;
  type_7 iValue;
  char *var_7;
  
  puVar13 = PTR___stack_chk_guard_00190e24;
  pMem_1 = (type_1 *)&rValue;
  enc = pRec->enc;
  var_12 = pRec->n;
  pTo = (type_1 *)pRec->z;
  var_7 = *(char **)PTR___stack_chk_guard_00190e24;
  var_2 = var_1((char *)pTo,(double *)pMem_1,var_12,enc);
  if (var_2 != 0) {
    pMem_1 = (type_1 *)&iValue;
    var_12 = pRec->n;
    pTo = (type_1 *)pRec->z;
    var_2 = var_3((char *)pTo,(type_7 *)pMem_1,var_12,enc);
    if (var_2 == 0) {
      var_6 = pRec->flags | 4;
      *(type_1 **)((int)&pRec->u + 4) = iValue._4_4_;
      (pRec->u).pDef = (type_8 *)iValue._0_4_;
      pTo = iValue._0_4_;
      pMem_1 = iValue._4_4_;
    }
    else {
      var_6 = pRec->flags | 8;
      pRec->flags = var_6;
      (pRec->u).r = rValue;
      if (var_4 != 0) {
        pMem_1 = (type_1 *)&pRec->flags;
        pTo = pRec;
        var_5(pRec,pMem_1);
        pRec->flags = pRec->flags & 0xfffd;
        goto LAB_000582d8;
      }
    }
    pRec->flags = var_6 & 0xfffd;
  }
LAB_000582d8:
  if (var_7 == *(char **)puVar13) {
    return;
  }
  (*(type_9 *)PTR___stack_chk_fail_00190df8)();
  if ((pTo->flags & 0x2400) == 0) {
    var_14 = (type_4)pMem_1 & 3;
    var_8 = (type_2 *)((int)&pMem_1->u + 4);
    var_17 = (type_4)var_8 & 3;
    var_2 = *(int *)(var_8 + -var_17);
    var_11 = (type_4)&pMem_1->flags & 3;
    pcVar16 = pMem_1->z;
    var_9 = (type_4)&pMem_1->n & 3;
    var_20 = *(int *)((int)&pMem_1->n - var_9);
    var_8 = (type_2 *)((int)&pMem_1->u + 3);
    var_16 = (type_4)var_8 & 3;
    var_10 = (type_2 *)((int)&pMem_1->u + 7);
    var_18 = (type_4)var_10 & 3;
    var_19 = *(type_4 *)(var_10 + -var_18);
    var_10 = (type_2 *)((int)&pMem_1->n + 3);
    var_21 = (type_4)var_10 & 3;
    var_22 = *(type_4 *)(var_10 + -var_21);
    var_13 = (type_4)&pMem_1->eSubtype & 3;
    var_11 = (*(int *)((int)&pMem_1->flags - var_11) << var_11 * 8 |
             var_12 & 0xffffffffU >> (4 - var_11) * 8) & -1 << (var_13 + 1) * 8 |
             *(type_4 *)(&pMem_1->eSubtype + -var_13) >> (3 - var_13) * 8;
    (pTo->u).nZero =
         (*(int *)((int)pMem_1 - var_14) << var_14 * 8 | var_15 & 0xffffffffU >> (4 - var_14) * 8) &
         -1 << (var_16 + 1) * 8 | *(type_4 *)(var_8 + -var_16) >> (3 - var_16) * 8;
    *(type_4 *)((int)&pTo->u + 4) =
         (var_2 << var_17 * 8 | pTo->flags & 0x2400 & 0xffffffffU >> (4 - var_17) * 8) &
         -1 << (var_18 + 1) * 8 | var_19 >> (3 - var_18) * 8;
    pTo->flags = (short)(var_11 >> 0x10);
    pTo->enc = (char)(var_11 >> 8);
    pTo->eSubtype = (char)var_11;
    pTo->n = (var_20 << var_9 * 8 | (type_4)pMem_1 & 0xffffffffU >> (4 - var_9) * 8) &
             -1 << (var_21 + 1) * 8 | var_22 >> (3 - var_21) * 8;
    pTo->z = pcVar16;
    if ((pMem_1->flags & 0x800) == 0) {
      pTo->flags = pTo->flags & 0xe3ff | (type_6)var_12;
    }
    return;
  }
  var_23(pTo,pMem_1,var_12);
  return;
}


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

void MASKED(uint *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  undefined *puVar14;
  int iVar15;
  ushort uVar16;
  uint *puVar17;
  uint *puVar18;
  uint **ppuVar19;
  uint uVar20;
  uint in_t0;
  undefined8 local_30;
  uint *local_28;
  uint **local_24;
  int local_1c;
  
  puVar14 = PTR___stack_chk_guard_00190e24;
  ppuVar19 = (uint **)&local_30;
  uVar20 = param_1[3];
  puVar17 = (uint *)param_1[4];
  local_1c = *(int *)PTR___stack_chk_guard_00190e24;
  iVar15 = FUN_0003f2e8();
  if (iVar15 != 0) {
    ppuVar19 = &local_28;
    uVar20 = param_1[3];
    puVar17 = (uint *)param_1[4];
    iVar15 = FUN_0003faa0();
    if (iVar15 == 0) {
      uVar16 = *(ushort *)(param_1 + 2) | 4;
      param_1[1] = (uint)local_24;
      *param_1 = (uint)local_28;
      puVar17 = local_28;
      ppuVar19 = local_24;
    }
    else {
      uVar16 = *(ushort *)(param_1 + 2) | 8;
      *(ushort *)(param_1 + 2) = uVar16;
      *(undefined8 *)param_1 = local_30;
      if (param_2 != 0) {
        ppuVar19 = (uint **)(param_1 + 2);
        puVar17 = param_1;
        FUN_00058184();
        *(ushort *)(param_1 + 2) = *(ushort *)(param_1 + 2) & 0xfffd;
        goto LAB_000582d8;
      }
    }
    *(ushort *)(param_1 + 2) = uVar16 & 0xfffd;
  }
LAB_000582d8:
  if (local_1c == *(int *)puVar14) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_00190df8)();
  while ((*(ushort *)(puVar17 + 2) & 0x2400) != 0) {
    FUN_0004de90();
  }
  uVar1 = (uint)ppuVar19 & 3;
  uVar2 = (uint)(ppuVar19 + 1) & 3;
  iVar15 = *(int *)((int)(ppuVar19 + 1) - uVar2);
  uVar3 = (uint)(ppuVar19 + 2) & 3;
  iVar5 = *(int *)((int)(ppuVar19 + 2) - uVar3);
  puVar18 = ppuVar19[4];
  uVar4 = (uint)(ppuVar19 + 3) & 3;
  iVar6 = *(int *)((int)(ppuVar19 + 3) - uVar4);
  uVar7 = (int)ppuVar19 + 3U & 3;
  uVar8 = (int)ppuVar19 + 7U & 3;
  uVar11 = *(uint *)(((int)ppuVar19 + 7U) - uVar8);
  uVar9 = (int)ppuVar19 + 0xfU & 3;
  uVar12 = *(uint *)(((int)ppuVar19 + 0xfU) - uVar9);
  uVar10 = (int)ppuVar19 + 0xbU & 3;
  uVar13 = *(uint *)(((int)ppuVar19 + 0xbU) - uVar10);
  *puVar17 = (*(int *)((int)ppuVar19 - uVar1) << uVar1 * 8 | in_t0 & 0xffffffffU >> (4 - uVar1) * 8)
             & -1 << (uVar7 + 1) * 8 | *(uint *)(((int)ppuVar19 + 3U) - uVar7) >> (3 - uVar7) * 8;
  puVar17[1] = (iVar15 << uVar2 * 8 |
               *(ushort *)(puVar17 + 2) & 0x2400 & 0xffffffffU >> (4 - uVar2) * 8) &
               -1 << (uVar8 + 1) * 8 | uVar11 >> (3 - uVar8) * 8;
  puVar17[2] = (iVar5 << uVar3 * 8 | uVar20 & 0xffffffffU >> (4 - uVar3) * 8) &
               -1 << (uVar10 + 1) * 8 | uVar13 >> (3 - uVar10) * 8;
  puVar17[3] = (iVar6 << uVar4 * 8 | (uint)ppuVar19 & 0xffffffffU >> (4 - uVar4) * 8) &
               -1 << (uVar9 + 1) * 8 | uVar12 >> (3 - uVar9) * 8;
  puVar17[4] = (uint)puVar18;
  if (((uint)ppuVar19[2] & 0x8000000) == 0) {
    *(ushort *)(puVar17 + 2) = *(ushort *)(puVar17 + 2) & 0xe3ff | (ushort)uVar20;
  }
  return;
}

