
void anubis_crypt(uchar *plaintext,uchar *ciphertext,ulong32 (*roundKey) [4],int R)

{
  long lVar1;
  int iVar2;
  ulong uVar3;
  ulong uVar4;
  uint uVar5;
  uint uVar7;
  uint uVar8;
  ulong uVar9;
  ulong uVar10;
  ulong uVar11;
  ulong32 (*pauVar12) [4];
  ulong32 (*pauVar13) [4];
  uint uVar14;
  long in_FS_OFFSET;
  int local_78;
  ulong uVar6;
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  local_78 = (uint)plaintext[1] << 0x10;
  iVar2 = local_78;
  local_78 = (uint)plaintext[2] << 8;
  uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],
                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^
          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78);
  uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],
                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^
          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^
          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8);
  uVar9 = uVar4 >> 0x20;
  uVar8 = (uint)(uVar4 >> 0x20);
  uVar3 = uVar6 >> 0x20;
  uVar14 = (uint)(uVar6 >> 0x20);
  if (1 < R) {
    uVar11 = uVar6 & 0xffffffff;
    uVar4 = uVar4 & 0xffffffff;
    pauVar12 = roundKey + 1;
    do {
      pauVar13 = pauVar12 + 1;
      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^
              (*pauVar12)[0];
      uVar10 = uVar9 & 0xff;
      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^
              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];
      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^
              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];
      uVar6 = (ulong)uVar5;
      uVar9 = (ulong)uVar8;
      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]
      ;
      uVar11 = (ulong)uVar5;
      uVar3 = (ulong)uVar14;
      uVar4 = (ulong)uVar7;
      pauVar12 = pauVar13;
    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);
    uVar4 = (ulong)uVar7;
  }
  uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^
                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),
                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^
                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^
          *(ulong *)roundKey[R];
  uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^
                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),
                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^
                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^
          *(ulong *)(roundKey[R] + 2);
  uVar14 = (uint)uVar3;
  uVar8 = (uint)(uVar3 >> 0x20);
  *(uint *)ciphertext =
       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  *(uint *)(ciphertext + 4) =
       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  uVar14 = (uint)uVar4;
  uVar8 = (uint)(uVar4 >> 0x20);
  *(uint *)(ciphertext + 8) =
       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  *(uint *)(ciphertext + 0xc) =
       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}



void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)

{
  long lVar1;
  int iVar2;
  ulong uVar3;
  ulong uVar4;
  uint uVar5;
  uint uVar7;
  uint uVar8;
  ulong uVar9;
  ulong uVar10;
  ulong uVar11;
  ulong *puVar12;
  ulong *puVar13;
  uint uVar14;
  long in_FS_OFFSET;
  int local_78;
  ulong uVar6;
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  local_78 = (uint)param_1[1] << 0x10;
  iVar2 = local_78;
  local_78 = (uint)param_1[2] << 8;
  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],
                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^
          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);
  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],
                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^
          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^
          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);
  uVar9 = uVar4 >> 0x20;
  uVar8 = (uint)(uVar4 >> 0x20);
  uVar3 = uVar6 >> 0x20;
  uVar14 = (uint)(uVar6 >> 0x20);
  if (1 < param_4) {
    uVar11 = uVar6 & 0xffffffff;
    uVar4 = uVar4 & 0xffffffff;
    puVar12 = param_3 + 2;
    do {
      puVar13 = puVar12 + 2;
      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;
      uVar10 = uVar9 & 0xff;
      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);
      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);
      uVar6 = (ulong)uVar5;
      uVar9 = (ulong)uVar8;
      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)
               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^
               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);
      uVar11 = (ulong)uVar5;
      uVar3 = (ulong)uVar14;
      uVar4 = (ulong)uVar7;
      puVar12 = puVar13;
    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);
    uVar4 = (ulong)uVar7;
  }
  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),
                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^
          param_3[(long)param_4 * 2];
  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^
                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |
                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),
                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^
          (param_3 + (long)param_4 * 2)[1];
  uVar14 = (uint)uVar3;
  uVar8 = (uint)(uVar3 >> 0x20);
  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  uVar14 = (uint)uVar4;
  uVar8 = (uint)(uVar4 >> 0x20);
  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}


