
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

void aes_decrypt_nb_4(AESContext *ctx,word32 *block)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  word32 *pwVar10;
  uint local_28;
  uint local_24;
  int local_20;
  word32 *local_1c;
  
  local_24 = block[1];
  uVar9 = block[3];
  local_28 = *block;
  uVar6 = block[2];
  local_1c = ctx->invkeysched;
  if (1 < ctx->Nr) {
    local_20 = 0;
    do {
      uVar7 = local_28 ^ *local_1c;
      pwVar10 = local_1c + 4;
      *block = uVar7;
      uVar8 = local_24 ^ local_1c[1];
      block[1] = uVar8;
      uVar5 = uVar6 ^ local_1c[2];
      block[2] = uVar5;
      uVar9 = uVar9 ^ local_1c[3];
      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^
                 D1[uVar9 >> 0x10 & 0xff];
      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^
                 D2[uVar9 >> 8 & 0xff];
      local_20 = local_20 + 1;
      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^
              D3[uVar9 & 0xff];
      block[2] = uVar6;
      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^
              D0[uVar9 >> 0x18];
      block[3] = uVar9;
      block[1] = local_24;
      *block = local_28;
      local_1c = pwVar10;
    } while (local_20 < ctx->Nr + -1);
  }
  uVar8 = local_28 ^ *local_1c;
  *block = uVar8;
  local_24 = local_1c[1] ^ local_24;
  block[1] = local_24;
  uVar6 = uVar6 ^ local_1c[2];
  block[2] = uVar6;
  uVar9 = uVar9 ^ local_1c[3];
  uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |
          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8;
  uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |
          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8;
  bVar1 = Sboxinv[uVar8 & 0xff];
  uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |
          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8;
  bVar2 = Sboxinv[uVar9 >> 0x18];
  bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff];
  bVar4 = Sboxinv[local_24 >> 8 & 0xff];
  block[2] = uVar8;
  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;
  *block = uVar5;
  block[1] = uVar7;
  block[3] = uVar9;
  *block = uVar5 ^ local_1c[4];
  block[1] = local_1c[5] ^ uVar7;
  block[2] = uVar8 ^ local_1c[6];
  block[3] = uVar9 ^ local_1c[7];
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_0005b540(int param_1,uint *param_2)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  uint local_28;
  uint local_24;
  int local_20;
  uint *local_1c;
  
  local_24 = param_2[1];
  uVar9 = param_2[3];
  local_28 = *param_2;
  uVar6 = param_2[2];
  local_1c = (uint *)(param_1 + 0x1e0);
  if (1 < *(int *)(param_1 + 0x3ec)) {
    local_20 = 0;
    do {
      uVar7 = local_28 ^ *local_1c;
      puVar10 = local_1c + 4;
      *param_2 = uVar7;
      uVar8 = local_24 ^ local_1c[1];
      param_2[1] = uVar8;
      uVar5 = uVar6 ^ local_1c[2];
      param_2[2] = uVar5;
      uVar9 = uVar9 ^ local_1c[3];
      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^
                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);
      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);
      local_20 = local_20 + 1;
      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^
              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);
      param_2[2] = uVar6;
      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^
              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);
      param_2[3] = uVar9;
      param_2[1] = local_24;
      *param_2 = local_28;
      local_1c = puVar10;
    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);
  }
  local_28 = local_28 ^ *local_1c;
  *param_2 = local_28;
  local_24 = local_1c[1] ^ local_24;
  param_2[1] = local_24;
  uVar6 = uVar6 ^ local_1c[2];
  param_2[2] = uVar6;
  uVar9 = uVar9 ^ local_1c[3];
  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;
  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;
  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];
  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;
  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];
  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];
  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];
  param_2[2] = uVar8;
  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;
  *param_2 = uVar5;
  param_2[1] = uVar7;
  param_2[3] = uVar9;
  *param_2 = uVar5 ^ local_1c[4];
  param_2[1] = local_1c[5] ^ uVar7;
  param_2[2] = uVar8 ^ local_1c[6];
  param_2[3] = uVar9 ^ local_1c[7];
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x0001ced5
ADD ESI,0xdf208
PUSH EBX
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [ESP + 0x44]
MOV EBX,dword ptr [ESP + 0x40]
ADD EAX,0x1e0
MOV ECX,dword ptr [EBP + 0x4]
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EBP]
CMP dword ptr [EBX + 0x3ec],0x1
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EBP + 0x8]
JLE 0x0005b6f3
LEA EBX,[ESI + 0xfffabc70]
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [ESP + 0x4],EBX
LEA EBX,[ESI + 0xfffab070]
MOV dword ptr [ESP + 0xc],EBX
LEA EBX,[ESI + 0xfffab470]
LEA ESI,[ESI + 0xfffab870]
MOV dword ptr [ESP + 0x8],EBX
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x24],ESI
MOV ESI,EDI
NOP
MOV EDI,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x4]
XOR ECX,dword ptr [EDI]
ADD EDI,0x10
MOV dword ptr [EBP],ECX
XOR EBX,dword ptr [EDI + -0xc]
MOV dword ptr [EBP + 0x4],EBX
XOR EAX,dword ptr [EDI + -0x8]
MOV dword ptr [ESP],EAX
MOV dword ptr [EBP + 0x8],EAX
MOV EAX,ECX
XOR ESI,dword ptr [EDI + -0x4]
SHR EAX,0x18
MOV dword ptr [ESP + 0x20],EDI
MOVZX EDI,BL
MOV EAX,dword ptr [EDX + EAX*0x4]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],ESI
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDX,dword ptr [ESP]
MOVZX EDI,DH
MOV EDX,dword ptr [ESP + 0x8]
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDI,ESI
MOV ESI,dword ptr [ESP + 0x24]
SHR EDI,0x10
MOV EDX,EDI
MOVZX EDI,DL
MOV EDX,dword ptr [ESP + 0x4]
XOR EAX,dword ptr [ESI + EDI*0x4]
MOVZX EDI,byte ptr [ESP]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,EBX
SHR EAX,0x18
MOV EAX,dword ptr [EDX + EAX*0x4]
MOV EDX,dword ptr [ESP + 0xc]
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDI,ECX
SHR EDI,0x10
MOV EDX,EDI
MOVZX EDI,DL
MOV EDX,dword ptr [ESP + 0x10]
XOR EAX,dword ptr [ESI + EDI*0x4]
MOVZX EDI,DH
MOV EDX,dword ptr [ESP + 0x8]
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDI,EBX
MOVZX EBX,BH
SHR EDI,0x10
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,EDI
MOVZX EDI,CH
MOVZX ECX,CL
ADD dword ptr [ESP + 0x1c],0x1
MOVZX EAX,AL
MOV EAX,dword ptr [ESI + EAX*0x4]
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDI,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x4]
SHR EDI,0x18
XOR EAX,dword ptr [EDX + EDI*0x4]
MOVZX EDI,byte ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0xc]
XOR EAX,dword ptr [EDX + EDI*0x4]
MOV EDX,dword ptr [ESP]
MOV EDI,dword ptr [ESP + 0x8]
MOV dword ptr [EBP + 0x8],EAX
SHR EDX,0x10
MOVZX EDX,DL
MOV EDX,dword ptr [ESI + EDX*0x4]
MOV ESI,dword ptr [ESP + 0x10]
XOR EDX,dword ptr [EDI + EBX*0x4]
MOV EBX,dword ptr [ESP + 0x4]
MOV EDI,dword ptr [ESP + 0xc]
SHR ESI,0x18
XOR EDX,dword ptr [EDI + ECX*0x4]
XOR EDX,dword ptr [EBX + ESI*0x4]
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x14]
MOV dword ptr [EBP + 0xc],EDX
MOV ESI,EDX
MOV dword ptr [EBP + 0x4],EBX
MOV EBX,dword ptr [ESP + 0x40]
MOV dword ptr [EBP],ECX
MOV ECX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [EBX + 0x3ec]
LEA EDX,[EBX + -0x1]
MOV dword ptr [ESP],EBX
CMP EDX,ECX
JG 0x0005b5c0
MOV ECX,dword ptr [ESP + 0x18]
MOV EDI,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x14]
XOR EDX,dword ptr [EBX]
MOV dword ptr [EBP],EDX
MOV ESI,dword ptr [EBX + 0x4]
XOR ESI,ECX
MOV ECX,EDX
MOV dword ptr [EBP + 0x4],ESI
XOR EAX,dword ptr [EBX + 0x8]
SHR ECX,0x18
MOV dword ptr [ESP],EAX
MOV dword ptr [EBP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x28]
XOR EDI,dword ptr [EBX + 0xc]
MOV EBX,ESI
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
MOVZX EBX,BL
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
SHL ECX,0x18
OR ECX,EBX
MOV EBX,EDI
SHR EBX,0x10
MOVZX EBX,BL
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
SHL EBX,0x10
OR ECX,EBX
MOV EBX,dword ptr [ESP]
MOVZX EBX,BH
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
SHL EBX,0x8
OR ECX,EBX
MOVZX EBX,byte ptr [ESP]
MOV dword ptr [ESP + 0x4],ECX
MOV ECX,ESI
SHR ECX,0x18
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
SHL ECX,0x18
OR ECX,EBX
MOV EBX,EDX
SHR EBX,0x10
MOVZX EBX,BL
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
SHL EBX,0x10
OR ECX,EBX
MOV EBX,EDI
MOVZX EBX,BH
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfffad070]
SHL EBX,0x8
OR ECX,EBX
MOV dword ptr [ESP + 0x8],ECX
MOV ECX,dword ptr [ESP]
SHR ECX,0x18
MOVZX EBX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
MOV ECX,EDI
SHR EDI,0x18
MOVZX ECX,CL
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
SHL EBX,0x18
OR EBX,ECX
MOV ECX,ESI
SHR ECX,0x10
MOVZX ECX,CL
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
SHL ECX,0x10
OR EBX,ECX
MOVZX ECX,DH
MOVZX EDX,DL
MOVZX ECX,byte ptr [EAX + ECX*0x1 + 0xfffad070]
MOVZX EDX,byte ptr [EAX + EDX*0x1 + 0xfffad070]
SHL ECX,0x8
OR EBX,ECX
MOVZX ECX,byte ptr [EAX + EDI*0x1 + 0xfffad070]
MOV EDI,EAX
MOV EAX,dword ptr [ESP]
SHR EAX,0x10
SHL ECX,0x18
MOVZX EAX,AL
OR ECX,EDX
MOVZX EDX,byte ptr [EDI + EAX*0x1 + 0xfffad070]
MOV EAX,ESI
MOVZX ESI,AH
SHL EDX,0x10
OR ECX,EDX
MOVZX EDX,byte ptr [EDI + ESI*0x1 + 0xfffad070]
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EBP + 0x8],EBX
MOV EDI,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [ESP + 0x4]
SHL EDX,0x8
OR EDX,ECX
MOV dword ptr [EBP],ESI
MOV dword ptr [EBP + 0x4],EDI
MOV dword ptr [EBP + 0xc],EDX
XOR ESI,dword ptr [EAX + 0x10]
MOV dword ptr [EBP],ESI
MOV ECX,dword ptr [EAX + 0x14]
XOR ECX,EDI
MOV dword ptr [EBP + 0x4],ECX
XOR EBX,dword ptr [EAX + 0x18]
MOV dword ptr [EBP + 0x8],EBX
XOR EDX,dword ptr [EAX + 0x1c]
MOV dword ptr [EBP + 0xc],EDX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_0005b540(int param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}\n\n" comment (function_definition "void FUN_0005b540(int param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" primitive_type (function_declarator "FUN_0005b540(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "uint *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "local_24 = param_2[1];" (assignment_expression "local_24 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = param_2[3];" (assignment_expression "uVar9 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = *param_2;" (assignment_expression "local_28 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar6 = param_2[2];" (assignment_expression "uVar6 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_1c = (uint *)(param_1 + 0x1e0);" (assignment_expression "local_1c = (uint *)(param_1 + 0x1e0)" identifier = (cast_expression "(uint *)(param_1 + 0x1e0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) ;) (if_statement "if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x3ec))" ( (binary_expression "1 < *(int *)(param_1 + 0x3ec)" number_literal < (pointer_expression "*(int *)(param_1 + 0x3ec)" * (cast_expression "(int *)(param_1 + 0x3ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3ec)" ( (binary_expression "param_1 + 0x3ec" identifier + number_literal) ))))) )) (compound_statement "{\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);" do (compound_statement "{\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    }" { (expression_statement "uVar7 = local_28 ^ *local_1c;" (assignment_expression "uVar7 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "puVar10 = local_1c + 4;" (assignment_expression "puVar10 = local_1c + 4" identifier = (binary_expression "local_1c + 4" identifier + number_literal)) ;) (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar8 = local_24 ^ local_1c[1];" (assignment_expression "uVar8 = local_24 ^ local_1c[1]" identifier = (binary_expression "local_24 ^ local_1c[1]" identifier ^ (subscript_expression "local_1c[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = uVar6 ^ local_1c[2];" (assignment_expression "uVar5 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);" (assignment_expression "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar7 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar7 >> 0x18) * 4" (parenthesized_expression "(uVar7 >> 0x18)" ( (binary_expression "uVar7 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar8 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar8 & 0xff) * 4" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar5 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 8 & 0xff)" ( (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & 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)) )))))) ;) (expression_statement "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);" (assignment_expression "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar8 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar8 >> 0x18) * 4" (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar5 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar5 & 0xff) * 4" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar7 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 0x10 & 0xff)" ( (binary_expression "uVar7 >> 0x10 & 0xff" (binary_expression "uVar7 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & 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)) )))))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);" (assignment_expression "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar8 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar7 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 8 & 0xff)" ( (binary_expression "uVar7 >> 8 & 0xff" (binary_expression "uVar7 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar5 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar5 >> 0x18) * 4" (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar9 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar9 & 0xff) * 4" (parenthesized_expression "(uVar9 & 0xff)" ( (binary_expression "uVar9 & 0xff" identifier & number_literal) )) * number_literal)) )))))) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);" (assignment_expression "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar5 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 0x10 & 0xff)" ( (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar8 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 8 & 0xff)" ( (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar7 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar7 & 0xff) * 4" (parenthesized_expression "(uVar7 & 0xff)" ( (binary_expression "uVar7 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) )) * number_literal)) )))))) ;) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "local_1c = puVar10;" (assignment_expression "local_1c = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(local_20 < *(int *)(param_1 + 0x3ec) + -1)" ( (binary_expression "local_20 < *(int *)(param_1 + 0x3ec) + -1" identifier < (binary_expression "*(int *)(param_1 + 0x3ec) + -1" (pointer_expression "*(int *)(param_1 + 0x3ec)" * (cast_expression "(int *)(param_1 + 0x3ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3ec)" ( (binary_expression "param_1 + 0x3ec" identifier + number_literal) )))) + number_literal)) )) ;) })) (expression_statement "local_28 = local_28 ^ *local_1c;" (assignment_expression "local_28 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "local_24 = local_1c[1] ^ local_24;" (assignment_expression "local_24 = local_1c[1] ^ local_24" identifier = (binary_expression "local_1c[1] ^ local_24" (subscript_expression "local_1c[1]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = uVar6 ^ local_1c[2];" (assignment_expression "uVar6 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;" (assignment_expression "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;" (assignment_expression "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 0x10 & 0xff" (binary_expression "local_28 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "bVar1 = (&DAT_000e77c0)[local_28 & 0xff];" (assignment_expression "bVar1 = (&DAT_000e77c0)[local_28 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[local_28 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "local_28 & 0xff" identifier & number_literal) ])) ;) (expression_statement "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;" (assignment_expression "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 >> 0x10 & 0xff" (binary_expression "local_24 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 8 & 0xff" (binary_expression "local_28 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];" (assignment_expression "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18]" identifier = (subscript_expression "(&DAT_000e77c0)[uVar9 >> 0x18]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ])) ;) (expression_statement "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];" (assignment_expression "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];" (assignment_expression "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[local_24 >> 8 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "local_24 >> 8 & 0xff" (binary_expression "local_24 >> 8" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "param_2[2] = uVar8;" (assignment_expression "param_2[2] = uVar8" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;" (assignment_expression "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" identifier = (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18" (binary_expression "(uint)bVar4 << 8" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) | (binary_expression "(uint)bVar2 << 0x18" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) | (binary_expression "(uint)bVar3 << 0x10" (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar7;" (assignment_expression "param_2[1] = uVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = uVar5 ^ local_1c[4];" (assignment_expression "*param_2 = uVar5 ^ local_1c[4]" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar5 ^ local_1c[4]" identifier ^ (subscript_expression "local_1c[4]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = local_1c[5] ^ uVar7;" (assignment_expression "param_2[1] = local_1c[5] ^ uVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_1c[5] ^ uVar7" (subscript_expression "local_1c[5]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "param_2[2] = uVar8 ^ local_1c[6];" (assignment_expression "param_2[2] = uVar8 ^ local_1c[6]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar8 ^ local_1c[6]" identifier ^ (subscript_expression "local_1c[6]" identifier [ number_literal ]))) ;) (expression_statement "param_2[3] = uVar9 ^ local_1c[7];" (assignment_expression "param_2[3] = uVar9 ^ local_1c[7]" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar9 ^ local_1c[7]" identifier ^ (subscript_expression "local_1c[7]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Unknown calling convention */\n\nvoid aes_decrypt_nb_4(AESContext *ctx,word32 *block)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  word32 *pwVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  word32 *local_1c;\n  \n  local_24 = block[1];\n  uVar9 = block[3];\n  local_28 = *block;\n  uVar6 = block[2];\n  local_1c = ctx->invkeysched;\n  if (1 < ctx->Nr) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);\n  }\n  uVar8 = local_28 ^ *local_1c;\n  *block = uVar8;\n  local_24 = local_1c[1] ^ local_24;\n  block[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  block[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = Sboxinv[uVar8 & 0xff];\n  uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8;\n  bVar2 = Sboxinv[uVar9 >> 0x18];\n  bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff];\n  bVar4 = Sboxinv[local_24 >> 8 & 0xff];\n  block[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *block = uVar5;\n  block[1] = uVar7;\n  block[3] = uVar9;\n  *block = uVar5 ^ local_1c[4];\n  block[1] = local_1c[5] ^ uVar7;\n  block[2] = uVar8 ^ local_1c[6];\n  block[3] = uVar9 ^ local_1c[7];\n  return;\n}\n\n" comment comment (function_definition "void aes_decrypt_nb_4(AESContext *ctx,word32 *block)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  word32 *pwVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  word32 *local_1c;\n  \n  local_24 = block[1];\n  uVar9 = block[3];\n  local_28 = *block;\n  uVar6 = block[2];\n  local_1c = ctx->invkeysched;\n  if (1 < ctx->Nr) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);\n  }\n  uVar8 = local_28 ^ *local_1c;\n  *block = uVar8;\n  local_24 = local_1c[1] ^ local_24;\n  block[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  block[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = Sboxinv[uVar8 & 0xff];\n  uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8;\n  bVar2 = Sboxinv[uVar9 >> 0x18];\n  bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff];\n  bVar4 = Sboxinv[local_24 >> 8 & 0xff];\n  block[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *block = uVar5;\n  block[1] = uVar7;\n  block[3] = uVar9;\n  *block = uVar5 ^ local_1c[4];\n  block[1] = local_1c[5] ^ uVar7;\n  block[2] = uVar8 ^ local_1c[6];\n  block[3] = uVar9 ^ local_1c[7];\n  return;\n}" primitive_type (function_declarator "aes_decrypt_nb_4(AESContext *ctx,word32 *block)" identifier (parameter_list "(AESContext *ctx,word32 *block)" ( (parameter_declaration "AESContext *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "word32 *block" type_identifier (pointer_declarator "*block" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  word32 *pwVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  word32 *local_1c;\n  \n  local_24 = block[1];\n  uVar9 = block[3];\n  local_28 = *block;\n  uVar6 = block[2];\n  local_1c = ctx->invkeysched;\n  if (1 < ctx->Nr) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);\n  }\n  uVar8 = local_28 ^ *local_1c;\n  *block = uVar8;\n  local_24 = local_1c[1] ^ local_24;\n  block[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  block[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = Sboxinv[uVar8 & 0xff];\n  uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8;\n  bVar2 = Sboxinv[uVar9 >> 0x18];\n  bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff];\n  bVar4 = Sboxinv[local_24 >> 8 & 0xff];\n  block[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *block = uVar5;\n  block[1] = uVar7;\n  block[3] = uVar9;\n  *block = uVar5 ^ local_1c[4];\n  block[1] = local_1c[5] ^ uVar7;\n  block[2] = uVar8 ^ local_1c[6];\n  block[3] = uVar9 ^ local_1c[7];\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "word32 *pwVar10;" type_identifier (pointer_declarator "*pwVar10" * identifier) ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "word32 *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "local_24 = block[1];" (assignment_expression "local_24 = block[1]" identifier = (subscript_expression "block[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = block[3];" (assignment_expression "uVar9 = block[3]" identifier = (subscript_expression "block[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = *block;" (assignment_expression "local_28 = *block" identifier = (pointer_expression "*block" * identifier)) ;) (expression_statement "uVar6 = block[2];" (assignment_expression "uVar6 = block[2]" identifier = (subscript_expression "block[2]" identifier [ number_literal ])) ;) (expression_statement "local_1c = ctx->invkeysched;" (assignment_expression "local_1c = ctx->invkeysched" identifier = (field_expression "ctx->invkeysched" identifier -> field_identifier)) ;) (if_statement "if (1 < ctx->Nr) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);\n  }" if (parenthesized_expression "(1 < ctx->Nr)" ( (binary_expression "1 < ctx->Nr" number_literal < (field_expression "ctx->Nr" identifier -> field_identifier)) )) (compound_statement "{\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    } while (local_20 < ctx->Nr + -1);" do (compound_statement "{\n      uVar7 = local_28 ^ *local_1c;\n      pwVar10 = local_1c + 4;\n      *block = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      block[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      block[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];\n      local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];\n      local_20 = local_20 + 1;\n      uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];\n      block[2] = uVar6;\n      uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];\n      block[3] = uVar9;\n      block[1] = local_24;\n      *block = local_28;\n      local_1c = pwVar10;\n    }" { (expression_statement "uVar7 = local_28 ^ *local_1c;" (assignment_expression "uVar7 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "pwVar10 = local_1c + 4;" (assignment_expression "pwVar10 = local_1c + 4" identifier = (binary_expression "local_1c + 4" identifier + number_literal)) ;) (expression_statement "*block = uVar7;" (assignment_expression "*block = uVar7" (pointer_expression "*block" * identifier) = identifier) ;) (expression_statement "uVar8 = local_24 ^ local_1c[1];" (assignment_expression "uVar8 = local_24 ^ local_1c[1]" identifier = (binary_expression "local_24 ^ local_1c[1]" identifier ^ (subscript_expression "local_1c[1]" identifier [ number_literal ]))) ;) (expression_statement "block[1] = uVar8;" (assignment_expression "block[1] = uVar8" (subscript_expression "block[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = uVar6 ^ local_1c[2];" (assignment_expression "uVar5 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "block[2] = uVar5;" (assignment_expression "block[2] = uVar5" (subscript_expression "block[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff];" (assignment_expression "local_28 = D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff]" identifier = (binary_expression "D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff] ^\n                 D1[uVar9 >> 0x10 & 0xff]" (binary_expression "D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff] ^ D2[uVar5 >> 8 & 0xff]" (binary_expression "D0[uVar7 >> 0x18] ^ D3[uVar8 & 0xff]" (subscript_expression "D0[uVar7 >> 0x18]" identifier [ (binary_expression "uVar7 >> 0x18" identifier >> number_literal) ]) ^ (subscript_expression "D3[uVar8 & 0xff]" identifier [ (binary_expression "uVar8 & 0xff" identifier & number_literal) ])) ^ (subscript_expression "D2[uVar5 >> 8 & 0xff]" identifier [ (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "D1[uVar9 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) ]))) ;) (expression_statement "local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff];" (assignment_expression "local_24 = D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff]" identifier = (binary_expression "D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff] ^\n                 D2[uVar9 >> 8 & 0xff]" (binary_expression "D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff] ^ D1[uVar7 >> 0x10 & 0xff]" (binary_expression "D0[uVar8 >> 0x18] ^ D3[uVar5 & 0xff]" (subscript_expression "D0[uVar8 >> 0x18]" identifier [ (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ]) ^ (subscript_expression "D3[uVar5 & 0xff]" identifier [ (binary_expression "uVar5 & 0xff" identifier & number_literal) ])) ^ (subscript_expression "D1[uVar7 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar7 >> 0x10 & 0xff" (binary_expression "uVar7 >> 0x10" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "D2[uVar9 >> 8 & 0xff]" identifier [ (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) ]))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff];" (assignment_expression "uVar6 = D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff]" identifier = (binary_expression "D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18] ^\n              D3[uVar9 & 0xff]" (binary_expression "D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff] ^ D0[uVar5 >> 0x18]" (binary_expression "D1[uVar8 >> 0x10 & 0xff] ^ D2[uVar7 >> 8 & 0xff]" (subscript_expression "D1[uVar8 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ]) ^ (subscript_expression "D2[uVar7 >> 8 & 0xff]" identifier [ (binary_expression "uVar7 >> 8 & 0xff" (binary_expression "uVar7 >> 8" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "D0[uVar5 >> 0x18]" identifier [ (binary_expression "uVar5 >> 0x18" identifier >> number_literal) ])) ^ (subscript_expression "D3[uVar9 & 0xff]" identifier [ (binary_expression "uVar9 & 0xff" identifier & number_literal) ]))) ;) (expression_statement "block[2] = uVar6;" (assignment_expression "block[2] = uVar6" (subscript_expression "block[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18];" (assignment_expression "uVar9 = D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18]" identifier = (binary_expression "D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff] ^\n              D0[uVar9 >> 0x18]" (binary_expression "D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff] ^ D3[uVar7 & 0xff]" (binary_expression "D1[uVar5 >> 0x10 & 0xff] ^ D2[uVar8 >> 8 & 0xff]" (subscript_expression "D1[uVar5 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) ]) ^ (subscript_expression "D2[uVar8 >> 8 & 0xff]" identifier [ (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) ])) ^ (subscript_expression "D3[uVar7 & 0xff]" identifier [ (binary_expression "uVar7 & 0xff" identifier & number_literal) ])) ^ (subscript_expression "D0[uVar9 >> 0x18]" identifier [ (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ]))) ;) (expression_statement "block[3] = uVar9;" (assignment_expression "block[3] = uVar9" (subscript_expression "block[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "block[1] = local_24;" (assignment_expression "block[1] = local_24" (subscript_expression "block[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*block = local_28;" (assignment_expression "*block = local_28" (pointer_expression "*block" * identifier) = identifier) ;) (expression_statement "local_1c = pwVar10;" (assignment_expression "local_1c = pwVar10" identifier = identifier) ;) }) while (parenthesized_expression "(local_20 < ctx->Nr + -1)" ( (binary_expression "local_20 < ctx->Nr + -1" identifier < (binary_expression "ctx->Nr + -1" (field_expression "ctx->Nr" identifier -> field_identifier) + number_literal)) )) ;) })) (expression_statement "uVar8 = local_28 ^ *local_1c;" (assignment_expression "uVar8 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "*block = uVar8;" (assignment_expression "*block = uVar8" (pointer_expression "*block" * identifier) = identifier) ;) (expression_statement "local_24 = local_1c[1] ^ local_24;" (assignment_expression "local_24 = local_1c[1] ^ local_24" identifier = (binary_expression "local_1c[1] ^ local_24" (subscript_expression "local_1c[1]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "block[1] = local_24;" (assignment_expression "block[1] = local_24" (subscript_expression "block[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = uVar6 ^ local_1c[2];" (assignment_expression "uVar6 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "block[2] = uVar6;" (assignment_expression "block[2] = uVar6" (subscript_expression "block[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8;" (assignment_expression "uVar5 = (uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar6 >> 8 & 0xff] << 8" (binary_expression "(uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff] |\n          (uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)Sboxinv[uVar8 >> 0x18] << 0x18 | (uint)Sboxinv[local_24 & 0xff]" (binary_expression "(uint)Sboxinv[uVar8 >> 0x18] << 0x18" (cast_expression "(uint)Sboxinv[uVar8 >> 0x18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar8 >> 0x18]" identifier [ (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ])) << number_literal) | (cast_expression "(uint)Sboxinv[local_24 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[local_24 & 0xff]" identifier [ (binary_expression "local_24 & 0xff" identifier & number_literal) ]))) | (binary_expression "(uint)Sboxinv[uVar9 >> 0x10 & 0xff] << 0x10" (cast_expression "(uint)Sboxinv[uVar9 >> 0x10 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar9 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) ])) << number_literal)) | (binary_expression "(uint)Sboxinv[uVar6 >> 8 & 0xff] << 8" (cast_expression "(uint)Sboxinv[uVar6 >> 8 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar6 >> 8 & 0xff]" identifier [ (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) ])) << number_literal))) ;) (expression_statement "uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8;" (assignment_expression "uVar7 = (uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar9 >> 8 & 0xff] << 8" (binary_expression "(uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff] |\n          (uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)Sboxinv[local_24 >> 0x18] << 0x18 | (uint)Sboxinv[uVar6 & 0xff]" (binary_expression "(uint)Sboxinv[local_24 >> 0x18] << 0x18" (cast_expression "(uint)Sboxinv[local_24 >> 0x18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[local_24 >> 0x18]" identifier [ (binary_expression "local_24 >> 0x18" identifier >> number_literal) ])) << number_literal) | (cast_expression "(uint)Sboxinv[uVar6 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar6 & 0xff]" identifier [ (binary_expression "uVar6 & 0xff" identifier & number_literal) ]))) | (binary_expression "(uint)Sboxinv[uVar8 >> 0x10 & 0xff] << 0x10" (cast_expression "(uint)Sboxinv[uVar8 >> 0x10 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar8 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ])) << number_literal)) | (binary_expression "(uint)Sboxinv[uVar9 >> 8 & 0xff] << 8" (cast_expression "(uint)Sboxinv[uVar9 >> 8 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar9 >> 8 & 0xff]" identifier [ (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) ])) << number_literal))) ;) (expression_statement "bVar1 = Sboxinv[uVar8 & 0xff];" (assignment_expression "bVar1 = Sboxinv[uVar8 & 0xff]" identifier = (subscript_expression "Sboxinv[uVar8 & 0xff]" identifier [ (binary_expression "uVar8 & 0xff" identifier & number_literal) ])) ;) (expression_statement "uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8;" (assignment_expression "uVar8 = (uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10 | (uint)Sboxinv[uVar8 >> 8 & 0xff] << 8" (binary_expression "(uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff] |\n          (uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)Sboxinv[uVar6 >> 0x18] << 0x18 | (uint)Sboxinv[uVar9 & 0xff]" (binary_expression "(uint)Sboxinv[uVar6 >> 0x18] << 0x18" (cast_expression "(uint)Sboxinv[uVar6 >> 0x18]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar6 >> 0x18]" identifier [ (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ])) << number_literal) | (cast_expression "(uint)Sboxinv[uVar9 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar9 & 0xff]" identifier [ (binary_expression "uVar9 & 0xff" identifier & number_literal) ]))) | (binary_expression "(uint)Sboxinv[local_24 >> 0x10 & 0xff] << 0x10" (cast_expression "(uint)Sboxinv[local_24 >> 0x10 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[local_24 >> 0x10 & 0xff]" identifier [ (binary_expression "local_24 >> 0x10 & 0xff" (binary_expression "local_24 >> 0x10" identifier >> number_literal) & number_literal) ])) << number_literal)) | (binary_expression "(uint)Sboxinv[uVar8 >> 8 & 0xff] << 8" (cast_expression "(uint)Sboxinv[uVar8 >> 8 & 0xff]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "Sboxinv[uVar8 >> 8 & 0xff]" identifier [ (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) ])) << number_literal))) ;) (expression_statement "bVar2 = Sboxinv[uVar9 >> 0x18];" (assignment_expression "bVar2 = Sboxinv[uVar9 >> 0x18]" identifier = (subscript_expression "Sboxinv[uVar9 >> 0x18]" identifier [ (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ])) ;) (expression_statement "bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff];" (assignment_expression "bVar3 = Sboxinv[uVar6 >> 0x10 & 0xff]" identifier = (subscript_expression "Sboxinv[uVar6 >> 0x10 & 0xff]" identifier [ (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "bVar4 = Sboxinv[local_24 >> 8 & 0xff];" (assignment_expression "bVar4 = Sboxinv[local_24 >> 8 & 0xff]" identifier = (subscript_expression "Sboxinv[local_24 >> 8 & 0xff]" identifier [ (binary_expression "local_24 >> 8 & 0xff" (binary_expression "local_24 >> 8" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "block[2] = uVar8;" (assignment_expression "block[2] = uVar8" (subscript_expression "block[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;" (assignment_expression "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" identifier = (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18" (binary_expression "(uint)bVar4 << 8" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) | (binary_expression "(uint)bVar2 << 0x18" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) | (binary_expression "(uint)bVar3 << 0x10" (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "*block = uVar5;" (assignment_expression "*block = uVar5" (pointer_expression "*block" * identifier) = identifier) ;) (expression_statement "block[1] = uVar7;" (assignment_expression "block[1] = uVar7" (subscript_expression "block[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "block[3] = uVar9;" (assignment_expression "block[3] = uVar9" (subscript_expression "block[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*block = uVar5 ^ local_1c[4];" (assignment_expression "*block = uVar5 ^ local_1c[4]" (pointer_expression "*block" * identifier) = (binary_expression "uVar5 ^ local_1c[4]" identifier ^ (subscript_expression "local_1c[4]" identifier [ number_literal ]))) ;) (expression_statement "block[1] = local_1c[5] ^ uVar7;" (assignment_expression "block[1] = local_1c[5] ^ uVar7" (subscript_expression "block[1]" identifier [ number_literal ]) = (binary_expression "local_1c[5] ^ uVar7" (subscript_expression "local_1c[5]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "block[2] = uVar8 ^ local_1c[6];" (assignment_expression "block[2] = uVar8 ^ local_1c[6]" (subscript_expression "block[2]" identifier [ number_literal ]) = (binary_expression "uVar8 ^ local_1c[6]" identifier ^ (subscript_expression "local_1c[6]" identifier [ number_literal ]))) ;) (expression_statement "block[3] = uVar9 ^ local_1c[7];" (assignment_expression "block[3] = uVar9 ^ local_1c[7]" (subscript_expression "block[3]" identifier [ number_literal ]) = (binary_expression "uVar9 ^ local_1c[7]" identifier ^ (subscript_expression "local_1c[7]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0005b540(int param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}\n\n" (function_definition "void FUN_0005b540(int param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" primitive_type (function_declarator "FUN_0005b540(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint local_28;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "uint *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "local_24 = param_2[1];" (assignment_expression "local_24 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = param_2[3];" (assignment_expression "uVar9 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = *param_2;" (assignment_expression "local_28 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar6 = param_2[2];" (assignment_expression "uVar6 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_1c = (uint *)(param_1 + 0x1e0);" (assignment_expression "local_1c = (uint *)(param_1 + 0x1e0)" identifier = (cast_expression "(uint *)(param_1 + 0x1e0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) ;) (if_statement "if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x3ec))" ( (binary_expression "1 < *(int *)(param_1 + 0x3ec)" number_literal < (pointer_expression "*(int *)(param_1 + 0x3ec)" * (cast_expression "(int *)(param_1 + 0x3ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3ec)" ( (binary_expression "param_1 + 0x3ec" identifier + number_literal) ))))) )) (compound_statement "{\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);" do (compound_statement "{\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    }" { (expression_statement "uVar7 = local_28 ^ *local_1c;" (assignment_expression "uVar7 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "puVar10 = local_1c + 4;" (assignment_expression "puVar10 = local_1c + 4" identifier = (binary_expression "local_1c + 4" identifier + number_literal)) ;) (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar8 = local_24 ^ local_1c[1];" (assignment_expression "uVar8 = local_24 ^ local_1c[1]" identifier = (binary_expression "local_24 ^ local_1c[1]" identifier ^ (subscript_expression "local_1c[1]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = uVar6 ^ local_1c[2];" (assignment_expression "uVar5 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);" (assignment_expression "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar7 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar7 >> 0x18) * 4" (parenthesized_expression "(uVar7 >> 0x18)" ( (binary_expression "uVar7 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar8 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar8 & 0xff) * 4" (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar5 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 8 & 0xff)" ( (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & 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)) )))))) ;) (expression_statement "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);" (assignment_expression "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar8 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar8 >> 0x18) * 4" (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar5 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar5 & 0xff) * 4" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar7 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 0x10 & 0xff)" ( (binary_expression "uVar7 >> 0x10 & 0xff" (binary_expression "uVar7 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & 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)) )))))) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);" (assignment_expression "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar8 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar7 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 8 & 0xff)" ( (binary_expression "uVar7 >> 8 & 0xff" (binary_expression "uVar7 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar5 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar5 >> 0x18) * 4" (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar9 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar9 & 0xff) * 4" (parenthesized_expression "(uVar9 & 0xff)" ( (binary_expression "uVar9 & 0xff" identifier & number_literal) )) * number_literal)) )))))) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);" (assignment_expression "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" identifier = (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" ( (binary_expression "&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" & identifier) + (binary_expression "(uVar5 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 0x10 & 0xff)" ( (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) )) * number_literal)) )))) ^ (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" ( (binary_expression "&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" & identifier) + (binary_expression "(uVar8 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 8 & 0xff)" ( (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" * (cast_expression "(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" ( (binary_expression "&DAT_000e57c0 + (uVar7 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" & identifier) + (binary_expression "(uVar7 & 0xff) * 4" (parenthesized_expression "(uVar7 & 0xff)" ( (binary_expression "uVar7 & 0xff" identifier & number_literal) )) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" * (cast_expression "(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" ( (binary_expression "&DAT_000e63c0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" & identifier) + (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) )) * number_literal)) )))))) ;) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "local_1c = puVar10;" (assignment_expression "local_1c = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(local_20 < *(int *)(param_1 + 0x3ec) + -1)" ( (binary_expression "local_20 < *(int *)(param_1 + 0x3ec) + -1" identifier < (binary_expression "*(int *)(param_1 + 0x3ec) + -1" (pointer_expression "*(int *)(param_1 + 0x3ec)" * (cast_expression "(int *)(param_1 + 0x3ec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3ec)" ( (binary_expression "param_1 + 0x3ec" identifier + number_literal) )))) + number_literal)) )) ;) })) (expression_statement "local_28 = local_28 ^ *local_1c;" (assignment_expression "local_28 = local_28 ^ *local_1c" identifier = (binary_expression "local_28 ^ *local_1c" identifier ^ (pointer_expression "*local_1c" * identifier))) ;) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "local_24 = local_1c[1] ^ local_24;" (assignment_expression "local_24 = local_1c[1] ^ local_24" identifier = (binary_expression "local_1c[1] ^ local_24" (subscript_expression "local_1c[1]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar6 = uVar6 ^ local_1c[2];" (assignment_expression "uVar6 = uVar6 ^ local_1c[2]" identifier = (binary_expression "uVar6 ^ local_1c[2]" identifier ^ (subscript_expression "local_1c[2]" identifier [ number_literal ]))) ;) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" identifier = (binary_expression "uVar9 ^ local_1c[3]" identifier ^ (subscript_expression "local_1c[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;" (assignment_expression "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;" (assignment_expression "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 0x10 & 0xff" (binary_expression "local_28 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "bVar1 = (&DAT_000e77c0)[local_28 & 0xff];" (assignment_expression "bVar1 = (&DAT_000e77c0)[local_28 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[local_28 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "local_28 & 0xff" identifier & number_literal) ])) ;) (expression_statement "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;" (assignment_expression "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" identifier = (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ]) << number_literal) | (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "uVar9 & 0xff" identifier & number_literal) ])) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_24 >> 0x10 & 0xff" (binary_expression "local_24 >> 0x10" identifier >> number_literal) & number_literal) ]) << number_literal)) | (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) ))) [ (binary_expression "local_28 >> 8 & 0xff" (binary_expression "local_28 >> 8" identifier >> number_literal) & number_literal) ]) << number_literal))) ;) (expression_statement "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];" (assignment_expression "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18]" identifier = (subscript_expression "(&DAT_000e77c0)[uVar9 >> 0x18]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ])) ;) (expression_statement "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];" (assignment_expression "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];" (assignment_expression "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff]" identifier = (subscript_expression "(&DAT_000e77c0)[local_24 >> 8 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" ( (pointer_expression "&DAT_000e77c0" & identifier) )) [ (binary_expression "local_24 >> 8 & 0xff" (binary_expression "local_24 >> 8" identifier >> number_literal) & number_literal) ])) ;) (expression_statement "param_2[2] = uVar8;" (assignment_expression "param_2[2] = uVar8" (subscript_expression "param_2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;" (assignment_expression "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" identifier = (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18" (binary_expression "(uint)bVar4 << 8" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal) | (binary_expression "(uint)bVar2 << 0x18" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal)) | (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) | (binary_expression "(uint)bVar3 << 0x10" (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = uVar7;" (assignment_expression "param_2[1] = uVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_2 = uVar5 ^ local_1c[4];" (assignment_expression "*param_2 = uVar5 ^ local_1c[4]" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar5 ^ local_1c[4]" identifier ^ (subscript_expression "local_1c[4]" identifier [ number_literal ]))) ;) (expression_statement "param_2[1] = local_1c[5] ^ uVar7;" (assignment_expression "param_2[1] = local_1c[5] ^ uVar7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_1c[5] ^ uVar7" (subscript_expression "local_1c[5]" identifier [ number_literal ]) ^ identifier)) ;) (expression_statement "param_2[2] = uVar8 ^ local_1c[6];" (assignment_expression "param_2[2] = uVar8 ^ local_1c[6]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar8 ^ local_1c[6]" identifier ^ (subscript_expression "local_1c[6]" identifier [ number_literal ]))) ;) (expression_statement "param_2[3] = uVar9 ^ local_1c[7];" (assignment_expression "param_2[3] = uVar9 ^ local_1c[7]" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar9 ^ local_1c[7]" identifier ^ (subscript_expression "local_1c[7]" identifier [ number_literal ]))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (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 (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 (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 (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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (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 (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)) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 (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)) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) ^ IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT >> LIT) ]) << LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT & LIT) ])) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT)) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT >> LIT) ]) << LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT & LIT) ])) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT)) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT & LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT >> LIT) ]) << LIT) | (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression IDENT & LIT) ])) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT)) | (binary_expression (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ]) << LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT >> LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (binary_expression IDENT >> LIT) & LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) | (cast_expression ( (type_descriptor TYPE) ) IDENT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) ^ IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ]))) ;) (return_statement return ;) })))
(function_definition "void FUN_0005b540(int param_1,uint *param_2)\n\n{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0005b540(int param_1,uint *param_2)" (identifier "FUN_0005b540") (parameter_list "(int param_1,uint *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  byte bVar3;\n  byte bVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint *puVar10;\n  uint local_28;\n  uint local_24;\n  int local_20;\n  uint *local_1c;\n  \n  local_24 = param_2[1];\n  uVar9 = param_2[3];\n  local_28 = *param_2;\n  uVar6 = param_2[2];\n  local_1c = (uint *)(param_1 + 0x1e0);\n  if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }\n  local_28 = local_28 ^ *local_1c;\n  *param_2 = local_28;\n  local_24 = local_1c[1] ^ local_24;\n  param_2[1] = local_24;\n  uVar6 = uVar6 ^ local_1c[2];\n  param_2[2] = uVar6;\n  uVar9 = uVar9 ^ local_1c[3];\n  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;\n  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;\n  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];\n  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;\n  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];\n  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];\n  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];\n  param_2[2] = uVar8;\n  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;\n  *param_2 = uVar5;\n  param_2[1] = uVar7;\n  param_2[3] = uVar9;\n  *param_2 = uVar5 ^ local_1c[4];\n  param_2[1] = local_1c[5] ^ uVar7;\n  param_2[2] = uVar8 ^ local_1c[6];\n  param_2[3] = uVar9 ^ local_1c[7];\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "uint *local_1c;" (type_identifier "uint") (pointer_declarator "*local_1c" (* "*") (identifier "local_1c")) (; ";")) (expression_statement "local_24 = param_2[1];" (assignment_expression "local_24 = param_2[1]" (identifier "local_24") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = param_2[3];" (assignment_expression "uVar9 = param_2[3]" (identifier "uVar9") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_28 = *param_2;" (assignment_expression "local_28 = *param_2" (identifier "local_28") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar6 = param_2[2];" (assignment_expression "uVar6 = param_2[2]" (identifier "uVar6") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_1c = (uint *)(param_1 + 0x1e0);" (assignment_expression "local_1c = (uint *)(param_1 + 0x1e0)" (identifier "local_1c") (= "=") (cast_expression "(uint *)(param_1 + 0x1e0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (; ";")) (if_statement "if (1 < *(int *)(param_1 + 0x3ec)) {\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" (if "if") (parenthesized_expression "(1 < *(int *)(param_1 + 0x3ec))" (( "(") (binary_expression "1 < *(int *)(param_1 + 0x3ec)" (number_literal "1") (< "<") (pointer_expression "*(int *)(param_1 + 0x3ec)" (* "*") (cast_expression "(int *)(param_1 + 0x3ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3ec)" (( "(") (binary_expression "param_1 + 0x3ec" (identifier "param_1") (+ "+") (number_literal "0x3ec")) () ")"))))) () ")")) (compound_statement "{\n    local_20 = 0;\n    do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);\n  }" ({ "{") (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);" (do "do") (compound_statement "{\n      uVar7 = local_28 ^ *local_1c;\n      puVar10 = local_1c + 4;\n      *param_2 = uVar7;\n      uVar8 = local_24 ^ local_1c[1];\n      param_2[1] = uVar8;\n      uVar5 = uVar6 ^ local_1c[2];\n      param_2[2] = uVar5;\n      uVar9 = uVar9 ^ local_1c[3];\n      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);\n      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);\n      local_20 = local_20 + 1;\n      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);\n      param_2[2] = uVar6;\n      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);\n      param_2[3] = uVar9;\n      param_2[1] = local_24;\n      *param_2 = local_28;\n      local_1c = puVar10;\n    }" ({ "{") (expression_statement "uVar7 = local_28 ^ *local_1c;" (assignment_expression "uVar7 = local_28 ^ *local_1c" (identifier "uVar7") (= "=") (binary_expression "local_28 ^ *local_1c" (identifier "local_28") (^ "^") (pointer_expression "*local_1c" (* "*") (identifier "local_1c")))) (; ";")) (expression_statement "puVar10 = local_1c + 4;" (assignment_expression "puVar10 = local_1c + 4" (identifier "puVar10") (= "=") (binary_expression "local_1c + 4" (identifier "local_1c") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*param_2 = uVar7;" (assignment_expression "*param_2 = uVar7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar8 = local_24 ^ local_1c[1];" (assignment_expression "uVar8 = local_24 ^ local_1c[1]" (identifier "uVar8") (= "=") (binary_expression "local_24 ^ local_1c[1]" (identifier "local_24") (^ "^") (subscript_expression "local_1c[1]" (identifier "local_1c") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar5 = uVar6 ^ local_1c[2];" (assignment_expression "uVar5 = uVar6 ^ local_1c[2]" (identifier "uVar5") (= "=") (binary_expression "uVar6 ^ local_1c[2]" (identifier "uVar6") (^ "^") (subscript_expression "local_1c[2]" (identifier "local_1c") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_2[2] = uVar5;" (assignment_expression "param_2[2] = uVar5" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" (identifier "uVar9") (= "=") (binary_expression "uVar9 ^ local_1c[3]" (identifier "uVar9") (^ "^") (subscript_expression "local_1c[3]" (identifier "local_1c") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);" (assignment_expression "local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (identifier "local_28") (= "=") (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e63c0 + (uVar7 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_000e63c0 + (uVar7 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" (& "&") (identifier "DAT_000e63c0")) (+ "+") (binary_expression "(uVar7 >> 0x18) * 4" (parenthesized_expression "(uVar7 >> 0x18)" (( "(") (binary_expression "uVar7 >> 0x18" (identifier "uVar7") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e57c0 + (uVar8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e57c0 + (uVar8 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" (& "&") (identifier "DAT_000e57c0")) (+ "+") (binary_expression "(uVar8 & 0xff) * 4" (parenthesized_expression "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" (& "&") (identifier "DAT_000e5bc0")) (+ "+") (binary_expression "(uVar5 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 8 & 0xff)" (( "(") (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" (identifier "uVar5") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" (& "&") (identifier "DAT_000e5fc0")) (+ "+") (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"))) () ")")))))) (; ";")) (expression_statement "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);" (assignment_expression "local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (identifier "local_24") (= "=") (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^\n                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^\n                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e63c0 + (uVar8 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_000e63c0 + (uVar8 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" (& "&") (identifier "DAT_000e63c0")) (+ "+") (binary_expression "(uVar8 >> 0x18) * 4" (parenthesized_expression "(uVar8 >> 0x18)" (( "(") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e57c0 + (uVar5 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e57c0 + (uVar5 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" (& "&") (identifier "DAT_000e57c0")) (+ "+") (binary_expression "(uVar5 & 0xff) * 4" (parenthesized_expression "(uVar5 & 0xff)" (( "(") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" (& "&") (identifier "DAT_000e5fc0")) (+ "+") (binary_expression "(uVar7 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar7 >> 0x10 & 0xff" (binary_expression "uVar7 >> 0x10" (identifier "uVar7") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" (& "&") (identifier "DAT_000e5bc0")) (+ "+") (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"))) () ")")))))) (; ";")) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" (identifier "local_20") (= "=") (binary_expression "local_20 + 1" (identifier "local_20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);" (assignment_expression "uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (identifier "uVar6") (= "=") (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" (& "&") (identifier "DAT_000e5fc0")) (+ "+") (binary_expression "(uVar8 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" (identifier "uVar8") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" (& "&") (identifier "DAT_000e5bc0")) (+ "+") (binary_expression "(uVar7 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar7 >> 8 & 0xff)" (( "(") (binary_expression "uVar7 >> 8 & 0xff" (binary_expression "uVar7 >> 8" (identifier "uVar7") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e63c0 + (uVar5 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_000e63c0 + (uVar5 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" (& "&") (identifier "DAT_000e63c0")) (+ "+") (binary_expression "(uVar5 >> 0x18) * 4" (parenthesized_expression "(uVar5 >> 0x18)" (( "(") (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e57c0 + (uVar9 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e57c0 + (uVar9 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" (& "&") (identifier "DAT_000e57c0")) (+ "+") (binary_expression "(uVar9 & 0xff) * 4" (parenthesized_expression "(uVar9 & 0xff)" (( "(") (binary_expression "uVar9 & 0xff" (identifier "uVar9") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);" (assignment_expression "uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (identifier "uVar9") (= "=") (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (binary_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^\n              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (pointer_expression "*(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4" (pointer_expression "&DAT_000e5fc0" (& "&") (identifier "DAT_000e5fc0")) (+ "+") (binary_expression "(uVar5 >> 0x10 & 0xff) * 4" (parenthesized_expression "(uVar5 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" (identifier "uVar5") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4" (pointer_expression "&DAT_000e5bc0" (& "&") (identifier "DAT_000e5bc0")) (+ "+") (binary_expression "(uVar8 >> 8 & 0xff) * 4" (parenthesized_expression "(uVar8 >> 8 & 0xff)" (( "(") (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" (identifier "uVar8") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e57c0 + (uVar7 & 0xff) * 4)" (( "(") (binary_expression "&DAT_000e57c0 + (uVar7 & 0xff) * 4" (pointer_expression "&DAT_000e57c0" (& "&") (identifier "DAT_000e57c0")) (+ "+") (binary_expression "(uVar7 & 0xff) * 4" (parenthesized_expression "(uVar7 & 0xff)" (( "(") (binary_expression "uVar7 & 0xff" (identifier "uVar7") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000e63c0 + (uVar9 >> 0x18) * 4)" (( "(") (binary_expression "&DAT_000e63c0 + (uVar9 >> 0x18) * 4" (pointer_expression "&DAT_000e63c0" (& "&") (identifier "DAT_000e63c0")) (+ "+") (binary_expression "(uVar9 >> 0x18) * 4" (parenthesized_expression "(uVar9 >> 0x18)" (( "(") (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "local_1c = puVar10;" (assignment_expression "local_1c = puVar10" (identifier "local_1c") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_20 < *(int *)(param_1 + 0x3ec) + -1)" (( "(") (binary_expression "local_20 < *(int *)(param_1 + 0x3ec) + -1" (identifier "local_20") (< "<") (binary_expression "*(int *)(param_1 + 0x3ec) + -1" (pointer_expression "*(int *)(param_1 + 0x3ec)" (* "*") (cast_expression "(int *)(param_1 + 0x3ec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3ec)" (( "(") (binary_expression "param_1 + 0x3ec" (identifier "param_1") (+ "+") (number_literal "0x3ec")) () ")")))) (+ "+") (number_literal "-1"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_28 = local_28 ^ *local_1c;" (assignment_expression "local_28 = local_28 ^ *local_1c" (identifier "local_28") (= "=") (binary_expression "local_28 ^ *local_1c" (identifier "local_28") (^ "^") (pointer_expression "*local_1c" (* "*") (identifier "local_1c")))) (; ";")) (expression_statement "*param_2 = local_28;" (assignment_expression "*param_2 = local_28" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "local_24 = local_1c[1] ^ local_24;" (assignment_expression "local_24 = local_1c[1] ^ local_24" (identifier "local_24") (= "=") (binary_expression "local_1c[1] ^ local_24" (subscript_expression "local_1c[1]" (identifier "local_1c") ([ "[") (number_literal "1") (] "]")) (^ "^") (identifier "local_24"))) (; ";")) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "uVar6 = uVar6 ^ local_1c[2];" (assignment_expression "uVar6 = uVar6 ^ local_1c[2]" (identifier "uVar6") (= "=") (binary_expression "uVar6 ^ local_1c[2]" (identifier "uVar6") (^ "^") (subscript_expression "local_1c[2]" (identifier "local_1c") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "param_2[2] = uVar6;" (assignment_expression "param_2[2] = uVar6" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar9 = uVar9 ^ local_1c[3];" (assignment_expression "uVar9 = uVar9 ^ local_1c[3]" (identifier "uVar9") (= "=") (binary_expression "uVar9 ^ local_1c[3]" (identifier "uVar9") (^ "^") (subscript_expression "local_1c[3]" (identifier "local_1c") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;" (assignment_expression "uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (identifier "uVar5") (= "=") (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_28 >> 0x18" (identifier "local_28") (>> ">>") (number_literal "0x18")) (] "]")) (<< "<<") (number_literal "0x18")) (| "|") (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_24 & 0xff" (identifier "local_24") (& "&") (number_literal "0xff")) (] "]"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar9 >> 0x10 & 0xff" (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar6 >> 8 & 0xff" (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;" (assignment_expression "uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (identifier "uVar7") (= "=") (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_24 >> 0x18" (identifier "local_24") (>> ">>") (number_literal "0x18")) (] "]")) (<< "<<") (number_literal "0x18")) (| "|") (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff")) (] "]"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_28 >> 0x10 & 0xff" (binary_expression "local_28 >> 0x10" (identifier "local_28") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar9 >> 8 & 0xff" (binary_expression "uVar9 >> 8" (identifier "uVar9") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "bVar1 = (&DAT_000e77c0)[local_28 & 0xff];" (assignment_expression "bVar1 = (&DAT_000e77c0)[local_28 & 0xff]" (identifier "bVar1") (= "=") (subscript_expression "(&DAT_000e77c0)[local_28 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")")) ([ "[") (binary_expression "local_28 & 0xff" (identifier "local_28") (& "&") (number_literal "0xff")) (] "]"))) (; ";")) (expression_statement "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;" (assignment_expression "uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (identifier "uVar8") (= "=") (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |\n          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |\n          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |\n          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (binary_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (] "]")) (<< "<<") (number_literal "0x18")) (| "|") (subscript_expression "(uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "uVar9 & 0xff" (identifier "uVar9") (& "&") (number_literal "0xff")) (] "]"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_24 >> 0x10 & 0xff" (binary_expression "local_24 >> 0x10" (identifier "local_24") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "0x10"))) (| "|") (binary_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8" (subscript_expression "(uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff]" (call_expression "(uint)(byte)(&DAT_000e77c0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")"))) ([ "[") (binary_expression "local_28 >> 8 & 0xff" (binary_expression "local_28 >> 8" (identifier "local_28") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) (] "]")) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];" (assignment_expression "bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18]" (identifier "bVar2") (= "=") (subscript_expression "(&DAT_000e77c0)[uVar9 >> 0x18]" (parenthesized_expression "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")")) ([ "[") (binary_expression "uVar9 >> 0x18" (identifier "uVar9") (>> ">>") (number_literal "0x18")) (] "]"))) (; ";")) (expression_statement "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];" (assignment_expression "bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" (identifier "bVar3") (= "=") (subscript_expression "(&DAT_000e77c0)[uVar6 >> 0x10 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")")) ([ "[") (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" (identifier "uVar6") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) (] "]"))) (; ";")) (expression_statement "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];" (assignment_expression "bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff]" (identifier "bVar4") (= "=") (subscript_expression "(&DAT_000e77c0)[local_24 >> 8 & 0xff]" (parenthesized_expression "(&DAT_000e77c0)" (( "(") (pointer_expression "&DAT_000e77c0" (& "&") (identifier "DAT_000e77c0")) () ")")) ([ "[") (binary_expression "local_24 >> 8 & 0xff" (binary_expression "local_24 >> 8" (identifier "local_24") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) (] "]"))) (; ";")) (expression_statement "param_2[2] = uVar8;" (assignment_expression "param_2[2] = uVar8" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;" (assignment_expression "uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" (identifier "uVar9") (= "=") (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1" (binary_expression "(uint)bVar4 << 8 | (uint)bVar2 << 0x18" (binary_expression "(uint)bVar4 << 8" (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "(uint)bVar2 << 0x18" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (<< "<<") (number_literal "0x18"))) (| "|") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (| "|") (binary_expression "(uint)bVar3 << 0x10" (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_2[1] = uVar7;" (assignment_expression "param_2[1] = uVar7" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "param_2[3] = uVar9;" (assignment_expression "param_2[3] = uVar9" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*param_2 = uVar5 ^ local_1c[4];" (assignment_expression "*param_2 = uVar5 ^ local_1c[4]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar5 ^ local_1c[4]" (identifier "uVar5") (^ "^") (subscript_expression "local_1c[4]" (identifier "local_1c") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "param_2[1] = local_1c[5] ^ uVar7;" (assignment_expression "param_2[1] = local_1c[5] ^ uVar7" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_1c[5] ^ uVar7" (subscript_expression "local_1c[5]" (identifier "local_1c") ([ "[") (number_literal "5") (] "]")) (^ "^") (identifier "uVar7"))) (; ";")) (expression_statement "param_2[2] = uVar8 ^ local_1c[6];" (assignment_expression "param_2[2] = uVar8 ^ local_1c[6]" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar8 ^ local_1c[6]" (identifier "uVar8") (^ "^") (subscript_expression "local_1c[6]" (identifier "local_1c") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "param_2[3] = uVar9 ^ local_1c[7];" (assignment_expression "param_2[3] = uVar9 ^ local_1c[7]" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar9 ^ local_1c[7]" (identifier "uVar9") (^ "^") (subscript_expression "local_1c[7]" (identifier "local_1c") ([ "[") (number_literal "7") (] "]")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Unknown calling convention */

void function_1(type_1 *ctx,type_2 *block)

{
  type_3 bVar1;
  type_3 bVar2;
  type_3 bVar3;
  type_3 bVar4;
  type_4 var_8;
  type_4 var_4;
  type_4 var_6;
  type_4 var_7;
  type_4 var_5;
  type_2 *pwVar10;
  type_4 var_1;
  type_4 var_3;
  int var_9;
  type_2 *var_2;
  
  var_3 = block[1];
  var_5 = block[3];
  var_1 = *block;
  var_4 = block[2];
  var_2 = ctx->invkeysched;
  if (1 < ctx->Nr) {
    var_9 = 0;
    do {
      var_6 = var_1 ^ *var_2;
      pwVar10 = var_2 + 4;
      *block = var_6;
      var_7 = var_3 ^ var_2[1];
      block[1] = var_7;
      var_8 = var_4 ^ var_2[2];
      block[2] = var_8;
      var_5 = var_5 ^ var_2[3];
      var_1 = D0[var_6 >> 0x18] ^ D3[var_7 & 0xff] ^ D2[var_8 >> 8 & 0xff] ^
                 D1[var_5 >> 0x10 & 0xff];
      var_3 = D0[var_7 >> 0x18] ^ D3[var_8 & 0xff] ^ D1[var_6 >> 0x10 & 0xff] ^
                 D2[var_5 >> 8 & 0xff];
      var_9 = var_9 + 1;
      var_4 = D1[var_7 >> 0x10 & 0xff] ^ D2[var_6 >> 8 & 0xff] ^ D0[var_8 >> 0x18] ^
              D3[var_5 & 0xff];
      block[2] = var_4;
      var_5 = D1[var_8 >> 0x10 & 0xff] ^ D2[var_7 >> 8 & 0xff] ^ D3[var_6 & 0xff] ^
              D0[var_5 >> 0x18];
      block[3] = var_5;
      block[1] = var_3;
      *block = var_1;
      var_2 = pwVar10;
    } while (var_9 < ctx->Nr + -1);
  }
  var_7 = var_1 ^ *var_2;
  *block = var_7;
  var_3 = var_2[1] ^ var_3;
  block[1] = var_3;
  var_4 = var_4 ^ var_2[2];
  block[2] = var_4;
  var_5 = var_5 ^ var_2[3];
  var_8 = (type_4)Sboxinv[var_7 >> 0x18] << 0x18 | (type_4)Sboxinv[var_3 & 0xff] |
          (type_4)Sboxinv[var_5 >> 0x10 & 0xff] << 0x10 | (type_4)Sboxinv[var_4 >> 8 & 0xff] << 8;
  var_6 = (type_4)Sboxinv[var_3 >> 0x18] << 0x18 | (type_4)Sboxinv[var_4 & 0xff] |
          (type_4)Sboxinv[var_7 >> 0x10 & 0xff] << 0x10 | (type_4)Sboxinv[var_5 >> 8 & 0xff] << 8;
  bVar1 = Sboxinv[var_7 & 0xff];
  var_7 = (type_4)Sboxinv[var_4 >> 0x18] << 0x18 | (type_4)Sboxinv[var_5 & 0xff] |
          (type_4)Sboxinv[var_3 >> 0x10 & 0xff] << 0x10 | (type_4)Sboxinv[var_7 >> 8 & 0xff] << 8;
  bVar2 = Sboxinv[var_5 >> 0x18];
  bVar3 = Sboxinv[var_4 >> 0x10 & 0xff];
  bVar4 = Sboxinv[var_3 >> 8 & 0xff];
  block[2] = var_7;
  var_5 = (type_4)bVar4 << 8 | (type_4)bVar2 << 0x18 | (type_4)bVar1 | (type_4)bVar3 << 0x10;
  *block = var_8;
  block[1] = var_6;
  block[3] = var_5;
  *block = var_8 ^ var_2[4];
  block[1] = var_2[5] ^ var_6;
  block[2] = var_7 ^ var_2[6];
  block[3] = var_5 ^ var_2[7];
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(int param_1,uint *param_2)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  uint local_28;
  uint local_24;
  int local_20;
  uint *local_1c;
  
  local_24 = param_2[1];
  uVar9 = param_2[3];
  local_28 = *param_2;
  uVar6 = param_2[2];
  local_1c = (uint *)(param_1 + 0x1e0);
  if (1 < *(int *)(param_1 + 0x3ec)) {
    local_20 = 0;
    do {
      uVar7 = local_28 ^ *local_1c;
      puVar10 = local_1c + 4;
      *param_2 = uVar7;
      uVar8 = local_24 ^ local_1c[1];
      param_2[1] = uVar8;
      uVar5 = uVar6 ^ local_1c[2];
      param_2[2] = uVar5;
      uVar9 = uVar9 ^ local_1c[3];
      local_28 = *(uint *)(&DAT_000e63c0 + (uVar7 >> 0x18) * 4) ^
                 *(uint *)(&DAT_000e57c0 + (uVar8 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5bc0 + (uVar5 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5fc0 + (uVar9 >> 0x10 & 0xff) * 4);
      local_24 = *(uint *)(&DAT_000e63c0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_000e57c0 + (uVar5 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5fc0 + (uVar7 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_000e5bc0 + (uVar9 >> 8 & 0xff) * 4);
      local_20 = local_20 + 1;
      uVar6 = *(uint *)(&DAT_000e5fc0 + (uVar8 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_000e5bc0 + (uVar7 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_000e63c0 + (uVar5 >> 0x18) * 4) ^
              *(uint *)(&DAT_000e57c0 + (uVar9 & 0xff) * 4);
      param_2[2] = uVar6;
      uVar9 = *(uint *)(&DAT_000e5fc0 + (uVar5 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_000e5bc0 + (uVar8 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_000e57c0 + (uVar7 & 0xff) * 4) ^
              *(uint *)(&DAT_000e63c0 + (uVar9 >> 0x18) * 4);
      param_2[3] = uVar9;
      param_2[1] = local_24;
      *param_2 = local_28;
      local_1c = puVar10;
    } while (local_20 < *(int *)(param_1 + 0x3ec) + -1);
  }
  local_28 = local_28 ^ *local_1c;
  *param_2 = local_28;
  local_24 = local_1c[1] ^ local_24;
  param_2[1] = local_24;
  uVar6 = uVar6 ^ local_1c[2];
  param_2[2] = uVar6;
  uVar9 = uVar9 ^ local_1c[3];
  uVar5 = (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[local_24 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[uVar6 >> 8 & 0xff] << 8;
  uVar7 = (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[uVar6 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[local_28 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[uVar9 >> 8 & 0xff] << 8;
  bVar1 = (&DAT_000e77c0)[local_28 & 0xff];
  uVar8 = (uint)(byte)(&DAT_000e77c0)[uVar6 >> 0x18] << 0x18 |
          (uint)(byte)(&DAT_000e77c0)[uVar9 & 0xff] |
          (uint)(byte)(&DAT_000e77c0)[local_24 >> 0x10 & 0xff] << 0x10 |
          (uint)(byte)(&DAT_000e77c0)[local_28 >> 8 & 0xff] << 8;
  bVar2 = (&DAT_000e77c0)[uVar9 >> 0x18];
  bVar3 = (&DAT_000e77c0)[uVar6 >> 0x10 & 0xff];
  bVar4 = (&DAT_000e77c0)[local_24 >> 8 & 0xff];
  param_2[2] = uVar8;
  uVar9 = (uint)bVar4 << 8 | (uint)bVar2 << 0x18 | (uint)bVar1 | (uint)bVar3 << 0x10;
  *param_2 = uVar5;
  param_2[1] = uVar7;
  param_2[3] = uVar9;
  *param_2 = uVar5 ^ local_1c[4];
  param_2[1] = local_1c[5] ^ uVar7;
  param_2[2] = uVar8 ^ local_1c[6];
  param_2[3] = uVar9 ^ local_1c[7];
  return;
}