PUSH R15
PUSH R14
MOV R14D,ECX
PUSH R13
MOV R13,RDX
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOVZX R8D,byte ptr [RDI + 0xc]
MOVZX EDX,byte ptr [RDI + 0x3]
MOVZX EBX,byte ptr [RDI + 0x7]
MOVZX EBP,byte ptr [RDI + 0xb]
MOV qword ptr [RSP + 0x18],RSI
MOV dword ptr [RSP + 0x20],ECX
MOVZX ESI,byte ptr [RDI + 0x8]
SHL R8D,0x18
MOVZX ECX,byte ptr [RDI + 0x4]
MOVZX R9D,byte ptr [RDI + 0xf]
MOVZX R10D,byte ptr [RDI + 0x1]
MOVZX R11D,byte ptr [RDI + 0x5]
SHL ESI,0x18
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
MOVZX EAX,byte ptr [RDI]
SHL ECX,0x18
XOR ESI,EBP
XOR ECX,EBX
XOR R8D,R9D
SHL R10D,0x10
MOV dword ptr [RSP + 0x28],ESI
SHL EAX,0x18
SHL R11D,0x10
MOV dword ptr [RSP + 0x24],ECX
MOVD XMM0,dword ptr [RSP + 0x28]
XOR EAX,EDX
MOVD XMM5,dword ptr [RSP + 0x24]
MOV dword ptr [RSP + 0x2c],R8D
MOVDQU XMM6,xmmword ptr [R13]
MOVD XMM4,dword ptr [RSP + 0x2c]
MOV dword ptr [RSP],EAX
MOV dword ptr [RSP + 0x24],R11D
MOVD XMM1,dword ptr [RSP]
MOV dword ptr [RSP],R10D
MOVZX R12D,byte ptr [RDI + 0x9]
PUNPCKLDQ XMM0,XMM4
MOVZX R15D,byte ptr [RDI + 0xd]
MOVZX EAX,byte ptr [RDI + 0x2]
PUNPCKLDQ XMM1,XMM5
MOVZX EDX,byte ptr [RDI + 0x6]
MOVZX ECX,byte ptr [RDI + 0xa]
SHL R12D,0x10
PUNPCKLQDQ XMM1,XMM0
MOVZX EDI,byte ptr [RDI + 0xe]
SHL EAX,0x8
SHL R15D,0x10
MOV dword ptr [RSP + 0x28],R12D
SHL ECX,0x8
SHL EDX,0x8
MOV dword ptr [RSP + 0x2c],R15D
PXOR XMM1,XMM6
SHL EDI,0x8
MOVD XMM8,dword ptr [RSP]
MOV dword ptr [RSP],EAX
MOVD XMM2,dword ptr [RSP + 0x28]
MOVD XMM7,dword ptr [RSP + 0x2c]
MOV dword ptr [RSP + 0x28],ECX
MOVD XMM3,dword ptr [RSP + 0x24]
MOVD XMM11,dword ptr [RSP]
MOV dword ptr [RSP + 0x24],EDX
MOV dword ptr [RSP + 0x2c],EDI
MOVD XMM9,dword ptr [RSP + 0x28]
PUNPCKLDQ XMM2,XMM7
MOVD XMM10,dword ptr [RSP + 0x2c]
MOVD XMM12,dword ptr [RSP + 0x24]
PUNPCKLDQ XMM8,XMM3
PUNPCKLQDQ XMM8,XMM2
PUNPCKLDQ XMM9,XMM10
PUNPCKLDQ XMM11,XMM12
PUNPCKLQDQ XMM11,XMM9
PXOR XMM8,XMM11
PXOR XMM1,XMM8
MOVAPS xmmword ptr [RSP],XMM1
MOV RBX,qword ptr [RSP]
MOV RCX,qword ptr [RSP + 0x8]
MOV RSI,RBX
MOV RAX,RCX
SHR RSI,0x20
SHR RAX,0x20
CMP R14D,0x1
JLE 0x001175b0
LEA R14D,[R14 + -0x2]
MOV EDX,EAX
MOV EDI,ESI
MOV R8D,ECX
SHL R14,0x4
LEA R9,[R13 + 0x10]
MOV EAX,EBX
LEA R14,[R13 + R14*0x1 + 0x20]
LEA R12,[0x1a3ee0]
LEA RBP,[0x1a3ae0]
LEA R11,[0x1a36e0]
LEA R10,[0x1a32e0]
NOP dword ptr [RAX + RAX*0x1]
MOV EBX,EAX
MOV ECX,EDI
MOV R15D,R8D
ADD R9,0x10
SHR EBX,0x18
SHR ECX,0x18
MOV ESI,dword ptr [R12 + RBX*0x4]
SHR R15D,0x18
MOV EBX,EDX
XOR ESI,dword ptr [RBP + RCX*0x4]
SHR EBX,0x18
XOR ESI,dword ptr [R11 + R15*0x4]
MOV ECX,EAX
MOV R15D,EDI
SHR ECX,0x10
XOR ESI,dword ptr [R10 + RBX*0x4]
SHR R15D,0x10
XOR ESI,dword ptr [R9 + -0x10]
MOVZX EBX,R15B
MOV dword ptr [RSP],ESI
MOVZX ESI,CL
MOV ECX,R8D
MOV ESI,dword ptr [R12 + RSI*0x4]
XOR ESI,dword ptr [RBP + RBX*0x4]
MOV EBX,EDX
SHR ECX,0x10
SHR EBX,0x10
MOVZX R15D,CL
XOR ESI,dword ptr [R9 + -0xc]
MOVZX ECX,BL
MOV EBX,EDI
XOR ESI,dword ptr [R11 + R15*0x4]
MOVZX EDI,DIL
XOR ESI,dword ptr [R10 + RCX*0x4]
MOVZX EBX,BH
MOVZX ECX,AH
MOVZX EAX,AL
MOV ECX,dword ptr [R12 + RCX*0x4]
XOR ECX,dword ptr [RBP + RBX*0x4]
MOV EBX,R8D
MOVZX R8D,R8B
MOVZX EBX,BH
XOR ECX,dword ptr [R9 + -0x8]
MOV R15D,dword ptr [R12 + RAX*0x4]
XOR ECX,dword ptr [R11 + RBX*0x4]
MOVZX EBX,DH
MOVZX EDX,DL
XOR R15D,dword ptr [RBP + RDI*0x4]
XOR ECX,dword ptr [R10 + RBX*0x4]
XOR R15D,dword ptr [R11 + R8*0x4]
MOV EDI,ESI
XOR R15D,dword ptr [R10 + RDX*0x4]
XOR R15D,dword ptr [R9 + -0x4]
MOV R8D,ECX
MOV EDX,R15D
MOV EAX,dword ptr [RSP]
CMP R9,R14
JNZ 0x00117310
MOV EBX,EAX
MOV EAX,R15D
MOV R9D,EBX
MOV R15D,ESI
MOV R8D,ECX
SHR R9D,0x18
SHR R15D,0x18
MOV EDI,dword ptr [R12 + R9*0x4]
MOV EDX,dword ptr [RBP + R15*0x4]
SHR R8D,0x18
MOV R15D,EBX
MOV R9D,dword ptr [R11 + R8*0x4]
SHR R15D,0x10
MOV R14D,EDI
MOV EDI,EAX
AND EDX,0xff0000
AND R14D,0xff000000
SHR EDI,0x18
AND R9D,0xff00
OR EDX,R14D
MOVZX R14D,byte ptr [R10 + RDI*0x4]
OR R9D,R14D
XOR EDX,R9D
MOV R9D,ESI
MOV dword ptr [RSP],EDX
SHR R9D,0x10
MOVZX EDX,R15B
MOVD XMM15,dword ptr [RSP]
MOV EDI,dword ptr [R12 + RDX*0x4]
MOVZX R14D,R9B
MOV EDX,ECX
MOV R15D,dword ptr [RBP + R14*0x4]
SHR EDX,0x10
MOV R8D,EDI
MOVZX EDI,DL
AND R8D,0xff000000
AND R15D,0xff0000
MOV R9D,dword ptr [R11 + RDI*0x4]
MOVZX EDI,BH
OR R15D,R8D
MOV R8D,EAX
MOV EDI,dword ptr [R12 + RDI*0x4]
MOVZX EBX,BL
SHR R8D,0x10
AND R9D,0xff00
MOV R12D,dword ptr [R12 + RBX*0x4]
MOVZX R14D,R8B
MOVZX EDX,byte ptr [R10 + R14*0x4]
AND R12D,0xff000000
OR R9D,EDX
MOV EDX,ESI
MOVZX ESI,SIL
XOR R15D,R9D
MOV dword ptr [RSP + 0x24],R15D
MOV R15D,EDI
MOVZX EDI,DH
MOVZX EDX,CH
MOV R14D,dword ptr [RBP + RDI*0x4]
MOVZX ECX,CL
MOVZX EDI,AH
MOV EBP,dword ptr [RBP + RSI*0x4]
AND R15D,0xff000000
MOVZX EAX,AL
MOVD XMM0,dword ptr [RSP + 0x24]
AND R14D,0xff0000
AND EBP,0xff0000
OR R14D,R15D
MOV R15D,dword ptr [R11 + RDX*0x4]
MOV R11D,dword ptr [R11 + RCX*0x4]
OR EBP,R12D
MOV R9D,R14D
MOVZX R14D,byte ptr [R10 + RDI*0x4]
MOVZX R10D,byte ptr [R10 + RAX*0x4]
PUNPCKLDQ XMM15,XMM0
AND R15D,0xff00
MOVSXD RDX,dword ptr [RSP + 0x20]
MOV RDI,qword ptr [RSP + 0x18]
AND R11D,0xff00
OR R15D,R14D
OR R10D,R11D
XOR R9D,R15D
XOR EBP,R10D
SHL RDX,0x4
MOV dword ptr [RSP + 0x28],R9D
MOVD XMM13,dword ptr [RSP + 0x28]
MOV dword ptr [RSP + 0x2c],EBP
MOVD XMM14,dword ptr [RSP + 0x2c]
MOVDQU XMM4,xmmword ptr [R13 + RDX*0x1]
PUNPCKLDQ XMM13,XMM14
PUNPCKLQDQ XMM15,XMM13
PXOR XMM15,XMM4
MOVAPS xmmword ptr [RSP],XMM15
MOV R13,qword ptr [RSP]
MOV R15,qword ptr [RSP + 0x8]
MOV R8D,R13D
MOV R14D,R15D
SHR R13,0x20
SHR R15,0x20
BSWAP R8D
BSWAP R13D
MOV dword ptr [RDI],R8D
MOV dword ptr [RDI + 0x4],R13D
BSWAP R14D
BSWAP R15D
MOV dword ptr [RDI + 0x8],R14D
MOV dword ptr [RDI + 0xc],R15D
MOV RAX,qword ptr [RSP + 0x38]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x001175d1
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA R12,[0x1a3ee0]
LEA RBP,[0x1a3ae0]
LEA R11,[0x1a36e0]
LEA R10,[0x1a32e0]
JMP 0x001173db
CALL 0x00113880
(translation_unit "void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)" identifier (parameter_list "(byte *param_1,uint *param_2,ulong *param_3,int param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "ulong *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_78 = (uint)param_1[1] << 0x10;" (assignment_expression "local_78 = (uint)param_1[1] << 0x10" identifier = (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "iVar2 = local_78;" (assignment_expression "iVar2 = local_78" identifier = identifier) ;) (expression_statement "local_78 = (uint)param_1[2] << 8;" (assignment_expression "local_78 = (uint)param_1[2] << 8" identifier = (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);" (assignment_expression "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" identifier = (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3" (call_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" identifier (argument_list "((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" ( (binary_expression "(uint)param_1[4] << 0x18 ^ (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) , (binary_expression "(uint)*param_1 << 0x18 ^ (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) ^ (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ))) ^ (pointer_expression "*param_3" * identifier)) ^ (call_expression "CONCAT44((uint)param_1[5] << 0x10,iVar2)" identifier (argument_list "((uint)param_1[5] << 0x10,iVar2)" ( (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) << number_literal) , identifier )))) ^ (call_expression "CONCAT44((uint)param_1[6] << 8,local_78)" identifier (argument_list "((uint)param_1[6] << 8,local_78)" ( (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) << number_literal) , identifier ))))) ;) (expression_statement "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);" (assignment_expression "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" identifier = (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1]" (call_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" identifier (argument_list "((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" ( (binary_expression "(uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) , (binary_expression "(uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ))) ^ (subscript_expression "param_3[1]" identifier [ number_literal ])) ^ (call_expression "CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" identifier (argument_list "((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" ( (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) << number_literal) )))) ^ (call_expression "CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" identifier (argument_list "((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" ( (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) << number_literal) ))))) ;) (expression_statement "uVar9 = uVar4 >> 0x20;" (assignment_expression "uVar9 = uVar4 >> 0x20" identifier = (binary_expression "uVar4 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar3 = uVar6 >> 0x20;" (assignment_expression "uVar3 = uVar6 >> 0x20" identifier = (binary_expression "uVar6 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar14 = (uint)(uVar6 >> 0x20);" (assignment_expression "uVar14 = (uint)(uVar6 >> 0x20)" identifier = (call_expression "(uint)(uVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 >> 0x20)" ( (binary_expression "uVar6 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" if (parenthesized_expression "(1 < param_4)" ( (binary_expression "1 < param_4" number_literal < identifier) )) (compound_statement "{\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" { (expression_statement "uVar11 = uVar6 & 0xffffffff;" (assignment_expression "uVar11 = uVar6 & 0xffffffff" identifier = (binary_expression "uVar6 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = uVar4 & 0xffffffff;" (assignment_expression "uVar4 = uVar4 & 0xffffffff" identifier = (binary_expression "uVar4 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "puVar12 = param_3 + 2;" (assignment_expression "puVar12 = param_3 + 2" identifier = (binary_expression "param_3 + 2" identifier + number_literal)) ;) (do_statement "do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);" do (compound_statement "{\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    }" { (expression_statement "puVar13 = puVar12 + 2;" (assignment_expression "puVar13 = puVar12 + 2" identifier = (binary_expression "puVar12 + 2" identifier + number_literal)) ;) (expression_statement "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;" (assignment_expression "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x18) * 4" (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x18) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 0x18) * 4" (parenthesized_expression "(uVar11 >> 0x18)" ( (binary_expression "uVar11 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x18) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 0x18) * 4" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (binary_expression "(uint)*puVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "uVar10 = uVar9 & 0xff;" (assignment_expression "uVar10 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" ( (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 0x10 & 0xff)" ( (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)puVar12 + 4)" * (cast_expression "(uint *)((long)puVar12 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 4)" ( (binary_expression "(long)puVar12 + 4" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 0x10 & 0xff)" ( (binary_expression "uVar11 >> 0x10 & 0xff" (binary_expression "uVar11 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 0x10 & 0xff)" ( (binary_expression "uVar3 >> 0x10 & 0xff" (binary_expression "uVar3 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))))) ;) (expression_statement "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1]" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" ( (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 8 & 0xff)" ( (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (cast_expression "(uint)puVar12[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar12[1]" identifier [ number_literal ]))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 8 & 0xff)" ( (binary_expression "uVar11 >> 8 & 0xff" (binary_expression "uVar11 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 8 & 0xff)" ( (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))))) ;) (expression_statement "uVar6 = (ulong)uVar5;" (assignment_expression "uVar6 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);" (assignment_expression "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + uVar10 * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + uVar10 * 4)" ( (binary_expression "&DAT_001a3ae0 + uVar10 * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 & 0xff) * 4" (parenthesized_expression "(uVar11 & 0xff)" ( (binary_expression "uVar11 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 & 0xff) * 4" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)puVar12 + 0xc)" * (cast_expression "(uint *)((long)puVar12 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 0xc)" ( (binary_expression "(long)puVar12 + 0xc" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar11 = (ulong)uVar5;" (assignment_expression "uVar11 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = (ulong)uVar14;" (assignment_expression "uVar3 = (ulong)uVar14" identifier = (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4)" ( (binary_expression "puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4" identifier != (binary_expression "param_3 + (ulong)(param_4 - 2) * 2 + 4" (binary_expression "param_3 + (ulong)(param_4 - 2) * 2" identifier + (binary_expression "(ulong)(param_4 - 2) * 2" (call_expression "(ulong)(param_4 - 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_4 - 2)" ( (binary_expression "param_4 - 2" identifier - number_literal) ))) * number_literal)) + number_literal)) )) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];" (assignment_expression "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" identifier = (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" identifier (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" ( (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" ( (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x10 & 0xff)" ( (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 0x10 & 0xff)" ( (binary_expression "uVar14 >> 0x10 & 0xff" (binary_expression "uVar14 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal) ])) ))) , (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x18 & 0xff)" ( (binary_expression "uVar4 >> 0x18 & 0xff" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x18 & 0xff)" ( (binary_expression "uVar6 >> 0x18 & 0xff" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 0x18) * 4" (call_expression "(ulong)(uVar14 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 0x18)" ( (binary_expression "uVar14 >> 0x18" identifier >> number_literal) ))) * number_literal) ])) ))) ))) ^ (subscript_expression "param_3[(long)param_4 * 2]" identifier [ (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ]))) ;) (expression_statement "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];" (assignment_expression "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" identifier = (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" identifier (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" ( (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" ( (binary_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 & 0xff) * 4" (call_expression "(ulong)(uVar14 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 & 0xff)" ( (binary_expression "uVar14 & 0xff" identifier & number_literal) ))) * number_literal) ]) | (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 & 0xff) * 4" (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal)) ))) , (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(byte)(uVar8 >> 8) * 4" (call_expression "(ulong)(byte)(uVar8 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" ( (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 8 & 0xff)" ( (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 8 & 0xff)" ( (binary_expression "uVar14 >> 8 & 0xff" (binary_expression "uVar14 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal) ])) ))) ))) ^ (subscript_expression "(param_3 + (long)param_4 * 2)[1]" (parenthesized_expression "(param_3 + (long)param_4 * 2)" ( (binary_expression "param_3 + (long)param_4 * 2" identifier + (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )) [ number_literal ]))) ;) (expression_statement "uVar14 = (uint)uVar3;" (assignment_expression "uVar14 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar3 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar3 >> 0x20)" identifier = (call_expression "(uint)(uVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar14 = (uint)uVar4;" (assignment_expression "uVar14 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void anubis_crypt(uchar *plaintext,uchar *ciphertext,ulong32 (*roundKey) [4],int R)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong32 (*pauVar12) [4];\n  ulong32 (*pauVar13) [4];\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)plaintext[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)plaintext[2] << 8;\n  uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < R) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    pauVar12 = roundKey + 1;\n    do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R];\n  uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2);\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *(uint *)ciphertext =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 4) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  *(uint *)(ciphertext + 8) =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 0xc) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void anubis_crypt(uchar *plaintext,uchar *ciphertext,ulong32 (*roundKey) [4],int R)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong32 (*pauVar12) [4];\n  ulong32 (*pauVar13) [4];\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)plaintext[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)plaintext[2] << 8;\n  uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < R) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    pauVar12 = roundKey + 1;\n    do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R];\n  uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2);\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *(uint *)ciphertext =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 4) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  *(uint *)(ciphertext + 8) =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 0xc) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "anubis_crypt(uchar *plaintext,uchar *ciphertext,ulong32 (*roundKey) [4],int R)" identifier (parameter_list "(uchar *plaintext,uchar *ciphertext,ulong32 (*roundKey) [4],int R)" ( (parameter_declaration "uchar *plaintext" type_identifier (pointer_declarator "*plaintext" * identifier)) , (parameter_declaration "uchar *ciphertext" type_identifier (pointer_declarator "*ciphertext" * identifier)) , (parameter_declaration "ulong32 (*roundKey) [4]" type_identifier (array_declarator "(*roundKey) [4]" (parenthesized_declarator "(*roundKey)" ( (pointer_declarator "*roundKey" * identifier) )) [ number_literal ])) , (parameter_declaration "int R" primitive_type identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong32 (*pauVar12) [4];\n  ulong32 (*pauVar13) [4];\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)plaintext[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)plaintext[2] << 8;\n  uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < R) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    pauVar12 = roundKey + 1;\n    do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R];\n  uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2);\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *(uint *)ciphertext =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 4) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  *(uint *)(ciphertext + 8) =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  *(uint *)(ciphertext + 0xc) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (expression_statement "ulong32 (*pauVar12) [4];" (subscript_expression "ulong32 (*pauVar12) [4]" (call_expression "ulong32 (*pauVar12)" identifier (argument_list "(*pauVar12)" ( (pointer_expression "*pauVar12" * identifier) ))) [ number_literal ]) ;) (expression_statement "ulong32 (*pauVar13) [4];" (subscript_expression "ulong32 (*pauVar13) [4]" (call_expression "ulong32 (*pauVar13)" identifier (argument_list "(*pauVar13)" ( (pointer_expression "*pauVar13" * identifier) ))) [ number_literal ]) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_78 = (uint)plaintext[1] << 0x10;" (assignment_expression "local_78 = (uint)plaintext[1] << 0x10" identifier = (binary_expression "(uint)plaintext[1] << 0x10" (cast_expression "(uint)plaintext[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[1]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "iVar2 = local_78;" (assignment_expression "iVar2 = local_78" identifier = identifier) ;) (expression_statement "local_78 = (uint)plaintext[2] << 8;" (assignment_expression "local_78 = (uint)plaintext[2] << 8" identifier = (binary_expression "(uint)plaintext[2] << 8" (cast_expression "(uint)plaintext[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[2]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78);" (assignment_expression "uVar4 = CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78)" identifier = (binary_expression "CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2) ^ CONCAT44((uint)plaintext[6] << 8,local_78)" (binary_expression "CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey ^\n          CONCAT44((uint)plaintext[5] << 0x10,iVar2)" (binary_expression "CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3]) ^ *(ulong *)*roundKey" (call_expression "CONCAT44((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3])" identifier (argument_list "((uint)plaintext[4] << 0x18 ^ (uint)plaintext[7],\n                   (uint)*plaintext << 0x18 ^ (uint)plaintext[3])" ( (binary_expression "(uint)plaintext[4] << 0x18 ^ (uint)plaintext[7]" (binary_expression "(uint)plaintext[4] << 0x18" (cast_expression "(uint)plaintext[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[4]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)plaintext[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[7]" identifier [ number_literal ]))) , (binary_expression "(uint)*plaintext << 0x18 ^ (uint)plaintext[3]" (binary_expression "(uint)*plaintext << 0x18" (binary_expression "(uint)*plaintext" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) ^ (cast_expression "(uint)plaintext[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[3]" identifier [ number_literal ]))) ))) ^ (pointer_expression "*(ulong *)*roundKey" * (cast_expression "(ulong *)*roundKey" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*roundKey" * identifier)))) ^ (call_expression "CONCAT44((uint)plaintext[5] << 0x10,iVar2)" identifier (argument_list "((uint)plaintext[5] << 0x10,iVar2)" ( (binary_expression "(uint)plaintext[5] << 0x10" (cast_expression "(uint)plaintext[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[5]" identifier [ number_literal ])) << number_literal) , identifier )))) ^ (call_expression "CONCAT44((uint)plaintext[6] << 8,local_78)" identifier (argument_list "((uint)plaintext[6] << 8,local_78)" ( (binary_expression "(uint)plaintext[6] << 8" (cast_expression "(uint)plaintext[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[6]" identifier [ number_literal ])) << number_literal) , identifier ))))) ;) (expression_statement "uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8);" (assignment_expression "uVar6 = CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8)" identifier = (binary_expression "CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10) ^\n          CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8)" (binary_expression "CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2) ^\n          CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10)" (binary_expression "CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]) ^ *(ulong *)(*roundKey + 2)" (call_expression "CONCAT44((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb])" identifier (argument_list "((uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf],\n                   (uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb])" ( (binary_expression "(uint)plaintext[0xc] << 0x18 ^ (uint)plaintext[0xf]" (binary_expression "(uint)plaintext[0xc] << 0x18" (cast_expression "(uint)plaintext[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[0xc]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)plaintext[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[0xf]" identifier [ number_literal ]))) , (binary_expression "(uint)plaintext[8] << 0x18 ^ (uint)plaintext[0xb]" (binary_expression "(uint)plaintext[8] << 0x18" (cast_expression "(uint)plaintext[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[8]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)plaintext[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[0xb]" identifier [ number_literal ]))) ))) ^ (pointer_expression "*(ulong *)(*roundKey + 2)" * (cast_expression "(ulong *)(*roundKey + 2)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*roundKey + 2)" ( (binary_expression "*roundKey + 2" (pointer_expression "*roundKey" * identifier) + number_literal) ))))) ^ (call_expression "CONCAT44((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10)" identifier (argument_list "((uint)plaintext[0xd] << 0x10,(uint)plaintext[9] << 0x10)" ( (binary_expression "(uint)plaintext[0xd] << 0x10" (cast_expression "(uint)plaintext[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[0xd]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)plaintext[9] << 0x10" (cast_expression "(uint)plaintext[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[9]" identifier [ number_literal ])) << number_literal) )))) ^ (call_expression "CONCAT44((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8)" identifier (argument_list "((uint)plaintext[0xe] << 8,(uint)plaintext[10] << 8)" ( (binary_expression "(uint)plaintext[0xe] << 8" (cast_expression "(uint)plaintext[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[0xe]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)plaintext[10] << 8" (cast_expression "(uint)plaintext[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "plaintext[10]" identifier [ number_literal ])) << number_literal) ))))) ;) (expression_statement "uVar9 = uVar4 >> 0x20;" (assignment_expression "uVar9 = uVar4 >> 0x20" identifier = (binary_expression "uVar4 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar3 = uVar6 >> 0x20;" (assignment_expression "uVar3 = uVar6 >> 0x20" identifier = (binary_expression "uVar6 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar14 = (uint)(uVar6 >> 0x20);" (assignment_expression "uVar14 = (uint)(uVar6 >> 0x20)" identifier = (call_expression "(uint)(uVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 >> 0x20)" ( (binary_expression "uVar6 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (1 < R) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    pauVar12 = roundKey + 1;\n    do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);\n    uVar4 = (ulong)uVar7;\n  }" if (parenthesized_expression "(1 < R)" ( (binary_expression "1 < R" number_literal < identifier) )) (compound_statement "{\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    pauVar12 = roundKey + 1;\n    do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);\n    uVar4 = (ulong)uVar7;\n  }" { (expression_statement "uVar11 = uVar6 & 0xffffffff;" (assignment_expression "uVar11 = uVar6 & 0xffffffff" identifier = (binary_expression "uVar6 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = uVar4 & 0xffffffff;" (assignment_expression "uVar4 = uVar4 & 0xffffffff" identifier = (binary_expression "uVar4 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "pauVar12 = roundKey + 1;" (assignment_expression "pauVar12 = roundKey + 1" identifier = (binary_expression "roundKey + 1" identifier + number_literal)) ;) (do_statement "do {\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    } while (pauVar13 != roundKey + (ulong)(R - 2) + 2);" do (compound_statement "{\n      pauVar13 = pauVar12 + 1;\n      uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];\n      uVar10 = uVar9 & 0xff;\n      uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];\n      uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      pauVar12 = pauVar13;\n    }" { (expression_statement "pauVar13 = pauVar12 + 1;" (assignment_expression "pauVar13 = pauVar12 + 1" identifier = (binary_expression "pauVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0];" (assignment_expression "uVar7 = T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0]" identifier = (binary_expression "T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18] ^\n              (*pauVar12)[0]" (binary_expression "T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18] ^ T3[uVar3 >> 0x18]" (binary_expression "T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18] ^ T2[uVar11 >> 0x18]" (binary_expression "T0[uVar4 >> 0x18] ^ T1[uVar9 >> 0x18]" (subscript_expression "T0[uVar4 >> 0x18]" identifier [ (binary_expression "uVar4 >> 0x18" identifier >> number_literal) ]) ^ (subscript_expression "T1[uVar9 >> 0x18]" identifier [ (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ])) ^ (subscript_expression "T2[uVar11 >> 0x18]" identifier [ (binary_expression "uVar11 >> 0x18" identifier >> number_literal) ])) ^ (subscript_expression "T3[uVar3 >> 0x18]" identifier [ (binary_expression "uVar3 >> 0x18" identifier >> number_literal) ])) ^ (subscript_expression "(*pauVar12)[0]" (parenthesized_expression "(*pauVar12)" ( (pointer_expression "*pauVar12" * identifier) )) [ number_literal ]))) ;) (expression_statement "uVar10 = uVar9 & 0xff;" (assignment_expression "uVar10 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff];" (assignment_expression "uVar8 = T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff]" identifier = (binary_expression "T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff] ^ T3[uVar3 >> 0x10 & 0xff]" (binary_expression "T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1] ^\n              T2[uVar11 >> 0x10 & 0xff]" (binary_expression "T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff] ^ (*pauVar12)[1]" (binary_expression "T0[uVar4 >> 0x10 & 0xff] ^ T1[uVar9 >> 0x10 & 0xff]" (subscript_expression "T0[uVar4 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) ]) ^ (subscript_expression "T1[uVar9 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "(*pauVar12)[1]" (parenthesized_expression "(*pauVar12)" ( (pointer_expression "*pauVar12" * identifier) )) [ number_literal ])) ^ (subscript_expression "T2[uVar11 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar11 >> 0x10 & 0xff" (binary_expression "uVar11 >> 0x10" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "T3[uVar3 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar3 >> 0x10 & 0xff" (binary_expression "uVar3 >> 0x10" identifier >> number_literal) & number_literal) ]))) ;) (expression_statement "uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff];" (assignment_expression "uVar5 = T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff]" identifier = (binary_expression "T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff] ^ T3[uVar3 >> 8 & 0xff]" (binary_expression "T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2] ^\n              T2[uVar11 >> 8 & 0xff]" (binary_expression "T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff] ^ (*pauVar12)[2]" (binary_expression "T0[uVar4 >> 8 & 0xff] ^ T1[uVar9 >> 8 & 0xff]" (subscript_expression "T0[uVar4 >> 8 & 0xff]" identifier [ (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) ]) ^ (subscript_expression "T1[uVar9 >> 8 & 0xff]" identifier [ (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "(*pauVar12)[2]" (parenthesized_expression "(*pauVar12)" ( (pointer_expression "*pauVar12" * identifier) )) [ number_literal ])) ^ (subscript_expression "T2[uVar11 >> 8 & 0xff]" identifier [ (binary_expression "uVar11 >> 8 & 0xff" (binary_expression "uVar11 >> 8" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "T3[uVar3 >> 8 & 0xff]" identifier [ (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal) ]))) ;) (expression_statement "uVar6 = (ulong)uVar5;" (assignment_expression "uVar6 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]\n      ;" (assignment_expression "uVar14 = T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]" identifier = (binary_expression "T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff] ^ (*pauVar12)[3]" (binary_expression "T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff] ^ T3[uVar3 & 0xff]" (binary_expression "T0[uVar4 & 0xff] ^ T1[uVar10] ^ T2[uVar11 & 0xff]" (binary_expression "T0[uVar4 & 0xff] ^ T1[uVar10]" (subscript_expression "T0[uVar4 & 0xff]" identifier [ (binary_expression "uVar4 & 0xff" identifier & number_literal) ]) ^ (subscript_expression "T1[uVar10]" identifier [ identifier ])) ^ (subscript_expression "T2[uVar11 & 0xff]" identifier [ (binary_expression "uVar11 & 0xff" identifier & number_literal) ])) ^ (subscript_expression "T3[uVar3 & 0xff]" identifier [ (binary_expression "uVar3 & 0xff" identifier & number_literal) ])) ^ (subscript_expression "(*pauVar12)[3]" (parenthesized_expression "(*pauVar12)" ( (pointer_expression "*pauVar12" * identifier) )) [ number_literal ]))) ;) (expression_statement "uVar11 = (ulong)uVar5;" (assignment_expression "uVar11 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = (ulong)uVar14;" (assignment_expression "uVar3 = (ulong)uVar14" identifier = (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pauVar12 = pauVar13;" (assignment_expression "pauVar12 = pauVar13" identifier = identifier) ;) }) while (parenthesized_expression "(pauVar13 != roundKey + (ulong)(R - 2) + 2)" ( (binary_expression "pauVar13 != roundKey + (ulong)(R - 2) + 2" identifier != (binary_expression "roundKey + (ulong)(R - 2) + 2" (binary_expression "roundKey + (ulong)(R - 2)" identifier + (call_expression "(ulong)(R - 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(R - 2)" ( (binary_expression "R - 2" identifier - number_literal) )))) + number_literal)) )) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R];" (assignment_expression "uVar3 = CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R]" identifier = (binary_expression "CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])) ^\n          *(ulong *)roundKey[R]" (call_expression "CONCAT44((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18]))" identifier (argument_list "((T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]),\n                   (T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18]))" ( (binary_expression "(T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff])" (parenthesized_expression "(T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000)" ( (binary_expression "T1[uVar8 >> 0x10 & 0xff] & 0xff0000 | T0[uVar4 >> 0x10 & 0xff] & 0xff000000" (binary_expression "T1[uVar8 >> 0x10 & 0xff] & 0xff0000" (subscript_expression "T1[uVar8 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ]) & number_literal) | (binary_expression "T0[uVar4 >> 0x10 & 0xff] & 0xff000000" (subscript_expression "T0[uVar4 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) ]) & number_literal)) )) ^ (parenthesized_expression "(T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff])" ( (binary_expression "T2[uVar6 >> 0x10 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x10 & 0xff]" (binary_expression "T2[uVar6 >> 0x10 & 0xff] & 0xff00" (subscript_expression "T2[uVar6 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ]) & number_literal) | (cast_expression "(uint)(byte)T3[uVar14 >> 0x10 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)T3[uVar14 >> 0x10 & 0xff]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "T3[uVar14 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar14 >> 0x10 & 0xff" (binary_expression "uVar14 >> 0x10" identifier >> number_literal) & number_literal) ])))) ))) , (binary_expression "(T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])" (parenthesized_expression "(T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000)" ( (binary_expression "T1[uVar8 >> 0x18] & 0xff0000 | T0[uVar4 >> 0x18 & 0xff] & 0xff000000" (binary_expression "T1[uVar8 >> 0x18] & 0xff0000" (subscript_expression "T1[uVar8 >> 0x18]" identifier [ (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ]) & number_literal) | (binary_expression "T0[uVar4 >> 0x18 & 0xff] & 0xff000000" (subscript_expression "T0[uVar4 >> 0x18 & 0xff]" identifier [ (binary_expression "uVar4 >> 0x18 & 0xff" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) & number_literal) ]) & number_literal)) )) ^ (parenthesized_expression "(T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18])" ( (binary_expression "T2[uVar6 >> 0x18 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 0x18]" (binary_expression "T2[uVar6 >> 0x18 & 0xff] & 0xff00" (subscript_expression "T2[uVar6 >> 0x18 & 0xff]" identifier [ (binary_expression "uVar6 >> 0x18 & 0xff" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) & number_literal) ]) & number_literal) | (cast_expression "(uint)(byte)T3[uVar14 >> 0x18]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)T3[uVar14 >> 0x18]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "T3[uVar14 >> 0x18]" identifier [ (binary_expression "uVar14 >> 0x18" identifier >> number_literal) ])))) ))) ))) ^ (pointer_expression "*(ulong *)roundKey[R]" * (cast_expression "(ulong *)roundKey[R]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "roundKey[R]" identifier [ identifier ]))))) ;) (expression_statement "uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2);" (assignment_expression "uVar4 = CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2)" identifier = (binary_expression "CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])) ^\n          *(ulong *)(roundKey[R] + 2)" (call_expression "CONCAT44((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff]))" identifier (argument_list "((T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00),\n                   (T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff]))" ( (binary_expression "(T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000) ^\n                   ((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00)" (parenthesized_expression "(T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000)" ( (binary_expression "T1[uVar8 & 0xff] & 0xff0000 | T0[uVar4 & 0xff] & 0xff000000" (binary_expression "T1[uVar8 & 0xff] & 0xff0000" (subscript_expression "T1[uVar8 & 0xff]" identifier [ (binary_expression "uVar8 & 0xff" identifier & number_literal) ]) & number_literal) | (binary_expression "T0[uVar4 & 0xff] & 0xff000000" (subscript_expression "T0[uVar4 & 0xff]" identifier [ (binary_expression "uVar4 & 0xff" identifier & number_literal) ]) & number_literal)) )) ^ (parenthesized_expression "((uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00)" ( (binary_expression "(uint)(byte)T3[uVar14 & 0xff] | T2[uVar6 & 0xff] & 0xff00" (cast_expression "(uint)(byte)T3[uVar14 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)T3[uVar14 & 0xff]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "T3[uVar14 & 0xff]" identifier [ (binary_expression "uVar14 & 0xff" identifier & number_literal) ]))) | (binary_expression "T2[uVar6 & 0xff] & 0xff00" (subscript_expression "T2[uVar6 & 0xff]" identifier [ (binary_expression "uVar6 & 0xff" identifier & number_literal) ]) & number_literal)) ))) , (binary_expression "(T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000) ^\n                   (T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])" (parenthesized_expression "(T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000)" ( (binary_expression "T1[(byte)(uVar8 >> 8)] & 0xff0000 | T0[uVar4 >> 8 & 0xff] & 0xff000000" (binary_expression "T1[(byte)(uVar8 >> 8)] & 0xff0000" (subscript_expression "T1[(byte)(uVar8 >> 8)]" identifier [ (call_expression "(byte)(uVar8 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) ))) ]) & number_literal) | (binary_expression "T0[uVar4 >> 8 & 0xff] & 0xff000000" (subscript_expression "T0[uVar4 >> 8 & 0xff]" identifier [ (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) ]) & number_literal)) )) ^ (parenthesized_expression "(T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff])" ( (binary_expression "T2[uVar6 >> 8 & 0xff] & 0xff00 | (uint)(byte)T3[uVar14 >> 8 & 0xff]" (binary_expression "T2[uVar6 >> 8 & 0xff] & 0xff00" (subscript_expression "T2[uVar6 >> 8 & 0xff]" identifier [ (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) ]) & number_literal) | (cast_expression "(uint)(byte)T3[uVar14 >> 8 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)T3[uVar14 >> 8 & 0xff]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "T3[uVar14 >> 8 & 0xff]" identifier [ (binary_expression "uVar14 >> 8 & 0xff" (binary_expression "uVar14 >> 8" identifier >> number_literal) & number_literal) ])))) ))) ))) ^ (pointer_expression "*(ulong *)(roundKey[R] + 2)" * (cast_expression "(ulong *)(roundKey[R] + 2)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(roundKey[R] + 2)" ( (binary_expression "roundKey[R] + 2" (subscript_expression "roundKey[R]" identifier [ identifier ]) + number_literal) )))))) ;) (expression_statement "uVar14 = (uint)uVar3;" (assignment_expression "uVar14 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar3 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar3 >> 0x20)" identifier = (call_expression "(uint)(uVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "*(uint *)ciphertext =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "*(uint *)ciphertext =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (pointer_expression "*(uint *)ciphertext" * (cast_expression "(uint *)ciphertext" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "*(uint *)(ciphertext + 4) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "*(uint *)(ciphertext + 4) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (pointer_expression "*(uint *)(ciphertext + 4)" * (cast_expression "(uint *)(ciphertext + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ciphertext + 4)" ( (binary_expression "ciphertext + 4" identifier + number_literal) )))) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar14 = (uint)uVar4;" (assignment_expression "uVar14 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "*(uint *)(ciphertext + 8) =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "*(uint *)(ciphertext + 8) =\n       uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (pointer_expression "*(uint *)(ciphertext + 8)" * (cast_expression "(uint *)(ciphertext + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ciphertext + 8)" ( (binary_expression "ciphertext + 8" identifier + number_literal) )))) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "*(uint *)(ciphertext + 0xc) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "*(uint *)(ciphertext + 0xc) =\n       uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (pointer_expression "*(uint *)(ciphertext + 0xc)" * (cast_expression "(uint *)(ciphertext + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ciphertext + 0xc)" ( (binary_expression "ciphertext + 0xc" identifier + number_literal) )))) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)" identifier (parameter_list "(byte *param_1,uint *param_2,ulong *param_3,int param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "ulong *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_78 = (uint)param_1[1] << 0x10;" (assignment_expression "local_78 = (uint)param_1[1] << 0x10" identifier = (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "iVar2 = local_78;" (assignment_expression "iVar2 = local_78" identifier = identifier) ;) (expression_statement "local_78 = (uint)param_1[2] << 8;" (assignment_expression "local_78 = (uint)param_1[2] << 8" identifier = (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) << number_literal)) ;) (expression_statement "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);" (assignment_expression "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" identifier = (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3" (call_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" identifier (argument_list "((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" ( (binary_expression "(uint)param_1[4] << 0x18 ^ (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) , (binary_expression "(uint)*param_1 << 0x18 ^ (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier) << number_literal) ^ (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ))) ^ (pointer_expression "*param_3" * identifier)) ^ (call_expression "CONCAT44((uint)param_1[5] << 0x10,iVar2)" identifier (argument_list "((uint)param_1[5] << 0x10,iVar2)" ( (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[5]" identifier [ number_literal ])) << number_literal) , identifier )))) ^ (call_expression "CONCAT44((uint)param_1[6] << 8,local_78)" identifier (argument_list "((uint)param_1[6] << 8,local_78)" ( (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[6]" identifier [ number_literal ])) << number_literal) , identifier ))))) ;) (expression_statement "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);" (assignment_expression "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" identifier = (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1]" (call_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" identifier (argument_list "((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" ( (binary_expression "(uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[0xf]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) , (binary_expression "(uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) << number_literal) ^ (cast_expression "(uint)param_1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ))) ^ (subscript_expression "param_3[1]" identifier [ number_literal ])) ^ (call_expression "CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" identifier (argument_list "((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" ( (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) << number_literal) )))) ^ (call_expression "CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" identifier (argument_list "((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" ( (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ])) << number_literal) , (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[10]" identifier [ number_literal ])) << number_literal) ))))) ;) (expression_statement "uVar9 = uVar4 >> 0x20;" (assignment_expression "uVar9 = uVar4 >> 0x20" identifier = (binary_expression "uVar4 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar3 = uVar6 >> 0x20;" (assignment_expression "uVar3 = uVar6 >> 0x20" identifier = (binary_expression "uVar6 >> 0x20" identifier >> number_literal)) ;) (expression_statement "uVar14 = (uint)(uVar6 >> 0x20);" (assignment_expression "uVar14 = (uint)(uVar6 >> 0x20)" identifier = (call_expression "(uint)(uVar6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 >> 0x20)" ( (binary_expression "uVar6 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" if (parenthesized_expression "(1 < param_4)" ( (binary_expression "1 < param_4" number_literal < identifier) )) (compound_statement "{\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" { (expression_statement "uVar11 = uVar6 & 0xffffffff;" (assignment_expression "uVar11 = uVar6 & 0xffffffff" identifier = (binary_expression "uVar6 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "uVar4 = uVar4 & 0xffffffff;" (assignment_expression "uVar4 = uVar4 & 0xffffffff" identifier = (binary_expression "uVar4 & 0xffffffff" identifier & number_literal)) ;) (expression_statement "puVar12 = param_3 + 2;" (assignment_expression "puVar12 = param_3 + 2" identifier = (binary_expression "param_3 + 2" identifier + number_literal)) ;) (do_statement "do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);" do (compound_statement "{\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    }" { (expression_statement "puVar13 = puVar12 + 2;" (assignment_expression "puVar13 = puVar12 + 2" identifier = (binary_expression "puVar12 + 2" identifier + number_literal)) ;) (expression_statement "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;" (assignment_expression "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x18) * 4" (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x18) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 0x18) * 4" (parenthesized_expression "(uVar11 >> 0x18)" ( (binary_expression "uVar11 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x18) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 0x18) * 4" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (binary_expression "(uint)*puVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "uVar10 = uVar9 & 0xff;" (assignment_expression "uVar10 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) (expression_statement "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" ( (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 0x10 & 0xff)" ( (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)puVar12 + 4)" * (cast_expression "(uint *)((long)puVar12 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 4)" ( (binary_expression "(long)puVar12 + 4" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 0x10 & 0xff)" ( (binary_expression "uVar11 >> 0x10 & 0xff" (binary_expression "uVar11 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 0x10 & 0xff)" ( (binary_expression "uVar3 >> 0x10 & 0xff" (binary_expression "uVar3 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))))) ;) (expression_statement "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1]" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" ( (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(uVar9 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 8 & 0xff)" ( (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (cast_expression "(uint)puVar12[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar12[1]" identifier [ number_literal ]))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 8 & 0xff)" ( (binary_expression "uVar11 >> 8 & 0xff" (binary_expression "uVar11 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 8 & 0xff)" ( (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))))) ;) (expression_statement "uVar6 = (ulong)uVar5;" (assignment_expression "uVar6 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);" (assignment_expression "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" identifier = (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_001a3ae0 + uVar10 * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + uVar10 * 4)" ( (binary_expression "&DAT_001a3ae0 + uVar10 * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "uVar10 * 4" identifier * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar11 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar11 & 0xff) * 4" (parenthesized_expression "(uVar11 & 0xff)" ( (binary_expression "uVar11 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" ( (binary_expression "&DAT_001a32e0 + (uVar3 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" & identifier) + (binary_expression "(uVar3 & 0xff) * 4" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)puVar12 + 0xc)" * (cast_expression "(uint *)((long)puVar12 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar12 + 0xc)" ( (binary_expression "(long)puVar12 + 0xc" (cast_expression "(long)puVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "uVar11 = (ulong)uVar5;" (assignment_expression "uVar11 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = (ulong)uVar14;" (assignment_expression "uVar3 = (ulong)uVar14" identifier = (cast_expression "(ulong)uVar14" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4)" ( (binary_expression "puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4" identifier != (binary_expression "param_3 + (ulong)(param_4 - 2) * 2 + 4" (binary_expression "param_3 + (ulong)(param_4 - 2) * 2" identifier + (binary_expression "(ulong)(param_4 - 2) * 2" (call_expression "(ulong)(param_4 - 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_4 - 2)" ( (binary_expression "param_4 - 2" identifier - number_literal) ))) * number_literal)) + number_literal)) )) ;) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" identifier = (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) })) (expression_statement "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];" (assignment_expression "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" identifier = (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" identifier (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" ( (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" ( (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x10 & 0xff)" ( (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 0x10 & 0xff)" ( (binary_expression "uVar14 >> 0x10 & 0xff" (binary_expression "uVar14 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal) ])) ))) , (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x18 & 0xff)" ( (binary_expression "uVar4 >> 0x18 & 0xff" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x18 & 0xff)" ( (binary_expression "uVar6 >> 0x18 & 0xff" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 0x18) * 4" (call_expression "(ulong)(uVar14 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 0x18)" ( (binary_expression "uVar14 >> 0x18" identifier >> number_literal) ))) * number_literal) ])) ))) ))) ^ (subscript_expression "param_3[(long)param_4 * 2]" identifier [ (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ]))) ;) (expression_statement "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];" (assignment_expression "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" identifier = (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" identifier (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" ( (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" ( (binary_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 & 0xff) * 4" (call_expression "(ulong)(uVar14 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 & 0xff)" ( (binary_expression "uVar14 & 0xff" identifier & number_literal) ))) * number_literal) ]) | (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 & 0xff) * 4" (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )) * number_literal)) )))) & number_literal)) ))) , (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000)" ( (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" * (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" ( (binary_expression "&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4" (pointer_expression "&DAT_001a3ae0" & identifier) + (binary_expression "(ulong)(byte)(uVar8 >> 8) * 4" (call_expression "(ulong)(byte)(uVar8 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) ))) * number_literal)) )))) & number_literal) | (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" & identifier) + (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" ( (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal)) )) ^ (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" ( (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" & identifier) + (binary_expression "(uVar6 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 8 & 0xff)" ( (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) )))) & number_literal) | (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_001a32e0)" ( (pointer_expression "&DAT_001a32e0" & identifier) ))) [ (binary_expression "(ulong)(uVar14 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar14 >> 8 & 0xff)" ( (binary_expression "uVar14 >> 8 & 0xff" (binary_expression "uVar14 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal) ])) ))) ))) ^ (subscript_expression "(param_3 + (long)param_4 * 2)[1]" (parenthesized_expression "(param_3 + (long)param_4 * 2)" ( (binary_expression "param_3 + (long)param_4 * 2" identifier + (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )) [ number_literal ]))) ;) (expression_statement "uVar14 = (uint)uVar3;" (assignment_expression "uVar14 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar3 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar3 >> 0x20)" identifier = (call_expression "(uint)(uVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 >> 0x20)" ( (binary_expression "uVar3 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar14 = (uint)uVar4;" (assignment_expression "uVar14 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" identifier = (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" ( (binary_expression "uVar14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" ( (binary_expression "uVar14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar14 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" ( (binary_expression "uVar8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" ( (binary_expression "uVar8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar8 << 0x18" identifier << number_literal))) ;) (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ^ (pointer_expression * IDENT)) ^ (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) , IDENT )))) ^ (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (call_expression IDENT (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) ^ (subscript_expression IDENT [ LIT ])) ^ (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) )))) ^ (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ))))) ^ (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) ))))) ^ (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) )))) & LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT)) )) ^ (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT) ])) ))) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) & LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT)) )) ^ (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT) ])) ))) ))) ^ (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) )))) & LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT)) )) ^ (parenthesized_expression ( (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT) ]) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) & LIT)) ))) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) & LIT) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT)) )) ^ (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) & LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT) ])) ))) ))) ^ (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)\n\n{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00117150(byte *param_1,uint *param_2,ulong *param_3,int param_4)" (identifier "FUN_00117150") (parameter_list "(byte *param_1,uint *param_2,ulong *param_3,int param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ulong *param_3" (type_identifier "ulong") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  ulong uVar3;\n  ulong uVar4;\n  uint uVar5;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  ulong *puVar12;\n  ulong *puVar13;\n  uint uVar14;\n  long in_FS_OFFSET;\n  int local_78;\n  ulong uVar6;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_78 = (uint)param_1[1] << 0x10;\n  iVar2 = local_78;\n  local_78 = (uint)param_1[2] << 8;\n  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);\n  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);\n  uVar9 = uVar4 >> 0x20;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  uVar3 = uVar6 >> 0x20;\n  uVar14 = (uint)(uVar6 >> 0x20);\n  if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }\n  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];\n  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];\n  uVar14 = (uint)uVar3;\n  uVar8 = (uint)(uVar3 >> 0x20);\n  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  uVar14 = (uint)uVar4;\n  uVar8 = (uint)(uVar4 >> 0x20);\n  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;\n  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong *puVar12;" (type_identifier "ulong") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "ulong *puVar13;" (type_identifier "ulong") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_78 = (uint)param_1[1] << 0x10;" (assignment_expression "local_78 = (uint)param_1[1] << 0x10" (identifier "local_78") (= "=") (binary_expression "(uint)param_1[1] << 0x10" (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "0x10"))) (; ";")) (expression_statement "iVar2 = local_78;" (assignment_expression "iVar2 = local_78" (identifier "iVar2") (= "=") (identifier "local_78")) (; ";")) (expression_statement "local_78 = (uint)param_1[2] << 8;" (assignment_expression "local_78 = (uint)param_1[2] << 8" (identifier "local_78") (= "=") (binary_expression "(uint)param_1[2] << 8" (cast_expression "(uint)param_1[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);" (assignment_expression "uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" (identifier "uVar4") (= "=") (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^\n          CONCAT44((uint)param_1[5] << 0x10,iVar2)" (binary_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3" (call_expression "CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" (identifier "CONCAT44") (argument_list "((uint)param_1[4] << 0x18 ^ (uint)param_1[7],\n                   (uint)*param_1 << 0x18 ^ (uint)param_1[3])" (( "(") (binary_expression "(uint)param_1[4] << 0x18 ^ (uint)param_1[7]" (binary_expression "(uint)param_1[4] << 0x18" (cast_expression "(uint)param_1[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (<< "<<") (number_literal "0x18")) (^ "^") (cast_expression "(uint)param_1[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (, ",") (binary_expression "(uint)*param_1 << 0x18 ^ (uint)param_1[3]" (binary_expression "(uint)*param_1 << 0x18" (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1")) (<< "<<") (number_literal "0x18")) (^ "^") (cast_expression "(uint)param_1[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) () ")"))) (^ "^") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (^ "^") (call_expression "CONCAT44((uint)param_1[5] << 0x10,iVar2)" (identifier "CONCAT44") (argument_list "((uint)param_1[5] << 0x10,iVar2)" (( "(") (binary_expression "(uint)param_1[5] << 0x10" (cast_expression "(uint)param_1[5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (<< "<<") (number_literal "0x10")) (, ",") (identifier "iVar2") () ")")))) (^ "^") (call_expression "CONCAT44((uint)param_1[6] << 8,local_78)" (identifier "CONCAT44") (argument_list "((uint)param_1[6] << 8,local_78)" (( "(") (binary_expression "(uint)param_1[6] << 8" (cast_expression "(uint)param_1[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (<< "<<") (number_literal "8")) (, ",") (identifier "local_78") () ")"))))) (; ";")) (expression_statement "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);" (assignment_expression "uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (identifier "uVar6") (= "=") (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^\n          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^\n          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" (binary_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1]" (call_expression "CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" (identifier "CONCAT44") (argument_list "((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],\n                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb])" (( "(") (binary_expression "(uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf]" (binary_expression "(uint)param_1[0xc] << 0x18" (cast_expression "(uint)param_1[0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (<< "<<") (number_literal "0x18")) (^ "^") (cast_expression "(uint)param_1[0xf]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")))) (, ",") (binary_expression "(uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]" (binary_expression "(uint)param_1[8] << 0x18" (cast_expression "(uint)param_1[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (<< "<<") (number_literal "0x18")) (^ "^") (cast_expression "(uint)param_1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) () ")"))) (^ "^") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (^ "^") (call_expression "CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" (identifier "CONCAT44") (argument_list "((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10)" (( "(") (binary_expression "(uint)param_1[0xd] << 0x10" (cast_expression "(uint)param_1[0xd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (<< "<<") (number_literal "0x10")) (, ",") (binary_expression "(uint)param_1[9] << 0x10" (cast_expression "(uint)param_1[9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (<< "<<") (number_literal "0x10")) () ")")))) (^ "^") (call_expression "CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (identifier "CONCAT44") (argument_list "((uint)param_1[0xe] << 8,(uint)param_1[10] << 8)" (( "(") (binary_expression "(uint)param_1[0xe] << 8" (cast_expression "(uint)param_1[0xe]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (<< "<<") (number_literal "8")) (, ",") (binary_expression "(uint)param_1[10] << 8" (cast_expression "(uint)param_1[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (<< "<<") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar4 >> 0x20;" (assignment_expression "uVar9 = uVar4 >> 0x20" (identifier "uVar9") (= "=") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20"))) (; ";")) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" (identifier "uVar8") (= "=") (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar3 = uVar6 >> 0x20;" (assignment_expression "uVar3 = uVar6 >> 0x20" (identifier "uVar3") (= "=") (binary_expression "uVar6 >> 0x20" (identifier "uVar6") (>> ">>") (number_literal "0x20"))) (; ";")) (expression_statement "uVar14 = (uint)(uVar6 >> 0x20);" (assignment_expression "uVar14 = (uint)(uVar6 >> 0x20)" (identifier "uVar14") (= "=") (call_expression "(uint)(uVar6 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 >> 0x20)" (( "(") (binary_expression "uVar6 >> 0x20" (identifier "uVar6") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (1 < param_4) {\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" (if "if") (parenthesized_expression "(1 < param_4)" (( "(") (binary_expression "1 < param_4" (number_literal "1") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n    uVar11 = uVar6 & 0xffffffff;\n    uVar4 = uVar4 & 0xffffffff;\n    puVar12 = param_3 + 2;\n    do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);\n    uVar4 = (ulong)uVar7;\n  }" ({ "{") (expression_statement "uVar11 = uVar6 & 0xffffffff;" (assignment_expression "uVar11 = uVar6 & 0xffffffff" (identifier "uVar11") (= "=") (binary_expression "uVar6 & 0xffffffff" (identifier "uVar6") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "uVar4 = uVar4 & 0xffffffff;" (assignment_expression "uVar4 = uVar4 & 0xffffffff" (identifier "uVar4") (= "=") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff"))) (; ";")) (expression_statement "puVar12 = param_3 + 2;" (assignment_expression "puVar12 = param_3 + 2" (identifier "puVar12") (= "=") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);" (do "do") (compound_statement "{\n      puVar13 = puVar12 + 2;\n      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;\n      uVar10 = uVar9 & 0xff;\n      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);\n      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);\n      uVar6 = (ulong)uVar5;\n      uVar9 = (ulong)uVar8;\n      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);\n      uVar11 = (ulong)uVar5;\n      uVar3 = (ulong)uVar14;\n      uVar4 = (ulong)uVar7;\n      puVar12 = puVar13;\n    }" ({ "{") (expression_statement "puVar13 = puVar12 + 2;" (assignment_expression "puVar13 = puVar12 + 2" (identifier "puVar13") (= "=") (binary_expression "puVar12 + 2" (identifier "puVar12") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;" (assignment_expression "uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" (identifier "uVar7") (= "=") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 0x18) * 4" (parenthesized_expression "(uVar4 >> 0x18)" (( "(") (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" (( "(") (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x18) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar11 >> 0x18) * 4" (parenthesized_expression "(uVar11 >> 0x18)" (( "(") (binary_expression "uVar11 >> 0x18" (identifier "uVar11") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x18) * 4" (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) (+ "+") (binary_expression "(uVar3 >> 0x18) * 4" (parenthesized_expression "(uVar3 >> 0x18)" (( "(") (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (binary_expression "(uint)*puVar12" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "puVar12")))) (; ";")) (expression_statement "uVar10 = uVar9 & 0xff;" (assignment_expression "uVar10 = uVar9 & 0xff" (identifier "uVar10") (= "=") (binary_expression "uVar9 & 0xff" (identifier "uVar9") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (identifier "uVar8") (= "=") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" (identifier "uVar4") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(uVar9 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)((long)puVar12 + 4)" (* "*") (cast_expression "(uint *)((long)puVar12 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar12 + 4)" (( "(") (binary_expression "(long)puVar12 + 4" (cast_expression "(long)puVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar12")) (+ "+") (number_literal "4")) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar11 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar11 >> 0x10 & 0xff" (binary_expression "uVar11 >> 0x10" (identifier "uVar11") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) (+ "+") (binary_expression "(uVar3 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar3 >> 0x10 & 0xff" (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);" (assignment_expression "uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^\n              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1]" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" (( "(") (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(uVar9 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar9 >> 8 & 0xff)" (( "(") (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" (identifier "uVar9") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (cast_expression "(uint)puVar12[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar11 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar11 >> 8 & 0xff)" (( "(") (binary_expression "uVar11 >> 8 & 0xff" (binary_expression "uVar11 >> 8" (identifier "uVar11") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) (+ "+") (binary_expression "(uVar3 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar3 >> 8 & 0xff)" (( "(") (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" (identifier "uVar3") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "uVar6 = (ulong)uVar5;" (assignment_expression "uVar6 = (ulong)uVar5" (identifier "uVar6") (= "=") (cast_expression "(ulong)uVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" (identifier "uVar9") (= "=") (cast_expression "(ulong)uVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar8"))) (; ";")) (expression_statement "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);" (assignment_expression "uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" (identifier "uVar14") (= "=") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^\n               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)\n               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" (( "(") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a3ae0 + uVar10 * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + uVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + uVar10 * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + uVar10 * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar11 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar11 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar11 & 0xff) * 4" (parenthesized_expression "(uVar11 & 0xff)" (( "(") (binary_expression "uVar11 & 0xff" (identifier "uVar11") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a32e0 + (uVar3 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a32e0 + (uVar3 & 0xff) * 4" (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) (+ "+") (binary_expression "(uVar3 & 0xff) * 4" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)((long)puVar12 + 0xc)" (* "*") (cast_expression "(uint *)((long)puVar12 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar12 + 0xc)" (( "(") (binary_expression "(long)puVar12 + 0xc" (cast_expression "(long)puVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar12")) (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (expression_statement "uVar11 = (ulong)uVar5;" (assignment_expression "uVar11 = (ulong)uVar5" (identifier "uVar11") (= "=") (cast_expression "(ulong)uVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "uVar3 = (ulong)uVar14;" (assignment_expression "uVar3 = (ulong)uVar14" (identifier "uVar3") (= "=") (cast_expression "(ulong)uVar14" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar14"))) (; ";")) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" (identifier "uVar4") (= "=") (cast_expression "(ulong)uVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar7"))) (; ";")) (expression_statement "puVar12 = puVar13;" (assignment_expression "puVar12 = puVar13" (identifier "puVar12") (= "=") (identifier "puVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4)" (( "(") (binary_expression "puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4" (identifier "puVar13") (!= "!=") (binary_expression "param_3 + (ulong)(param_4 - 2) * 2 + 4" (binary_expression "param_3 + (ulong)(param_4 - 2) * 2" (identifier "param_3") (+ "+") (binary_expression "(ulong)(param_4 - 2) * 2" (call_expression "(ulong)(param_4 - 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_4 - 2)" (( "(") (binary_expression "param_4 - 2" (identifier "param_4") (- "-") (number_literal "2")) () ")"))) (* "*") (number_literal "2"))) (+ "+") (number_literal "4"))) () ")")) (; ";")) (expression_statement "uVar4 = (ulong)uVar7;" (assignment_expression "uVar4 = (ulong)uVar7" (identifier "uVar4") (= "=") (cast_expression "(ulong)uVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar7"))) (; ";")) (} "}"))) (expression_statement "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2];" (assignment_expression "uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" (identifier "uVar3") (= "=") (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^\n          param_3[(long)param_4 * 2]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" (identifier "CONCAT44") (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]))" (( "(") (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000)" (( "(") (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" (identifier "uVar8") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff0000")) (| "|") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar4 >> 0x10 & 0xff" (binary_expression "uVar4 >> 0x10" (identifier "uVar4") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff000000"))) () ")")) (^ "^") (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4])" (( "(") (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar6 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" (identifier "uVar6") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff00")) (| "|") (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_001a32e0)" (( "(") (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) () ")"))) ([ "[") (binary_expression "(ulong)(uVar14 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar14 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar14 >> 0x10 & 0xff" (binary_expression "uVar14 >> 0x10" (identifier "uVar14") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4")) (] "]"))) () ")"))) (, ",") (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000)" (( "(") (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 >> 0x18)" (( "(") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff0000")) (| "|") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 0x18 & 0xff)" (( "(") (binary_expression "uVar4 >> 0x18 & 0xff" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff000000"))) () ")")) (^ "^") (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])" (( "(") (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar6 >> 0x18 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 0x18 & 0xff)" (( "(") (binary_expression "uVar6 >> 0x18 & 0xff" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff00")) (| "|") (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_001a32e0)" (( "(") (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) () ")"))) ([ "[") (binary_expression "(ulong)(uVar14 >> 0x18) * 4" (call_expression "(ulong)(uVar14 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar14 >> 0x18)" (( "(") (binary_expression "uVar14 >> 0x18" (identifier "uVar14") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4")) (] "]"))) () ")"))) () ")"))) (^ "^") (subscript_expression "param_3[(long)param_4 * 2]" (identifier "param_3") ([ "[") (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (* "*") (number_literal "2")) (] "]")))) (; ";")) (expression_statement "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1];" (assignment_expression "uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" (identifier "uVar4") (= "=") (binary_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^\n          (param_3 + (long)param_4 * 2)[1]" (call_expression "CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" (identifier "CONCAT44") (argument_list "((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),\n                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]))" (( "(") (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^\n                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000)" (( "(") (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff0000")) (| "|") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 & 0xff) * 4" (parenthesized_expression "(uVar4 & 0xff)" (( "(") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff000000"))) () ")")) (^ "^") (parenthesized_expression "((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00)" (( "(") (binary_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |\n                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_001a32e0)" (( "(") (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) () ")"))) ([ "[") (binary_expression "(ulong)(uVar14 & 0xff) * 4" (call_expression "(ulong)(uVar14 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar14 & 0xff)" (( "(") (binary_expression "uVar14 & 0xff" (identifier "uVar14") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4")) (] "]")) (| "|") (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar6 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar6 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar6 & 0xff) * 4" (parenthesized_expression "(uVar6 & 0xff)" (( "(") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff00"))) () ")"))) (, ",") (binary_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^\n                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" (parenthesized_expression "(*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000)" (( "(") (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |\n                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (binary_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000" (pointer_expression "*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4)" (( "(") (binary_expression "&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4" (pointer_expression "&DAT_001a3ae0" (& "&") (identifier "DAT_001a3ae0")) (+ "+") (binary_expression "(ulong)(byte)(uVar8 >> 8) * 4" (call_expression "(ulong)(byte)(uVar8 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(uVar8 >> 8)" (( "(") (binary_expression "uVar8 >> 8" (identifier "uVar8") (>> ">>") (number_literal "8")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff0000")) (| "|") (binary_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000" (pointer_expression "*(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a3ee0" (& "&") (identifier "DAT_001a3ee0")) (+ "+") (binary_expression "(uVar4 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar4 >> 8 & 0xff)" (( "(") (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff000000"))) () ")")) (^ "^") (parenthesized_expression "(*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])" (( "(") (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |\n                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (binary_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00" (pointer_expression "*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4" (pointer_expression "&DAT_001a36e0" (& "&") (identifier "DAT_001a36e0")) (+ "+") (binary_expression "(uVar6 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar6 >> 8 & 0xff)" (( "(") (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (& "&") (number_literal "0xff00")) (| "|") (subscript_expression "(uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4]" (call_expression "(uint)(byte)(&DAT_001a32e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_001a32e0)" (( "(") (pointer_expression "&DAT_001a32e0" (& "&") (identifier "DAT_001a32e0")) () ")"))) ([ "[") (binary_expression "(ulong)(uVar14 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar14 >> 8 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar14 >> 8 & 0xff)" (( "(") (binary_expression "uVar14 >> 8 & 0xff" (binary_expression "uVar14 >> 8" (identifier "uVar14") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4")) (] "]"))) () ")"))) () ")"))) (^ "^") (subscript_expression "(param_3 + (long)param_4 * 2)[1]" (parenthesized_expression "(param_3 + (long)param_4 * 2)" (( "(") (binary_expression "param_3 + (long)param_4 * 2" (identifier "param_3") (+ "+") (binary_expression "(long)param_4 * 2" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (* "*") (number_literal "2"))) () ")")) ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar14 = (uint)uVar3;" (assignment_expression "uVar14 = (uint)uVar3" (identifier "uVar14") (= "=") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) (; ";")) (expression_statement "uVar8 = (uint)(uVar3 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar3 >> 0x20)" (identifier "uVar8") (= "=") (call_expression "(uint)(uVar3 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 >> 0x20)" (( "(") (binary_expression "uVar3 >> 0x20" (identifier "uVar3") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "*param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" (identifier "uVar14") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" (( "(") (binary_expression "uVar14 & 0xff0000" (identifier "uVar14") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" (( "(") (binary_expression "uVar14 & 0xff00" (identifier "uVar14") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar14 << 0x18" (identifier "uVar14") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar14 = (uint)uVar4;" (assignment_expression "uVar14 = (uint)uVar4" (identifier "uVar14") (= "=") (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "uVar8 = (uint)(uVar4 >> 0x20);" (assignment_expression "uVar8 = (uint)(uVar4 >> 0x20)" (identifier "uVar8") (= "=") (call_expression "(uint)(uVar4 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;" (assignment_expression "param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8" (binary_expression "uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8" (binary_expression "uVar14 >> 0x18" (identifier "uVar14") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar14 & 0xff0000) >> 8" (parenthesized_expression "(uVar14 & 0xff0000)" (( "(") (binary_expression "uVar14 & 0xff0000" (identifier "uVar14") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar14 & 0xff00) << 8" (parenthesized_expression "(uVar14 & 0xff00)" (( "(") (binary_expression "uVar14 & 0xff00" (identifier "uVar14") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar14 << 0x18" (identifier "uVar14") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;" (assignment_expression "param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8" (binary_expression "uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8" (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar8 & 0xff0000) >> 8" (parenthesized_expression "(uVar8 & 0xff0000)" (( "(") (binary_expression "uVar8 & 0xff0000" (identifier "uVar8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar8 & 0xff00) << 8" (parenthesized_expression "(uVar8 & 0xff00)" (( "(") (binary_expression "uVar8 & 0xff00" (identifier "uVar8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar8 << 0x18" (identifier "uVar8") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "lVar1") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *var_3,type_1 *var_15,type_2 (*var_7) [4],int var_6)

{
  long var_16;
  int iVar2;
  type_3 var_11;
  type_3 var_4;
  type_4 uVar5;
  type_4 uVar7;
  type_4 var_13;
  type_3 var_9;
  type_3 uVar10;
  type_3 var_10;
  type_2 (*var_8) [4];
  type_2 (*var_12) [4];
  type_4 var_14;
  long var_1;
  int local_78;
  type_3 var_5;
  
  var_16 = *(long *)(var_1 + 0x28);
  local_78 = (type_4)var_3[1] << 0x10;
  iVar2 = local_78;
  local_78 = (type_4)var_3[2] << 8;
  var_4 = var_2((type_4)var_3[4] << 0x18 ^ (type_4)var_3[7],
                   (type_4)*var_3 << 0x18 ^ (type_4)var_3[3]) ^ *(type_3 *)*var_7 ^
          var_2((type_4)var_3[5] << 0x10,iVar2) ^ var_2((type_4)var_3[6] << 8,local_78);
  var_5 = var_2((type_4)var_3[0xc] << 0x18 ^ (type_4)var_3[0xf],
                   (type_4)var_3[8] << 0x18 ^ (type_4)var_3[0xb]) ^ *(type_3 *)(*var_7 + 2) ^
          var_2((type_4)var_3[0xd] << 0x10,(type_4)var_3[9] << 0x10) ^
          var_2((type_4)var_3[0xe] << 8,(type_4)var_3[10] << 8);
  var_9 = var_4 >> 0x20;
  var_13 = (type_4)(var_4 >> 0x20);
  var_11 = var_5 >> 0x20;
  var_14 = (type_4)(var_5 >> 0x20);
  if (1 < var_6) {
    var_10 = var_5 & 0xffffffff;
    var_4 = var_4 & 0xffffffff;
    var_8 = var_7 + 1;
    do {
      var_12 = var_8 + 1;
      uVar7 = T0[var_4 >> 0x18] ^ T1[var_9 >> 0x18] ^ T2[var_10 >> 0x18] ^ T3[var_11 >> 0x18] ^
              (*var_8)[0];
      uVar10 = var_9 & 0xff;
      var_13 = T0[var_4 >> 0x10 & 0xff] ^ T1[var_9 >> 0x10 & 0xff] ^ (*var_8)[1] ^
              T2[var_10 >> 0x10 & 0xff] ^ T3[var_11 >> 0x10 & 0xff];
      uVar5 = T0[var_4 >> 8 & 0xff] ^ T1[var_9 >> 8 & 0xff] ^ (*var_8)[2] ^
              T2[var_10 >> 8 & 0xff] ^ T3[var_11 >> 8 & 0xff];
      var_5 = (type_3)uVar5;
      var_9 = (type_3)var_13;
      var_14 = T0[var_4 & 0xff] ^ T1[uVar10] ^ T2[var_10 & 0xff] ^ T3[var_11 & 0xff] ^ (*var_8)[3]
      ;
      var_10 = (type_3)uVar5;
      var_11 = (type_3)var_14;
      var_4 = (type_3)uVar7;
      var_8 = var_12;
    } while (var_12 != var_7 + (type_3)(var_6 - 2) + 2);
    var_4 = (type_3)uVar7;
  }
  var_11 = var_2((T1[var_13 >> 0x10 & 0xff] & 0xff0000 | T0[var_4 >> 0x10 & 0xff] & 0xff000000) ^
                   (T2[var_5 >> 0x10 & 0xff] & 0xff00 | (type_4)(type_5)T3[var_14 >> 0x10 & 0xff]),
                   (T1[var_13 >> 0x18] & 0xff0000 | T0[var_4 >> 0x18 & 0xff] & 0xff000000) ^
                   (T2[var_5 >> 0x18 & 0xff] & 0xff00 | (type_4)(type_5)T3[var_14 >> 0x18])) ^
          *(type_3 *)var_7[var_6];
  var_4 = var_2((T1[var_13 & 0xff] & 0xff0000 | T0[var_4 & 0xff] & 0xff000000) ^
                   ((type_4)(type_5)T3[var_14 & 0xff] | T2[var_5 & 0xff] & 0xff00),
                   (T1[(type_5)(var_13 >> 8)] & 0xff0000 | T0[var_4 >> 8 & 0xff] & 0xff000000) ^
                   (T2[var_5 >> 8 & 0xff] & 0xff00 | (type_4)(type_5)T3[var_14 >> 8 & 0xff])) ^
          *(type_3 *)(var_7[var_6] + 2);
  var_14 = (type_4)var_11;
  var_13 = (type_4)(var_11 >> 0x20);
  *(type_4 *)var_15 =
       var_14 >> 0x18 | (var_14 & 0xff0000) >> 8 | (var_14 & 0xff00) << 8 | var_14 << 0x18;
  *(type_4 *)(var_15 + 4) =
       var_13 >> 0x18 | (var_13 & 0xff0000) >> 8 | (var_13 & 0xff00) << 8 | var_13 << 0x18;
  var_14 = (type_4)var_4;
  var_13 = (type_4)(var_4 >> 0x20);
  *(type_4 *)(var_15 + 8) =
       var_14 >> 0x18 | (var_14 & 0xff0000) >> 8 | (var_14 & 0xff00) << 8 | var_14 << 0x18;
  *(type_4 *)(var_15 + 0xc) =
       var_13 >> 0x18 | (var_13 & 0xff0000) >> 8 | (var_13 & 0xff00) << 8 | var_13 << 0x18;
  if (var_16 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_17();
  }
  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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (pointer_expression argument: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) (identifier)))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))))) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_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))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))) right: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))))) (binary_expression left: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) right: (number_literal)) 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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))) right: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))))) right: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) right: (number_literal)) 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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))))) (binary_expression left: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))) right: (parenthesized_expression (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal)))))) right: (number_literal)) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))))))) right: (subscript_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement))))

void MASKED(byte *param_1,uint *param_2,ulong *param_3,int param_4)

{
  long lVar1;
  int iVar2;
  ulong uVar3;
  ulong uVar4;
  uint uVar5;
  uint uVar7;
  uint uVar8;
  ulong uVar9;
  ulong uVar10;
  ulong uVar11;
  ulong *puVar12;
  ulong *puVar13;
  uint uVar14;
  long in_FS_OFFSET;
  int local_78;
  ulong uVar6;
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  local_78 = (uint)param_1[1] << 0x10;
  iVar2 = local_78;
  local_78 = (uint)param_1[2] << 8;
  uVar4 = CONCAT44((uint)param_1[4] << 0x18 ^ (uint)param_1[7],
                   (uint)*param_1 << 0x18 ^ (uint)param_1[3]) ^ *param_3 ^
          CONCAT44((uint)param_1[5] << 0x10,iVar2) ^ CONCAT44((uint)param_1[6] << 8,local_78);
  uVar6 = CONCAT44((uint)param_1[0xc] << 0x18 ^ (uint)param_1[0xf],
                   (uint)param_1[8] << 0x18 ^ (uint)param_1[0xb]) ^ param_3[1] ^
          CONCAT44((uint)param_1[0xd] << 0x10,(uint)param_1[9] << 0x10) ^
          CONCAT44((uint)param_1[0xe] << 8,(uint)param_1[10] << 8);
  uVar9 = uVar4 >> 0x20;
  uVar8 = (uint)(uVar4 >> 0x20);
  uVar3 = uVar6 >> 0x20;
  uVar14 = (uint)(uVar6 >> 0x20);
  if (1 < param_4) {
    uVar11 = uVar6 & 0xffffffff;
    uVar4 = uVar4 & 0xffffffff;
    puVar12 = param_3 + 2;
    do {
      puVar13 = puVar12 + 2;
      uVar7 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x18) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x18) * 4) ^ (uint)*puVar12;
      uVar10 = uVar9 & 0xff;
      uVar8 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 0x10 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 4) ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 0x10 & 0xff) * 4);
      uVar5 = *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_001a3ae0 + (uVar9 >> 8 & 0xff) * 4) ^ (uint)puVar12[1] ^
              *(uint *)(&DAT_001a36e0 + (uVar11 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_001a32e0 + (uVar3 >> 8 & 0xff) * 4);
      uVar6 = (ulong)uVar5;
      uVar9 = (ulong)uVar8;
      uVar14 = *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) ^ *(uint *)(&DAT_001a3ae0 + uVar10 * 4)
               ^ *(uint *)(&DAT_001a36e0 + (uVar11 & 0xff) * 4) ^
               *(uint *)(&DAT_001a32e0 + (uVar3 & 0xff) * 4) ^ *(uint *)((long)puVar12 + 0xc);
      uVar11 = (ulong)uVar5;
      uVar3 = (ulong)uVar14;
      uVar4 = (ulong)uVar7;
      puVar12 = puVar13;
    } while (puVar13 != param_3 + (ulong)(param_4 - 2) * 2 + 4);
    uVar4 = (ulong)uVar7;
  }
  uVar3 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x10 & 0xff) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x10 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x10 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x10 & 0xff) * 4]),
                   (*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 >> 0x18) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 0x18 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 0x18 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 0x18) * 4])) ^
          param_3[(long)param_4 * 2];
  uVar4 = CONCAT44((*(uint *)(&DAT_001a3ae0 + (ulong)(uVar8 & 0xff) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 & 0xff) * 4) & 0xff000000) ^
                   ((uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 & 0xff) * 4] |
                   *(uint *)(&DAT_001a36e0 + (uVar6 & 0xff) * 4) & 0xff00),
                   (*(uint *)(&DAT_001a3ae0 + (ulong)(byte)(uVar8 >> 8) * 4) & 0xff0000 |
                   *(uint *)(&DAT_001a3ee0 + (uVar4 >> 8 & 0xff) * 4) & 0xff000000) ^
                   (*(uint *)(&DAT_001a36e0 + (uVar6 >> 8 & 0xff) * 4) & 0xff00 |
                   (uint)(byte)(&DAT_001a32e0)[(ulong)(uVar14 >> 8 & 0xff) * 4])) ^
          (param_3 + (long)param_4 * 2)[1];
  uVar14 = (uint)uVar3;
  uVar8 = (uint)(uVar3 >> 0x20);
  *param_2 = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  param_2[1] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  uVar14 = (uint)uVar4;
  uVar8 = (uint)(uVar4 >> 0x20);
  param_2[2] = uVar14 >> 0x18 | (uVar14 & 0xff0000) >> 8 | (uVar14 & 0xff00) << 8 | uVar14 << 0x18;
  param_2[3] = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}

