
void _poly1305_block(poly1305_state *st,uchar *in,ulong inlen)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  ulong uVar4;
  ulong32 uVar5;
  ulong uVar6;
  ulong uVar7;
  ulong uVar8;
  uint uVar9;
  ulong uVar10;
  ulong32 uVar11;
  ulong uVar12;
  ulong uVar13;
  uint uVar14;
  ulong uVar15;
  ulong uVar16;
  ulong32 uVar17;
  ulong uVar18;
  ulong uVar19;
  ulong uVar20;
  ulong uVar21;
  ulong uVar22;
  uint local_68;
  
  local_68 = (uint)(st->final == 0) << 0x18;
  uVar2 = st->r[3];
  uVar11 = st->h[0];
  uVar5 = st->h[1];
  uVar17 = st->h[2];
  uVar9 = st->h[3];
  uVar3 = st->h[4];
  if (0xf < inlen) {
    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);
    uVar7 = (ulong)st->r[0];
    uVar19 = (ulong)(st->r[4] * 5);
    uVar20 = (ulong)(st->r[2] * 5);
    uVar21 = (ulong)(uVar2 * 5);
    uVar8 = (ulong)st->r[1];
    uVar22 = (ulong)st->r[2];
    do {
      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);
      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);
      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);
      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);
      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);
      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +
              (st->r[1] * 5) * uVar12;
      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12
               + (uVar4 >> 0x1a & 0xffffffff);
      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12
               + (uVar18 >> 0x1a & 0xffffffff);
      uVar17 = (uint)uVar16 & 0x3ffffff;
      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +
               (uVar16 >> 0x1a & 0xffffffff);
      uVar9 = (uint)uVar16 & 0x3ffffff;
      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22
               + (uVar16 >> 0x1a & 0xffffffff);
      uVar3 = (uint)uVar13 & 0x3ffffff;
      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;
      uVar11 = uVar14 & 0x3ffffff;
      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);
      in = (uchar *)((long)in + 0x10);
    } while (puVar1 != (uint *)in);
  }
  st->h[0] = uVar11;
  st->h[1] = uVar5;
  st->h[2] = uVar17;
  st->h[3] = uVar9;
  st->h[4] = uVar3;
  return;
}



void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  ulong uVar7;
  uint uVar8;
  ulong uVar9;
  uint uVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  ulong uVar14;
  ulong uVar15;
  uint uVar16;
  ulong uVar17;
  ulong uVar18;
  ulong uVar19;
  ulong uVar20;
  ulong uVar21;
  uint local_68;
  
  local_68 = (uint)(param_1[0x14] == 0) << 0x18;
  uVar2 = param_1[3];
  uVar10 = param_1[5];
  uVar13 = param_1[6];
  uVar16 = param_1[7];
  uVar8 = param_1[8];
  uVar3 = param_1[9];
  if (0xf < param_3) {
    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);
    uVar6 = (ulong)*param_1;
    uVar18 = (ulong)(param_1[4] * 5);
    uVar19 = (ulong)(param_1[2] * 5);
    uVar20 = (ulong)(uVar2 * 5);
    uVar7 = (ulong)param_1[1];
    uVar21 = (ulong)param_1[2];
    do {
      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);
      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);
      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);
      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);
      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);
      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +
              (param_1[1] * 5) * uVar11;
      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +
               (uVar4 >> 0x1a & 0xffffffff);
      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +
               (uVar17 >> 0x1a & 0xffffffff);
      uVar16 = (uint)uVar15 & 0x3ffffff;
      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +
               (uVar15 >> 0x1a & 0xffffffff);
      uVar8 = (uint)uVar15 & 0x3ffffff;
      uVar12 = uVar11 * uVar6 +
               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +
               (uVar15 >> 0x1a & 0xffffffff);
      uVar3 = (uint)uVar12 & 0x3ffffff;
      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;
      uVar10 = uVar13 & 0x3ffffff;
      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);
      param_2 = param_2 + 4;
    } while (puVar1 != param_2);
  }
  param_1[5] = uVar10;
  param_1[6] = uVar13;
  param_1[7] = uVar16;
  param_1[8] = uVar8;
  param_1[9] = uVar3;
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV qword ptr [RSP + -0x8],RDI
CMP dword ptr [RDI + 0x50],0x0
SETZ AL
MOVZX ECX,AL
SHL RCX,0x18
MOV qword ptr [RSP + -0x38],RCX
MOV RAX,RDI
MOV EBX,dword ptr [RDI]
MOV EBP,dword ptr [RDI + 0x4]
MOV R15D,dword ptr [RDI + 0x8]
MOV R10D,dword ptr [RDI + 0xc]
MOV R9D,dword ptr [RDI + 0x10]
LEA EDI,[RBP + RBP*0x4]
MOV dword ptr [RSP + -0x40],EDI
LEA R13D,[R15 + R15*0x4]
LEA R14D,[R10 + R10*0x4]
LEA R12D,[R9 + R9*0x4]
MOV R8D,dword ptr [RAX + 0x14]
MOV ECX,dword ptr [RAX + 0x18]
MOV R11D,dword ptr [RAX + 0x1c]
MOV EDI,dword ptr [RAX + 0x20]
MOV EAX,dword ptr [RAX + 0x24]
CMP RDX,0xf
JBE 0x001600ad
SUB RDX,0x10
AND RDX,-0x10
LEA RDX,[RSI + RDX*0x1 + 0x10]
MOV qword ptr [RSP + -0x20],RDX
MOV EBX,EBX
MOV R12D,R12D
MOV R13D,R13D
MOV qword ptr [RSP + -0x30],R13
MOV R14D,R14D
MOV qword ptr [RSP + -0x28],R14
MOV EDX,dword ptr [RSP + -0x40]
MOV qword ptr [RSP + -0x18],RDX
MOV EBP,EBP
MOV R15D,R15D
MOV R10D,R10D
MOV qword ptr [RSP + -0x40],R10
MOV R9D,R9D
MOV qword ptr [RSP + -0x10],R9
MOV R13D,dword ptr [RSI]
AND R13D,0x3ffffff
LEA R9D,[R13 + R8*0x1]
MOV R8D,dword ptr [RSI + 0x3]
SHR R8D,0x2
AND R8D,0x3ffffff
LEA ECX,[R8 + RCX*0x1]
MOV R14D,dword ptr [RSI + 0x9]
SHR R14D,0x6
LEA EDI,[R14 + RDI*0x1]
MOV EDX,dword ptr [RSI + 0x6]
SHR EDX,0x4
AND EDX,0x3ffffff
LEA EDX,[RDX + R11*0x1]
MOV R11D,dword ptr [RSI + 0xc]
SHR R11D,0x8
OR R11D,dword ptr [RSP + -0x38]
LEA R8D,[R11 + RAX*0x1]
MOV RAX,R9
IMUL RAX,RBX
MOV R13,qword ptr [RSP + -0x30]
MOV R10,R13
IMUL R10,RDI
ADD R10,RAX
MOV R14,RCX
IMUL R14,R12
ADD R10,R14
MOV R14,qword ptr [RSP + -0x28]
MOV RAX,R14
IMUL RAX,RDX
ADD RAX,R10
MOV R11,qword ptr [RSP + -0x18]
IMUL R11,R8
ADD RAX,R11
MOV R11,R9
IMUL R11,RBP
MOV R10,R14
IMUL R10,RDI
ADD R10,R11
MOV R11,RBX
IMUL R11,RCX
ADD R10,R11
MOV R11,R12
IMUL R11,RDX
ADD R11,R10
IMUL R13,R8
ADD R11,R13
MOV R10,R9
IMUL R10,R15
MOV R13,R12
IMUL R13,RDI
ADD R13,R10
MOV R10,RCX
IMUL R10,RBP
ADD R13,R10
MOV R10,RBX
IMUL R10,RDX
ADD R10,R13
IMUL R14,R8
ADD R10,R14
MOV R14,qword ptr [RSP + -0x40]
IMUL R14,R9
MOV R13,RBX
IMUL R13,RDI
ADD R13,R14
MOV R14,RCX
IMUL R14,R15
ADD R13,R14
MOV R14,RDX
IMUL R14,RBP
ADD R14,R13
MOV R13,R12
IMUL R13,R8
ADD R13,R14
IMUL R9,qword ptr [RSP + -0x10]
IMUL RDI,RBP
ADD R9,RDI
IMUL RCX,qword ptr [RSP + -0x40]
ADD R9,RCX
IMUL RDX,R15
ADD R9,RDX
IMUL R8,RBX
ADD R8,R9
MOV R9D,EAX
AND R9D,0x3ffffff
SHR RAX,0x1a
MOV ECX,EAX
ADD R11,RCX
MOV ECX,R11D
AND ECX,0x3ffffff
SHR R11,0x1a
MOV EDI,R11D
ADD R10,RDI
MOV R11D,R10D
AND R11D,0x3ffffff
SHR R10,0x1a
MOV EDX,R10D
ADD R13,RDX
MOV EDI,R13D
AND EDI,0x3ffffff
SHR R13,0x1a
MOV EAX,R13D
ADD R8,RAX
MOV EAX,R8D
AND EAX,0x3ffffff
SHR R8,0x1a
LEA R8D,[R8 + R8*0x4]
ADD R9D,R8D
MOV R8D,R9D
AND R8D,0x3ffffff
SHR R9D,0x1a
ADD ECX,R9D
ADD RSI,0x10
CMP qword ptr [RSP + -0x20],RSI
JNZ 0x0015fef6
MOV RSI,qword ptr [RSP + -0x8]
MOV dword ptr [RSI + 0x14],R8D
MOV dword ptr [RSI + 0x18],ECX
MOV dword ptr [RSI + 0x1c],R11D
MOV dword ptr [RSI + 0x20],EDI
MOV dword ptr [RSI + 0x24],EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}\n\n" (function_definition "void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" primitive_type (function_declarator "FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,ulong param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (expression_statement "local_68 = (uint)(param_1[0x14] == 0) << 0x18;" (assignment_expression "local_68 = (uint)(param_1[0x14] == 0) << 0x18" identifier = (binary_expression "(uint)(param_1[0x14] == 0) << 0x18" (call_expression "(uint)(param_1[0x14] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x14] == 0)" ( (binary_expression "param_1[0x14] == 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) == number_literal) ))) << number_literal)) ;) (expression_statement "uVar2 = param_1[3];" (assignment_expression "uVar2 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[5];" (assignment_expression "uVar10 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = param_1[6];" (assignment_expression "uVar13 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = param_1[7];" (assignment_expression "uVar16 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = param_1[8];" (assignment_expression "uVar8 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = param_1[9];" (assignment_expression "uVar3 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" if (parenthesized_expression "(0xf < param_3)" ( (binary_expression "0xf < param_3" number_literal < identifier) )) (compound_statement "{\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" { (expression_statement "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);" (assignment_expression "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" identifier = (cast_expression "(uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10" (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_3 - 0x10 & 0xfffffffffffffff0)" ( (binary_expression "param_3 - 0x10 & 0xfffffffffffffff0" (binary_expression "param_3 - 0x10" identifier - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "uVar6 = (ulong)*param_1;" (assignment_expression "uVar6 = (ulong)*param_1" identifier = (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "uVar18 = (ulong)(param_1[4] * 5);" (assignment_expression "uVar18 = (ulong)(param_1[4] * 5)" identifier = (call_expression "(ulong)(param_1[4] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[4] * 5)" ( (binary_expression "param_1[4] * 5" (subscript_expression "param_1[4]" identifier [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar19 = (ulong)(param_1[2] * 5);" (assignment_expression "uVar19 = (ulong)(param_1[2] * 5)" identifier = (call_expression "(ulong)(param_1[2] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] * 5)" ( (binary_expression "param_1[2] * 5" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar20 = (ulong)(uVar2 * 5);" (assignment_expression "uVar20 = (ulong)(uVar2 * 5)" identifier = (call_expression "(ulong)(uVar2 * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 * 5)" ( (binary_expression "uVar2 * 5" identifier * number_literal) )))) ;) (expression_statement "uVar7 = (ulong)param_1[1];" (assignment_expression "uVar7 = (ulong)param_1[1]" identifier = (cast_expression "(ulong)param_1[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar21 = (ulong)param_1[2];" (assignment_expression "uVar21 = (ulong)param_1[2]" identifier = (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);" do (compound_statement "{\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    }" { (expression_statement "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);" (assignment_expression "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10)" identifier = (call_expression "(ulong)((*param_2 & 0x3ffffff) + uVar10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*param_2 & 0x3ffffff) + uVar10)" ( (binary_expression "(*param_2 & 0x3ffffff) + uVar10" (parenthesized_expression "(*param_2 & 0x3ffffff)" ( (binary_expression "*param_2 & 0x3ffffff" (pointer_expression "*param_2" * identifier) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);" (assignment_expression "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" ( (binary_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13" (parenthesized_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 3) >> 2" (pointer_expression "*(uint *)((long)param_2 + 3)" * (cast_expression "(uint *)((long)param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 3)" ( (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);" (assignment_expression "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" ( (binary_expression "(*(uint *)((long)param_2 + 9) >> 6) + uVar8" (parenthesized_expression "(*(uint *)((long)param_2 + 9) >> 6)" ( (binary_expression "*(uint *)((long)param_2 + 9) >> 6" (pointer_expression "*(uint *)((long)param_2 + 9)" * (cast_expression "(uint *)((long)param_2 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 9)" ( (binary_expression "(long)param_2 + 9" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) )) + identifier) )))) ;) (expression_statement "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);" (assignment_expression "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" ( (binary_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16" (parenthesized_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 6) >> 4" (pointer_expression "*(uint *)((long)param_2 + 6)" * (cast_expression "(uint *)((long)param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 6)" ( (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);" (assignment_expression "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3)" identifier = (call_expression "(ulong)((param_2[3] >> 8 | local_68) + uVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((param_2[3] >> 8 | local_68) + uVar3)" ( (binary_expression "(param_2[3] >> 8 | local_68) + uVar3" (parenthesized_expression "(param_2[3] >> 8 | local_68)" ( (binary_expression "param_2[3] >> 8 | local_68" (binary_expression "param_2[3] >> 8" (subscript_expression "param_2[3]" identifier [ number_literal ]) >> number_literal) | identifier) )) + identifier) )))) ;) (expression_statement "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;" (assignment_expression "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" identifier = (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9" (binary_expression "uVar20 * uVar5" identifier * identifier) + (binary_expression "uVar19 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar6" identifier * identifier)) + (binary_expression "uVar12 * uVar18" identifier * identifier)) + (binary_expression "(param_1[1] * 5) * uVar11" (parenthesized_expression "(param_1[1] * 5)" ( (binary_expression "param_1[1] * 5" (subscript_expression "param_1[1]" identifier [ number_literal ]) * number_literal) )) * identifier))) ;) (expression_statement "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);" (assignment_expression "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9" (binary_expression "uVar18 * uVar5" identifier * identifier) + (binary_expression "uVar20 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar7" identifier * identifier)) + (binary_expression "uVar6 * uVar12" identifier * identifier)) + (binary_expression "uVar19 * uVar11" identifier * identifier)) + (parenthesized_expression "(uVar4 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar4 >> 0x1a & 0xffffffff" (binary_expression "uVar4 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9" (binary_expression "uVar6 * uVar5" identifier * identifier) + (binary_expression "uVar18 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar21" identifier * identifier)) + (binary_expression "uVar12 * uVar7" identifier * identifier)) + (binary_expression "uVar20 * uVar11" identifier * identifier)) + (parenthesized_expression "(uVar17 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar17 >> 0x1a & 0xffffffff" (binary_expression "uVar17 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar16 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar16 = (uint)uVar15 & 0x3ffffff" identifier = (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7" (binary_expression "uVar18 * uVar11" identifier * identifier) + (binary_expression "uVar5 * uVar7" identifier * identifier)) + (binary_expression "uVar6 * uVar9" identifier * identifier)) + (binary_expression "uVar2 * uVar14" identifier * identifier)) + (binary_expression "uVar12 * uVar21" identifier * identifier)) + (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar8 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar8 = (uint)uVar15 & 0x3ffffff" identifier = (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4]" (binary_expression "uVar11 * uVar6" identifier * identifier) + (binary_expression "uVar14 * param_1[4]" identifier * (subscript_expression "param_1[4]" identifier [ number_literal ]))) + (binary_expression "uVar9 * uVar7" identifier * identifier)) + (binary_expression "uVar12 * uVar2" identifier * identifier)) + (binary_expression "uVar5 * uVar21" identifier * identifier)) + (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar3 = (uint)uVar12 & 0x3ffffff;" (assignment_expression "uVar3 = (uint)uVar12 & 0x3ffffff" identifier = (binary_expression "(uint)uVar12 & 0x3ffffff" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;" (assignment_expression "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" identifier = (binary_expression "((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" (parenthesized_expression "((uint)uVar4 & 0x3ffffff)" ( (binary_expression "(uint)uVar4 & 0x3ffffff" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (binary_expression "(int)(uVar12 >> 0x1a) * 5" (cast_expression "(int)(uVar12 >> 0x1a)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar12 >> 0x1a)" ( (binary_expression "uVar12 >> 0x1a" identifier >> number_literal) ))) * number_literal))) ;) (expression_statement "uVar10 = uVar13 & 0x3ffffff;" (assignment_expression "uVar10 = uVar13 & 0x3ffffff" identifier = (binary_expression "uVar13 & 0x3ffffff" identifier & number_literal)) ;) (expression_statement "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);" (assignment_expression "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" identifier = (binary_expression "((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" (parenthesized_expression "((uint)uVar17 & 0x3ffffff)" ( (binary_expression "(uint)uVar17 & 0x3ffffff" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (parenthesized_expression "(uVar13 >> 0x1a)" ( (binary_expression "uVar13 >> 0x1a" identifier >> number_literal) )))) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar1 != param_2)" ( (binary_expression "puVar1 != param_2" identifier != identifier) )) ;) })) (expression_statement "param_1[5] = uVar10;" (assignment_expression "param_1[5] = uVar10" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = uVar13;" (assignment_expression "param_1[6] = uVar13" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = uVar16;" (assignment_expression "param_1[7] = uVar16" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = uVar8;" (assignment_expression "param_1[8] = uVar8" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = uVar3;" (assignment_expression "param_1[9] = uVar3" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void _poly1305_block(poly1305_state *st,uchar *in,ulong inlen)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong32 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong32 uVar11;\n  ulong uVar12;\n  ulong uVar13;\n  uint uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong32 uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  uint local_68;\n  \n  local_68 = (uint)(st->final == 0) << 0x18;\n  uVar2 = st->r[3];\n  uVar11 = st->h[0];\n  uVar5 = st->h[1];\n  uVar17 = st->h[2];\n  uVar9 = st->h[3];\n  uVar3 = st->h[4];\n  if (0xf < inlen) {\n    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar7 = (ulong)st->r[0];\n    uVar19 = (ulong)(st->r[4] * 5);\n    uVar20 = (ulong)(st->r[2] * 5);\n    uVar21 = (ulong)(uVar2 * 5);\n    uVar8 = (ulong)st->r[1];\n    uVar22 = (ulong)st->r[2];\n    do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);\n  }\n  st->h[0] = uVar11;\n  st->h[1] = uVar5;\n  st->h[2] = uVar17;\n  st->h[3] = uVar9;\n  st->h[4] = uVar3;\n  return;\n}\n\n" (function_definition "void _poly1305_block(poly1305_state *st,uchar *in,ulong inlen)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong32 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong32 uVar11;\n  ulong uVar12;\n  ulong uVar13;\n  uint uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong32 uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  uint local_68;\n  \n  local_68 = (uint)(st->final == 0) << 0x18;\n  uVar2 = st->r[3];\n  uVar11 = st->h[0];\n  uVar5 = st->h[1];\n  uVar17 = st->h[2];\n  uVar9 = st->h[3];\n  uVar3 = st->h[4];\n  if (0xf < inlen) {\n    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar7 = (ulong)st->r[0];\n    uVar19 = (ulong)(st->r[4] * 5);\n    uVar20 = (ulong)(st->r[2] * 5);\n    uVar21 = (ulong)(uVar2 * 5);\n    uVar8 = (ulong)st->r[1];\n    uVar22 = (ulong)st->r[2];\n    do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);\n  }\n  st->h[0] = uVar11;\n  st->h[1] = uVar5;\n  st->h[2] = uVar17;\n  st->h[3] = uVar9;\n  st->h[4] = uVar3;\n  return;\n}" primitive_type (function_declarator "_poly1305_block(poly1305_state *st,uchar *in,ulong inlen)" identifier (parameter_list "(poly1305_state *st,uchar *in,ulong inlen)" ( (parameter_declaration "poly1305_state *st" type_identifier (pointer_declarator "*st" * identifier)) , (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong32 uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  ulong uVar10;\n  ulong32 uVar11;\n  ulong uVar12;\n  ulong uVar13;\n  uint uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong32 uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  ulong uVar22;\n  uint local_68;\n  \n  local_68 = (uint)(st->final == 0) << 0x18;\n  uVar2 = st->r[3];\n  uVar11 = st->h[0];\n  uVar5 = st->h[1];\n  uVar17 = st->h[2];\n  uVar9 = st->h[3];\n  uVar3 = st->h[4];\n  if (0xf < inlen) {\n    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar7 = (ulong)st->r[0];\n    uVar19 = (ulong)(st->r[4] * 5);\n    uVar20 = (ulong)(st->r[2] * 5);\n    uVar21 = (ulong)(uVar2 * 5);\n    uVar8 = (ulong)st->r[1];\n    uVar22 = (ulong)st->r[2];\n    do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);\n  }\n  st->h[0] = uVar11;\n  st->h[1] = uVar5;\n  st->h[2] = uVar17;\n  st->h[3] = uVar9;\n  st->h[4] = uVar3;\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong32 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong32 uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong32 uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (expression_statement "local_68 = (uint)(st->final == 0) << 0x18;" (assignment_expression "local_68 = (uint)(st->final == 0) << 0x18" identifier = (binary_expression "(uint)(st->final == 0) << 0x18" (call_expression "(uint)(st->final == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(st->final == 0)" ( (binary_expression "st->final == 0" (field_expression "st->final" identifier -> field_identifier) == number_literal) ))) << number_literal)) ;) (expression_statement "uVar2 = st->r[3];" (assignment_expression "uVar2 = st->r[3]" identifier = (subscript_expression "st->r[3]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar11 = st->h[0];" (assignment_expression "uVar11 = st->h[0]" identifier = (subscript_expression "st->h[0]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar5 = st->h[1];" (assignment_expression "uVar5 = st->h[1]" identifier = (subscript_expression "st->h[1]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar17 = st->h[2];" (assignment_expression "uVar17 = st->h[2]" identifier = (subscript_expression "st->h[2]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar9 = st->h[3];" (assignment_expression "uVar9 = st->h[3]" identifier = (subscript_expression "st->h[3]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar3 = st->h[4];" (assignment_expression "uVar3 = st->h[4]" identifier = (subscript_expression "st->h[4]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ])) ;) (if_statement "if (0xf < inlen) {\n    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar7 = (ulong)st->r[0];\n    uVar19 = (ulong)(st->r[4] * 5);\n    uVar20 = (ulong)(st->r[2] * 5);\n    uVar21 = (ulong)(uVar2 * 5);\n    uVar8 = (ulong)st->r[1];\n    uVar22 = (ulong)st->r[2];\n    do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);\n  }" if (parenthesized_expression "(0xf < inlen)" ( (binary_expression "0xf < inlen" number_literal < identifier) )) (compound_statement "{\n    puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar7 = (ulong)st->r[0];\n    uVar19 = (ulong)(st->r[4] * 5);\n    uVar20 = (ulong)(st->r[2] * 5);\n    uVar21 = (ulong)(uVar2 * 5);\n    uVar8 = (ulong)st->r[1];\n    uVar22 = (ulong)st->r[2];\n    do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);\n  }" { (expression_statement "puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10);" (assignment_expression "puVar1 = (uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10)" identifier = (cast_expression "(uint *)(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (binary_expression "in + (inlen - 0x10 & 0xfffffffffffffff0) + 0x10" (binary_expression "in + (inlen - 0x10 & 0xfffffffffffffff0)" identifier + (parenthesized_expression "(inlen - 0x10 & 0xfffffffffffffff0)" ( (binary_expression "inlen - 0x10 & 0xfffffffffffffff0" (binary_expression "inlen - 0x10" identifier - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "uVar7 = (ulong)st->r[0];" (assignment_expression "uVar7 = (ulong)st->r[0]" identifier = (cast_expression "(ulong)st->r[0]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "st->r[0]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "uVar19 = (ulong)(st->r[4] * 5);" (assignment_expression "uVar19 = (ulong)(st->r[4] * 5)" identifier = (call_expression "(ulong)(st->r[4] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(st->r[4] * 5)" ( (binary_expression "st->r[4] * 5" (subscript_expression "st->r[4]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar20 = (ulong)(st->r[2] * 5);" (assignment_expression "uVar20 = (ulong)(st->r[2] * 5)" identifier = (call_expression "(ulong)(st->r[2] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(st->r[2] * 5)" ( (binary_expression "st->r[2] * 5" (subscript_expression "st->r[2]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar21 = (ulong)(uVar2 * 5);" (assignment_expression "uVar21 = (ulong)(uVar2 * 5)" identifier = (call_expression "(ulong)(uVar2 * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 * 5)" ( (binary_expression "uVar2 * 5" identifier * number_literal) )))) ;) (expression_statement "uVar8 = (ulong)st->r[1];" (assignment_expression "uVar8 = (ulong)st->r[1]" identifier = (cast_expression "(ulong)st->r[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "st->r[1]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "uVar22 = (ulong)st->r[2];" (assignment_expression "uVar22 = (ulong)st->r[2]" identifier = (cast_expression "(ulong)st->r[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "st->r[2]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]))) ;) (do_statement "do {\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    } while (puVar1 != (uint *)in);" do (compound_statement "{\n      uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);\n      uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);\n      uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);\n      uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);\n      uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);\n      uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;\n      uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);\n      uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);\n      uVar17 = (uint)uVar16 & 0x3ffffff;\n      uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);\n      uVar9 = (uint)uVar16 & 0x3ffffff;\n      uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar13 & 0x3ffffff;\n      uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;\n      uVar11 = uVar14 & 0x3ffffff;\n      uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);\n      in = (uchar *)((long)in + 0x10);\n    }" { (expression_statement "uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11);" (assignment_expression "uVar15 = (ulong)((*(uint *)in & 0x3ffffff) + uVar11)" identifier = (call_expression "(ulong)((*(uint *)in & 0x3ffffff) + uVar11)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)in & 0x3ffffff) + uVar11)" ( (binary_expression "(*(uint *)in & 0x3ffffff) + uVar11" (parenthesized_expression "(*(uint *)in & 0x3ffffff)" ( (binary_expression "*(uint *)in & 0x3ffffff" (pointer_expression "*(uint *)in" * (cast_expression "(uint *)in" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5);" (assignment_expression "uVar13 = (ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5)" identifier = (call_expression "(ulong)((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5)" ( (binary_expression "(*(uint *)((long)in + 3) >> 2 & 0x3ffffff) + uVar5" (parenthesized_expression "(*(uint *)((long)in + 3) >> 2 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)in + 3) >> 2 & 0x3ffffff" (binary_expression "*(uint *)((long)in + 3) >> 2" (pointer_expression "*(uint *)((long)in + 3)" * (cast_expression "(uint *)((long)in + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 3)" ( (binary_expression "(long)in + 3" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9);" (assignment_expression "uVar10 = (ulong)((*(uint *)((long)in + 9) >> 6) + uVar9)" identifier = (call_expression "(ulong)((*(uint *)((long)in + 9) >> 6) + uVar9)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)in + 9) >> 6) + uVar9)" ( (binary_expression "(*(uint *)((long)in + 9) >> 6) + uVar9" (parenthesized_expression "(*(uint *)((long)in + 9) >> 6)" ( (binary_expression "*(uint *)((long)in + 9) >> 6" (pointer_expression "*(uint *)((long)in + 9)" * (cast_expression "(uint *)((long)in + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 9)" ( (binary_expression "(long)in + 9" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) )) + identifier) )))) ;) (expression_statement "uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17);" (assignment_expression "uVar6 = (ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17)" identifier = (call_expression "(ulong)((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17)" ( (binary_expression "(*(uint *)((long)in + 6) >> 4 & 0x3ffffff) + uVar17" (parenthesized_expression "(*(uint *)((long)in + 6) >> 4 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)in + 6) >> 4 & 0x3ffffff" (binary_expression "*(uint *)((long)in + 6) >> 4" (pointer_expression "*(uint *)((long)in + 6)" * (cast_expression "(uint *)((long)in + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 6)" ( (binary_expression "(long)in + 6" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3);" (assignment_expression "uVar12 = (ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3)" identifier = (call_expression "(ulong)((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3)" ( (binary_expression "(*(uint *)((long)in + 0xc) >> 8 | local_68) + uVar3" (parenthesized_expression "(*(uint *)((long)in + 0xc) >> 8 | local_68)" ( (binary_expression "*(uint *)((long)in + 0xc) >> 8 | local_68" (binary_expression "*(uint *)((long)in + 0xc) >> 8" (pointer_expression "*(uint *)((long)in + 0xc)" * (cast_expression "(uint *)((long)in + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 0xc)" ( (binary_expression "(long)in + 0xc" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) | identifier) )) + identifier) )))) ;) (expression_statement "uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12;" (assignment_expression "uVar4 = uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12" identifier = (binary_expression "uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19 +\n              (st->r[1] * 5) * uVar12" (binary_expression "uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7 + uVar13 * uVar19" (binary_expression "uVar21 * uVar6 + uVar20 * uVar10 + uVar15 * uVar7" (binary_expression "uVar21 * uVar6 + uVar20 * uVar10" (binary_expression "uVar21 * uVar6" identifier * identifier) + (binary_expression "uVar20 * uVar10" identifier * identifier)) + (binary_expression "uVar15 * uVar7" identifier * identifier)) + (binary_expression "uVar13 * uVar19" identifier * identifier)) + (binary_expression "(st->r[1] * 5) * uVar12" (parenthesized_expression "(st->r[1] * 5)" ( (binary_expression "st->r[1] * 5" (subscript_expression "st->r[1]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]) * number_literal) )) * identifier))) ;) (expression_statement "uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff);" (assignment_expression "uVar18 = uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12\n               + (uVar4 >> 0x1a & 0xffffffff)" (binary_expression "uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13 + uVar20 * uVar12" (binary_expression "uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8 + uVar7 * uVar13" (binary_expression "uVar19 * uVar6 + uVar21 * uVar10 + uVar15 * uVar8" (binary_expression "uVar19 * uVar6 + uVar21 * uVar10" (binary_expression "uVar19 * uVar6" identifier * identifier) + (binary_expression "uVar21 * uVar10" identifier * identifier)) + (binary_expression "uVar15 * uVar8" identifier * identifier)) + (binary_expression "uVar7 * uVar13" identifier * identifier)) + (binary_expression "uVar20 * uVar12" identifier * identifier)) + (parenthesized_expression "(uVar4 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar4 >> 0x1a & 0xffffffff" (binary_expression "uVar4 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff);" (assignment_expression "uVar16 = uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12\n               + (uVar18 >> 0x1a & 0xffffffff)" (binary_expression "uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8 + uVar21 * uVar12" (binary_expression "uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22 + uVar13 * uVar8" (binary_expression "uVar7 * uVar6 + uVar19 * uVar10 + uVar15 * uVar22" (binary_expression "uVar7 * uVar6 + uVar19 * uVar10" (binary_expression "uVar7 * uVar6" identifier * identifier) + (binary_expression "uVar19 * uVar10" identifier * identifier)) + (binary_expression "uVar15 * uVar22" identifier * identifier)) + (binary_expression "uVar13 * uVar8" identifier * identifier)) + (binary_expression "uVar21 * uVar12" identifier * identifier)) + (parenthesized_expression "(uVar18 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar18 >> 0x1a & 0xffffffff" (binary_expression "uVar18 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar17 = (uint)uVar16 & 0x3ffffff;" (assignment_expression "uVar17 = (uint)uVar16 & 0x3ffffff" identifier = (binary_expression "(uint)uVar16 & 0x3ffffff" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff);" (assignment_expression "uVar16 = uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22 +\n               (uVar16 >> 0x1a & 0xffffffff)" (binary_expression "uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15 + uVar13 * uVar22" (binary_expression "uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10 + uVar2 * uVar15" (binary_expression "uVar19 * uVar12 + uVar6 * uVar8 + uVar7 * uVar10" (binary_expression "uVar19 * uVar12 + uVar6 * uVar8" (binary_expression "uVar19 * uVar12" identifier * identifier) + (binary_expression "uVar6 * uVar8" identifier * identifier)) + (binary_expression "uVar7 * uVar10" identifier * identifier)) + (binary_expression "uVar2 * uVar15" identifier * identifier)) + (binary_expression "uVar13 * uVar22" identifier * identifier)) + (parenthesized_expression "(uVar16 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar16 >> 0x1a & 0xffffffff" (binary_expression "uVar16 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar9 = (uint)uVar16 & 0x3ffffff;" (assignment_expression "uVar9 = (uint)uVar16 & 0x3ffffff" identifier = (binary_expression "(uint)uVar16 & 0x3ffffff" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff);" (assignment_expression "uVar13 = uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22\n               + (uVar16 >> 0x1a & 0xffffffff)" (binary_expression "uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2 + uVar6 * uVar22" (binary_expression "uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8 + uVar13 * uVar2" (binary_expression "uVar12 * uVar7 + uVar15 * st->r[4] + uVar10 * uVar8" (binary_expression "uVar12 * uVar7 + uVar15 * st->r[4]" (binary_expression "uVar12 * uVar7" identifier * identifier) + (binary_expression "uVar15 * st->r[4]" identifier * (subscript_expression "st->r[4]" (field_expression "st->r" identifier -> field_identifier) [ number_literal ]))) + (binary_expression "uVar10 * uVar8" identifier * identifier)) + (binary_expression "uVar13 * uVar2" identifier * identifier)) + (binary_expression "uVar6 * uVar22" identifier * identifier)) + (parenthesized_expression "(uVar16 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar16 >> 0x1a & 0xffffffff" (binary_expression "uVar16 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar3 = (uint)uVar13 & 0x3ffffff;" (assignment_expression "uVar3 = (uint)uVar13 & 0x3ffffff" identifier = (binary_expression "(uint)uVar13 & 0x3ffffff" (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5;" (assignment_expression "uVar14 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5" identifier = (binary_expression "((uint)uVar4 & 0x3ffffff) + (int)(uVar13 >> 0x1a) * 5" (parenthesized_expression "((uint)uVar4 & 0x3ffffff)" ( (binary_expression "(uint)uVar4 & 0x3ffffff" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (binary_expression "(int)(uVar13 >> 0x1a) * 5" (cast_expression "(int)(uVar13 >> 0x1a)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar13 >> 0x1a)" ( (binary_expression "uVar13 >> 0x1a" identifier >> number_literal) ))) * number_literal))) ;) (expression_statement "uVar11 = uVar14 & 0x3ffffff;" (assignment_expression "uVar11 = uVar14 & 0x3ffffff" identifier = (binary_expression "uVar14 & 0x3ffffff" identifier & number_literal)) ;) (expression_statement "uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a);" (assignment_expression "uVar5 = ((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a)" identifier = (binary_expression "((uint)uVar18 & 0x3ffffff) + (uVar14 >> 0x1a)" (parenthesized_expression "((uint)uVar18 & 0x3ffffff)" ( (binary_expression "(uint)uVar18 & 0x3ffffff" (cast_expression "(uint)uVar18" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (parenthesized_expression "(uVar14 >> 0x1a)" ( (binary_expression "uVar14 >> 0x1a" identifier >> number_literal) )))) ;) (expression_statement "in = (uchar *)((long)in + 0x10);" (assignment_expression "in = (uchar *)((long)in + 0x10)" identifier = (cast_expression "(uchar *)((long)in + 0x10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)in + 0x10)" ( (binary_expression "(long)in + 0x10" (cast_expression "(long)in" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar1 != (uint *)in)" ( (binary_expression "puVar1 != (uint *)in" identifier != (cast_expression "(uint *)in" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) })) (expression_statement "st->h[0] = uVar11;" (assignment_expression "st->h[0] = uVar11" (subscript_expression "st->h[0]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "st->h[1] = uVar5;" (assignment_expression "st->h[1] = uVar5" (subscript_expression "st->h[1]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "st->h[2] = uVar17;" (assignment_expression "st->h[2] = uVar17" (subscript_expression "st->h[2]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "st->h[3] = uVar9;" (assignment_expression "st->h[3] = uVar9" (subscript_expression "st->h[3]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "st->h[4] = uVar3;" (assignment_expression "st->h[4] = uVar3" (subscript_expression "st->h[4]" (field_expression "st->h" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}\n\n" (function_definition "void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" primitive_type (function_declarator "FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,ulong param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (declaration "ulong uVar21;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (expression_statement "local_68 = (uint)(param_1[0x14] == 0) << 0x18;" (assignment_expression "local_68 = (uint)(param_1[0x14] == 0) << 0x18" identifier = (binary_expression "(uint)(param_1[0x14] == 0) << 0x18" (call_expression "(uint)(param_1[0x14] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[0x14] == 0)" ( (binary_expression "param_1[0x14] == 0" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) == number_literal) ))) << number_literal)) ;) (expression_statement "uVar2 = param_1[3];" (assignment_expression "uVar2 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[5];" (assignment_expression "uVar10 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = param_1[6];" (assignment_expression "uVar13 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = param_1[7];" (assignment_expression "uVar16 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = param_1[8];" (assignment_expression "uVar8 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = param_1[9];" (assignment_expression "uVar3 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (if_statement "if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" if (parenthesized_expression "(0xf < param_3)" ( (binary_expression "0xf < param_3" number_literal < identifier) )) (compound_statement "{\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" { (expression_statement "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);" (assignment_expression "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" identifier = (cast_expression "(uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" ( (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10" (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(param_3 - 0x10 & 0xfffffffffffffff0)" ( (binary_expression "param_3 - 0x10 & 0xfffffffffffffff0" (binary_expression "param_3 - 0x10" identifier - number_literal) & number_literal) ))) + number_literal) )))) ;) (expression_statement "uVar6 = (ulong)*param_1;" (assignment_expression "uVar6 = (ulong)*param_1" identifier = (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "uVar18 = (ulong)(param_1[4] * 5);" (assignment_expression "uVar18 = (ulong)(param_1[4] * 5)" identifier = (call_expression "(ulong)(param_1[4] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[4] * 5)" ( (binary_expression "param_1[4] * 5" (subscript_expression "param_1[4]" identifier [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar19 = (ulong)(param_1[2] * 5);" (assignment_expression "uVar19 = (ulong)(param_1[2] * 5)" identifier = (call_expression "(ulong)(param_1[2] * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] * 5)" ( (binary_expression "param_1[2] * 5" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal) )))) ;) (expression_statement "uVar20 = (ulong)(uVar2 * 5);" (assignment_expression "uVar20 = (ulong)(uVar2 * 5)" identifier = (call_expression "(ulong)(uVar2 * 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 * 5)" ( (binary_expression "uVar2 * 5" identifier * number_literal) )))) ;) (expression_statement "uVar7 = (ulong)param_1[1];" (assignment_expression "uVar7 = (ulong)param_1[1]" identifier = (cast_expression "(ulong)param_1[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar21 = (ulong)param_1[2];" (assignment_expression "uVar21 = (ulong)param_1[2]" identifier = (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);" do (compound_statement "{\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    }" { (expression_statement "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);" (assignment_expression "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10)" identifier = (call_expression "(ulong)((*param_2 & 0x3ffffff) + uVar10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*param_2 & 0x3ffffff) + uVar10)" ( (binary_expression "(*param_2 & 0x3ffffff) + uVar10" (parenthesized_expression "(*param_2 & 0x3ffffff)" ( (binary_expression "*param_2 & 0x3ffffff" (pointer_expression "*param_2" * identifier) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);" (assignment_expression "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" ( (binary_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13" (parenthesized_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 3) >> 2" (pointer_expression "*(uint *)((long)param_2 + 3)" * (cast_expression "(uint *)((long)param_2 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 3)" ( (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);" (assignment_expression "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" ( (binary_expression "(*(uint *)((long)param_2 + 9) >> 6) + uVar8" (parenthesized_expression "(*(uint *)((long)param_2 + 9) >> 6)" ( (binary_expression "*(uint *)((long)param_2 + 9) >> 6" (pointer_expression "*(uint *)((long)param_2 + 9)" * (cast_expression "(uint *)((long)param_2 + 9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 9)" ( (binary_expression "(long)param_2 + 9" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) )) + identifier) )))) ;) (expression_statement "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);" (assignment_expression "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" identifier = (call_expression "(ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" ( (binary_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16" (parenthesized_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff)" ( (binary_expression "*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 6) >> 4" (pointer_expression "*(uint *)((long)param_2 + 6)" * (cast_expression "(uint *)((long)param_2 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 6)" ( (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal) )) + identifier) )))) ;) (expression_statement "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);" (assignment_expression "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3)" identifier = (call_expression "(ulong)((param_2[3] >> 8 | local_68) + uVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((param_2[3] >> 8 | local_68) + uVar3)" ( (binary_expression "(param_2[3] >> 8 | local_68) + uVar3" (parenthesized_expression "(param_2[3] >> 8 | local_68)" ( (binary_expression "param_2[3] >> 8 | local_68" (binary_expression "param_2[3] >> 8" (subscript_expression "param_2[3]" identifier [ number_literal ]) >> number_literal) | identifier) )) + identifier) )))) ;) (expression_statement "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;" (assignment_expression "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" identifier = (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9" (binary_expression "uVar20 * uVar5" identifier * identifier) + (binary_expression "uVar19 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar6" identifier * identifier)) + (binary_expression "uVar12 * uVar18" identifier * identifier)) + (binary_expression "(param_1[1] * 5) * uVar11" (parenthesized_expression "(param_1[1] * 5)" ( (binary_expression "param_1[1] * 5" (subscript_expression "param_1[1]" identifier [ number_literal ]) * number_literal) )) * identifier))) ;) (expression_statement "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);" (assignment_expression "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9" (binary_expression "uVar18 * uVar5" identifier * identifier) + (binary_expression "uVar20 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar7" identifier * identifier)) + (binary_expression "uVar6 * uVar12" identifier * identifier)) + (binary_expression "uVar19 * uVar11" identifier * identifier)) + (parenthesized_expression "(uVar4 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar4 >> 0x1a & 0xffffffff" (binary_expression "uVar4 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9" (binary_expression "uVar6 * uVar5" identifier * identifier) + (binary_expression "uVar18 * uVar9" identifier * identifier)) + (binary_expression "uVar14 * uVar21" identifier * identifier)) + (binary_expression "uVar12 * uVar7" identifier * identifier)) + (binary_expression "uVar20 * uVar11" identifier * identifier)) + (parenthesized_expression "(uVar17 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar17 >> 0x1a & 0xffffffff" (binary_expression "uVar17 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar16 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar16 = (uint)uVar15 & 0x3ffffff" identifier = (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7" (binary_expression "uVar18 * uVar11" identifier * identifier) + (binary_expression "uVar5 * uVar7" identifier * identifier)) + (binary_expression "uVar6 * uVar9" identifier * identifier)) + (binary_expression "uVar2 * uVar14" identifier * identifier)) + (binary_expression "uVar12 * uVar21" identifier * identifier)) + (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar8 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar8 = (uint)uVar15 & 0x3ffffff" identifier = (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" identifier = (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4]" (binary_expression "uVar11 * uVar6" identifier * identifier) + (binary_expression "uVar14 * param_1[4]" identifier * (subscript_expression "param_1[4]" identifier [ number_literal ]))) + (binary_expression "uVar9 * uVar7" identifier * identifier)) + (binary_expression "uVar12 * uVar2" identifier * identifier)) + (binary_expression "uVar5 * uVar21" identifier * identifier)) + (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" ( (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar3 = (uint)uVar12 & 0x3ffffff;" (assignment_expression "uVar3 = (uint)uVar12 & 0x3ffffff" identifier = (binary_expression "(uint)uVar12 & 0x3ffffff" (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;" (assignment_expression "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" identifier = (binary_expression "((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" (parenthesized_expression "((uint)uVar4 & 0x3ffffff)" ( (binary_expression "(uint)uVar4 & 0x3ffffff" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (binary_expression "(int)(uVar12 >> 0x1a) * 5" (cast_expression "(int)(uVar12 >> 0x1a)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar12 >> 0x1a)" ( (binary_expression "uVar12 >> 0x1a" identifier >> number_literal) ))) * number_literal))) ;) (expression_statement "uVar10 = uVar13 & 0x3ffffff;" (assignment_expression "uVar10 = uVar13 & 0x3ffffff" identifier = (binary_expression "uVar13 & 0x3ffffff" identifier & number_literal)) ;) (expression_statement "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);" (assignment_expression "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" identifier = (binary_expression "((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" (parenthesized_expression "((uint)uVar17 & 0x3ffffff)" ( (binary_expression "(uint)uVar17 & 0x3ffffff" (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) + (parenthesized_expression "(uVar13 >> 0x1a)" ( (binary_expression "uVar13 >> 0x1a" identifier >> number_literal) )))) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar1 != param_2)" ( (binary_expression "puVar1 != param_2" identifier != identifier) )) ;) })) (expression_statement "param_1[5] = uVar10;" (assignment_expression "param_1[5] = uVar10" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = uVar13;" (assignment_expression "param_1[6] = uVar13" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = uVar16;" (assignment_expression "param_1[7] = uVar16" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = uVar8;" (assignment_expression "param_1[8] = uVar8" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = uVar3;" (assignment_expression "param_1[9] = uVar3" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) << LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) >> LIT) & LIT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) >> LIT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) >> LIT) & LIT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) | IDENT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) * LIT) )) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (binary_expression IDENT * IDENT)) + (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0015fe4c(uint *param_1,uint *param_2,ulong param_3)" (identifier "FUN_0015fe4c") (parameter_list "(uint *param_1,uint *param_2,ulong param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  ulong uVar7;\n  uint uVar8;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  ulong uVar12;\n  uint uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  uint uVar16;\n  ulong uVar17;\n  ulong uVar18;\n  ulong uVar19;\n  ulong uVar20;\n  ulong uVar21;\n  uint local_68;\n  \n  local_68 = (uint)(param_1[0x14] == 0) << 0x18;\n  uVar2 = param_1[3];\n  uVar10 = param_1[5];\n  uVar13 = param_1[6];\n  uVar16 = param_1[7];\n  uVar8 = param_1[8];\n  uVar3 = param_1[9];\n  if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }\n  param_1[5] = uVar10;\n  param_1[6] = uVar13;\n  param_1[7] = uVar16;\n  param_1[8] = uVar8;\n  param_1[9] = uVar3;\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "ulong uVar18;" (type_identifier "ulong") (identifier "uVar18") (; ";")) (declaration "ulong uVar19;" (type_identifier "ulong") (identifier "uVar19") (; ";")) (declaration "ulong uVar20;" (type_identifier "ulong") (identifier "uVar20") (; ";")) (declaration "ulong uVar21;" (type_identifier "ulong") (identifier "uVar21") (; ";")) (declaration "uint local_68;" (type_identifier "uint") (identifier "local_68") (; ";")) (expression_statement "local_68 = (uint)(param_1[0x14] == 0) << 0x18;" (assignment_expression "local_68 = (uint)(param_1[0x14] == 0) << 0x18" (identifier "local_68") (= "=") (binary_expression "(uint)(param_1[0x14] == 0) << 0x18" (call_expression "(uint)(param_1[0x14] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[0x14] == 0)" (( "(") (binary_expression "param_1[0x14] == 0" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (== "==") (number_literal "0")) () ")"))) (<< "<<") (number_literal "0x18"))) (; ";")) (expression_statement "uVar2 = param_1[3];" (assignment_expression "uVar2 = param_1[3]" (identifier "uVar2") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar10 = param_1[5];" (assignment_expression "uVar10 = param_1[5]" (identifier "uVar10") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "uVar13 = param_1[6];" (assignment_expression "uVar13 = param_1[6]" (identifier "uVar13") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar16 = param_1[7];" (assignment_expression "uVar16 = param_1[7]" (identifier "uVar16") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar8 = param_1[8];" (assignment_expression "uVar8 = param_1[8]" (identifier "uVar8") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "uVar3 = param_1[9];" (assignment_expression "uVar3 = param_1[9]" (identifier "uVar3") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (0xf < param_3) {\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" (if "if") (parenthesized_expression "(0xf < param_3)" (( "(") (binary_expression "0xf < param_3" (number_literal "0xf") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);\n    uVar6 = (ulong)*param_1;\n    uVar18 = (ulong)(param_1[4] * 5);\n    uVar19 = (ulong)(param_1[2] * 5);\n    uVar20 = (ulong)(uVar2 * 5);\n    uVar7 = (ulong)param_1[1];\n    uVar21 = (ulong)param_1[2];\n    do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);\n  }" ({ "{") (expression_statement "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);" (assignment_expression "puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" (identifier "puVar1") (= "=") (cast_expression "(uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10)" (( "(") (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10" (binary_expression "(long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0)" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (parenthesized_expression "(param_3 - 0x10 & 0xfffffffffffffff0)" (( "(") (binary_expression "param_3 - 0x10 & 0xfffffffffffffff0" (binary_expression "param_3 - 0x10" (identifier "param_3") (- "-") (number_literal "0x10")) (& "&") (number_literal "0xfffffffffffffff0")) () ")"))) (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar6 = (ulong)*param_1;" (assignment_expression "uVar6 = (ulong)*param_1" (identifier "uVar6") (= "=") (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar18 = (ulong)(param_1[4] * 5);" (assignment_expression "uVar18 = (ulong)(param_1[4] * 5)" (identifier "uVar18") (= "=") (call_expression "(ulong)(param_1[4] * 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[4] * 5)" (( "(") (binary_expression "param_1[4] * 5" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (* "*") (number_literal "5")) () ")")))) (; ";")) (expression_statement "uVar19 = (ulong)(param_1[2] * 5);" (assignment_expression "uVar19 = (ulong)(param_1[2] * 5)" (identifier "uVar19") (= "=") (call_expression "(ulong)(param_1[2] * 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[2] * 5)" (( "(") (binary_expression "param_1[2] * 5" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "5")) () ")")))) (; ";")) (expression_statement "uVar20 = (ulong)(uVar2 * 5);" (assignment_expression "uVar20 = (ulong)(uVar2 * 5)" (identifier "uVar20") (= "=") (call_expression "(ulong)(uVar2 * 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar2 * 5)" (( "(") (binary_expression "uVar2 * 5" (identifier "uVar2") (* "*") (number_literal "5")) () ")")))) (; ";")) (expression_statement "uVar7 = (ulong)param_1[1];" (assignment_expression "uVar7 = (ulong)param_1[1]" (identifier "uVar7") (= "=") (cast_expression "(ulong)param_1[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar21 = (ulong)param_1[2];" (assignment_expression "uVar21 = (ulong)param_1[2]" (identifier "uVar21") (= "=") (cast_expression "(ulong)param_1[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (do_statement "do {\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    } while (puVar1 != param_2);" (do "do") (compound_statement "{\n      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);\n      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);\n      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);\n      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);\n      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);\n      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;\n      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);\n      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);\n      uVar16 = (uint)uVar15 & 0x3ffffff;\n      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar8 = (uint)uVar15 & 0x3ffffff;\n      uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);\n      uVar3 = (uint)uVar12 & 0x3ffffff;\n      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;\n      uVar10 = uVar13 & 0x3ffffff;\n      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);\n      param_2 = param_2 + 4;\n    }" ({ "{") (expression_statement "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);" (assignment_expression "uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10)" (identifier "uVar14") (= "=") (call_expression "(ulong)((*param_2 & 0x3ffffff) + uVar10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*param_2 & 0x3ffffff) + uVar10)" (( "(") (binary_expression "(*param_2 & 0x3ffffff) + uVar10" (parenthesized_expression "(*param_2 & 0x3ffffff)" (( "(") (binary_expression "*param_2 & 0x3ffffff" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "0x3ffffff")) () ")")) (+ "+") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);" (assignment_expression "uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" (identifier "uVar12") (= "=") (call_expression "(ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13)" (( "(") (binary_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13" (parenthesized_expression "(*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff)" (( "(") (binary_expression "*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 3) >> 2" (pointer_expression "*(uint *)((long)param_2 + 3)" (* "*") (cast_expression "(uint *)((long)param_2 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 3)" (( "(") (binary_expression "(long)param_2 + 3" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "3")) () ")")))) (>> ">>") (number_literal "2")) (& "&") (number_literal "0x3ffffff")) () ")")) (+ "+") (identifier "uVar13")) () ")")))) (; ";")) (expression_statement "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);" (assignment_expression "uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" (identifier "uVar9") (= "=") (call_expression "(ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(uint *)((long)param_2 + 9) >> 6) + uVar8)" (( "(") (binary_expression "(*(uint *)((long)param_2 + 9) >> 6) + uVar8" (parenthesized_expression "(*(uint *)((long)param_2 + 9) >> 6)" (( "(") (binary_expression "*(uint *)((long)param_2 + 9) >> 6" (pointer_expression "*(uint *)((long)param_2 + 9)" (* "*") (cast_expression "(uint *)((long)param_2 + 9)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 9)" (( "(") (binary_expression "(long)param_2 + 9" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "9")) () ")")))) (>> ">>") (number_literal "6")) () ")")) (+ "+") (identifier "uVar8")) () ")")))) (; ";")) (expression_statement "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);" (assignment_expression "uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" (identifier "uVar5") (= "=") (call_expression "(ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16)" (( "(") (binary_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16" (parenthesized_expression "(*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff)" (( "(") (binary_expression "*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff" (binary_expression "*(uint *)((long)param_2 + 6) >> 4" (pointer_expression "*(uint *)((long)param_2 + 6)" (* "*") (cast_expression "(uint *)((long)param_2 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 6)" (( "(") (binary_expression "(long)param_2 + 6" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "6")) () ")")))) (>> ">>") (number_literal "4")) (& "&") (number_literal "0x3ffffff")) () ")")) (+ "+") (identifier "uVar16")) () ")")))) (; ";")) (expression_statement "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);" (assignment_expression "uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3)" (identifier "uVar11") (= "=") (call_expression "(ulong)((param_2[3] >> 8 | local_68) + uVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((param_2[3] >> 8 | local_68) + uVar3)" (( "(") (binary_expression "(param_2[3] >> 8 | local_68) + uVar3" (parenthesized_expression "(param_2[3] >> 8 | local_68)" (( "(") (binary_expression "param_2[3] >> 8 | local_68" (binary_expression "param_2[3] >> 8" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (>> ">>") (number_literal "8")) (| "|") (identifier "local_68")) () ")")) (+ "+") (identifier "uVar3")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11;" (assignment_expression "uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" (identifier "uVar4") (= "=") (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +\n              (param_1[1] * 5) * uVar11" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6" (binary_expression "uVar20 * uVar5 + uVar19 * uVar9" (binary_expression "uVar20 * uVar5" (identifier "uVar20") (* "*") (identifier "uVar5")) (+ "+") (binary_expression "uVar19 * uVar9" (identifier "uVar19") (* "*") (identifier "uVar9"))) (+ "+") (binary_expression "uVar14 * uVar6" (identifier "uVar14") (* "*") (identifier "uVar6"))) (+ "+") (binary_expression "uVar12 * uVar18" (identifier "uVar12") (* "*") (identifier "uVar18"))) (+ "+") (binary_expression "(param_1[1] * 5) * uVar11" (parenthesized_expression "(param_1[1] * 5)" (( "(") (binary_expression "param_1[1] * 5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (* "*") (number_literal "5")) () ")")) (* "*") (identifier "uVar11")))) (; ";")) (expression_statement "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff);" (assignment_expression "uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" (identifier "uVar17") (= "=") (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +\n               (uVar4 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7" (binary_expression "uVar18 * uVar5 + uVar20 * uVar9" (binary_expression "uVar18 * uVar5" (identifier "uVar18") (* "*") (identifier "uVar5")) (+ "+") (binary_expression "uVar20 * uVar9" (identifier "uVar20") (* "*") (identifier "uVar9"))) (+ "+") (binary_expression "uVar14 * uVar7" (identifier "uVar14") (* "*") (identifier "uVar7"))) (+ "+") (binary_expression "uVar6 * uVar12" (identifier "uVar6") (* "*") (identifier "uVar12"))) (+ "+") (binary_expression "uVar19 * uVar11" (identifier "uVar19") (* "*") (identifier "uVar11"))) (+ "+") (parenthesized_expression "(uVar4 >> 0x1a & 0xffffffff)" (( "(") (binary_expression "uVar4 >> 0x1a & 0xffffffff" (binary_expression "uVar4 >> 0x1a" (identifier "uVar4") (>> ">>") (number_literal "0x1a")) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (expression_statement "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" (identifier "uVar15") (= "=") (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +\n               (uVar17 >> 0x1a & 0xffffffff)" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21" (binary_expression "uVar6 * uVar5 + uVar18 * uVar9" (binary_expression "uVar6 * uVar5" (identifier "uVar6") (* "*") (identifier "uVar5")) (+ "+") (binary_expression "uVar18 * uVar9" (identifier "uVar18") (* "*") (identifier "uVar9"))) (+ "+") (binary_expression "uVar14 * uVar21" (identifier "uVar14") (* "*") (identifier "uVar21"))) (+ "+") (binary_expression "uVar12 * uVar7" (identifier "uVar12") (* "*") (identifier "uVar7"))) (+ "+") (binary_expression "uVar20 * uVar11" (identifier "uVar20") (* "*") (identifier "uVar11"))) (+ "+") (parenthesized_expression "(uVar17 >> 0x1a & 0xffffffff)" (( "(") (binary_expression "uVar17 >> 0x1a & 0xffffffff" (binary_expression "uVar17 >> 0x1a" (identifier "uVar17") (>> ">>") (number_literal "0x1a")) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (expression_statement "uVar16 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar16 = (uint)uVar15 & 0x3ffffff" (identifier "uVar16") (= "=") (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15")) (& "&") (number_literal "0x3ffffff"))) (; ";")) (expression_statement "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (identifier "uVar15") (= "=") (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9" (binary_expression "uVar18 * uVar11 + uVar5 * uVar7" (binary_expression "uVar18 * uVar11" (identifier "uVar18") (* "*") (identifier "uVar11")) (+ "+") (binary_expression "uVar5 * uVar7" (identifier "uVar5") (* "*") (identifier "uVar7"))) (+ "+") (binary_expression "uVar6 * uVar9" (identifier "uVar6") (* "*") (identifier "uVar9"))) (+ "+") (binary_expression "uVar2 * uVar14" (identifier "uVar2") (* "*") (identifier "uVar14"))) (+ "+") (binary_expression "uVar12 * uVar21" (identifier "uVar12") (* "*") (identifier "uVar21"))) (+ "+") (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" (( "(") (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" (identifier "uVar15") (>> ">>") (number_literal "0x1a")) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (expression_statement "uVar8 = (uint)uVar15 & 0x3ffffff;" (assignment_expression "uVar8 = (uint)uVar15 & 0x3ffffff" (identifier "uVar8") (= "=") (binary_expression "(uint)uVar15 & 0x3ffffff" (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15")) (& "&") (number_literal "0x3ffffff"))) (; ";")) (expression_statement "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff);" (assignment_expression "uVar12 = uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (identifier "uVar12") (= "=") (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +\n               (uVar15 >> 0x1a & 0xffffffff)" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4] + uVar9 * uVar7" (binary_expression "uVar11 * uVar6 +\n               uVar14 * param_1[4]" (binary_expression "uVar11 * uVar6" (identifier "uVar11") (* "*") (identifier "uVar6")) (+ "+") (binary_expression "uVar14 * param_1[4]" (identifier "uVar14") (* "*") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (+ "+") (binary_expression "uVar9 * uVar7" (identifier "uVar9") (* "*") (identifier "uVar7"))) (+ "+") (binary_expression "uVar12 * uVar2" (identifier "uVar12") (* "*") (identifier "uVar2"))) (+ "+") (binary_expression "uVar5 * uVar21" (identifier "uVar5") (* "*") (identifier "uVar21"))) (+ "+") (parenthesized_expression "(uVar15 >> 0x1a & 0xffffffff)" (( "(") (binary_expression "uVar15 >> 0x1a & 0xffffffff" (binary_expression "uVar15 >> 0x1a" (identifier "uVar15") (>> ">>") (number_literal "0x1a")) (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (expression_statement "uVar3 = (uint)uVar12 & 0x3ffffff;" (assignment_expression "uVar3 = (uint)uVar12 & 0x3ffffff" (identifier "uVar3") (= "=") (binary_expression "(uint)uVar12 & 0x3ffffff" (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12")) (& "&") (number_literal "0x3ffffff"))) (; ";")) (expression_statement "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;" (assignment_expression "uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" (identifier "uVar13") (= "=") (binary_expression "((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5" (parenthesized_expression "((uint)uVar4 & 0x3ffffff)" (( "(") (binary_expression "(uint)uVar4 & 0x3ffffff" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (& "&") (number_literal "0x3ffffff")) () ")")) (+ "+") (binary_expression "(int)(uVar12 >> 0x1a) * 5" (cast_expression "(int)(uVar12 >> 0x1a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar12 >> 0x1a)" (( "(") (binary_expression "uVar12 >> 0x1a" (identifier "uVar12") (>> ">>") (number_literal "0x1a")) () ")"))) (* "*") (number_literal "5")))) (; ";")) (expression_statement "uVar10 = uVar13 & 0x3ffffff;" (assignment_expression "uVar10 = uVar13 & 0x3ffffff" (identifier "uVar10") (= "=") (binary_expression "uVar13 & 0x3ffffff" (identifier "uVar13") (& "&") (number_literal "0x3ffffff"))) (; ";")) (expression_statement "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);" (assignment_expression "uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" (identifier "uVar13") (= "=") (binary_expression "((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a)" (parenthesized_expression "((uint)uVar17 & 0x3ffffff)" (( "(") (binary_expression "(uint)uVar17 & 0x3ffffff" (cast_expression "(uint)uVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar17")) (& "&") (number_literal "0x3ffffff")) () ")")) (+ "+") (parenthesized_expression "(uVar13 >> 0x1a)" (( "(") (binary_expression "uVar13 >> 0x1a" (identifier "uVar13") (>> ">>") (number_literal "0x1a")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar1 != param_2)" (( "(") (binary_expression "puVar1 != param_2" (identifier "puVar1") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (expression_statement "param_1[5] = uVar10;" (assignment_expression "param_1[5] = uVar10" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "param_1[6] = uVar13;" (assignment_expression "param_1[6] = uVar13" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "param_1[7] = uVar16;" (assignment_expression "param_1[7] = uVar16" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "param_1[8] = uVar8;" (assignment_expression "param_1[8] = uVar8" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "param_1[9] = uVar3;" (assignment_expression "param_1[9] = uVar3" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *st,type_2 *var_2,type_3 var_1)

{
  type_4 *var_25;
  type_4 var_3;
  type_4 var_9;
  type_3 var_20;
  type_5 var_5;
  type_3 var_11;
  type_3 var_15;
  type_3 var_19;
  type_4 var_6;
  type_3 var_13;
  type_5 var_4;
  type_3 var_18;
  type_3 var_16;
  type_4 var_24;
  type_3 var_14;
  type_3 var_23;
  type_5 var_7;
  type_3 var_22;
  type_3 var_17;
  type_3 var_12;
  type_3 var_10;
  type_3 var_21;
  type_4 var_8;
  
  var_8 = (type_4)(st->final == 0) << 0x18;
  var_3 = st->r[3];
  var_4 = st->h[0];
  var_5 = st->h[1];
  var_7 = st->h[2];
  var_6 = st->h[3];
  var_9 = st->h[4];
  if (0xf < var_1) {
    var_25 = (type_4 *)(var_2 + (var_1 - 0x10 & 0xfffffffffffffff0) + 0x10);
    var_15 = (type_3)st->r[0];
    var_17 = (type_3)(st->r[4] * 5);
    var_12 = (type_3)(st->r[2] * 5);
    var_10 = (type_3)(var_3 * 5);
    var_19 = (type_3)st->r[1];
    var_21 = (type_3)st->r[2];
    do {
      var_14 = (type_3)((*(type_4 *)var_2 & 0x3ffffff) + var_4);
      var_16 = (type_3)((*(type_4 *)((long)var_2 + 3) >> 2 & 0x3ffffff) + var_5);
      var_13 = (type_3)((*(type_4 *)((long)var_2 + 9) >> 6) + var_6);
      var_11 = (type_3)((*(type_4 *)((long)var_2 + 6) >> 4 & 0x3ffffff) + var_7);
      var_18 = (type_3)((*(type_4 *)((long)var_2 + 0xc) >> 8 | var_8) + var_9);
      var_20 = var_10 * var_11 + var_12 * var_13 + var_14 * var_15 + var_16 * var_17 +
              (st->r[1] * 5) * var_18;
      var_22 = var_17 * var_11 + var_10 * var_13 + var_14 * var_19 + var_15 * var_16 + var_12 * var_18
               + (var_20 >> 0x1a & 0xffffffff);
      var_23 = var_15 * var_11 + var_17 * var_13 + var_14 * var_21 + var_16 * var_19 + var_10 * var_18
               + (var_22 >> 0x1a & 0xffffffff);
      var_7 = (type_4)var_23 & 0x3ffffff;
      var_23 = var_17 * var_18 + var_11 * var_19 + var_15 * var_13 + var_3 * var_14 + var_16 * var_21 +
               (var_23 >> 0x1a & 0xffffffff);
      var_6 = (type_4)var_23 & 0x3ffffff;
      var_16 = var_18 * var_15 + var_14 * st->r[4] + var_13 * var_19 + var_16 * var_3 + var_11 * var_21
               + (var_23 >> 0x1a & 0xffffffff);
      var_9 = (type_4)var_16 & 0x3ffffff;
      var_24 = ((type_4)var_20 & 0x3ffffff) + (int)(var_16 >> 0x1a) * 5;
      var_4 = var_24 & 0x3ffffff;
      var_5 = ((type_4)var_22 & 0x3ffffff) + (var_24 >> 0x1a);
      var_2 = (type_2 *)((long)var_2 + 0x10);
    } while (var_25 != (type_4 *)var_2);
  }
  st->h[0] = var_4;
  st->h[1] = var_5;
  st->h[2] = var_7;
  st->h[3] = var_6;
  st->h[4] = var_9;
  return;
}


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

void MASKED(uint *param_1,uint *param_2,ulong param_3)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  ulong uVar7;
  uint uVar8;
  ulong uVar9;
  uint uVar10;
  ulong uVar11;
  ulong uVar12;
  uint uVar13;
  ulong uVar14;
  ulong uVar15;
  uint uVar16;
  ulong uVar17;
  ulong uVar18;
  ulong uVar19;
  ulong uVar20;
  ulong uVar21;
  uint local_68;
  
  local_68 = (uint)(param_1[0x14] == 0) << 0x18;
  uVar2 = param_1[3];
  uVar10 = param_1[5];
  uVar13 = param_1[6];
  uVar16 = param_1[7];
  uVar8 = param_1[8];
  uVar3 = param_1[9];
  if (0xf < param_3) {
    puVar1 = (uint *)((long)param_2 + (param_3 - 0x10 & 0xfffffffffffffff0) + 0x10);
    uVar6 = (ulong)*param_1;
    uVar18 = (ulong)(param_1[4] * 5);
    uVar19 = (ulong)(param_1[2] * 5);
    uVar20 = (ulong)(uVar2 * 5);
    uVar7 = (ulong)param_1[1];
    uVar21 = (ulong)param_1[2];
    do {
      uVar14 = (ulong)((*param_2 & 0x3ffffff) + uVar10);
      uVar12 = (ulong)((*(uint *)((long)param_2 + 3) >> 2 & 0x3ffffff) + uVar13);
      uVar9 = (ulong)((*(uint *)((long)param_2 + 9) >> 6) + uVar8);
      uVar5 = (ulong)((*(uint *)((long)param_2 + 6) >> 4 & 0x3ffffff) + uVar16);
      uVar11 = (ulong)((param_2[3] >> 8 | local_68) + uVar3);
      uVar4 = uVar20 * uVar5 + uVar19 * uVar9 + uVar14 * uVar6 + uVar12 * uVar18 +
              (param_1[1] * 5) * uVar11;
      uVar17 = uVar18 * uVar5 + uVar20 * uVar9 + uVar14 * uVar7 + uVar6 * uVar12 + uVar19 * uVar11 +
               (uVar4 >> 0x1a & 0xffffffff);
      uVar15 = uVar6 * uVar5 + uVar18 * uVar9 + uVar14 * uVar21 + uVar12 * uVar7 + uVar20 * uVar11 +
               (uVar17 >> 0x1a & 0xffffffff);
      uVar16 = (uint)uVar15 & 0x3ffffff;
      uVar15 = uVar18 * uVar11 + uVar5 * uVar7 + uVar6 * uVar9 + uVar2 * uVar14 + uVar12 * uVar21 +
               (uVar15 >> 0x1a & 0xffffffff);
      uVar8 = (uint)uVar15 & 0x3ffffff;
      uVar12 = uVar11 * uVar6 +
               uVar14 * param_1[4] + uVar9 * uVar7 + uVar12 * uVar2 + uVar5 * uVar21 +
               (uVar15 >> 0x1a & 0xffffffff);
      uVar3 = (uint)uVar12 & 0x3ffffff;
      uVar13 = ((uint)uVar4 & 0x3ffffff) + (int)(uVar12 >> 0x1a) * 5;
      uVar10 = uVar13 & 0x3ffffff;
      uVar13 = ((uint)uVar17 & 0x3ffffff) + (uVar13 >> 0x1a);
      param_2 = param_2 + 4;
    } while (puVar1 != param_2);
  }
  param_1[5] = uVar10;
  param_1[6] = uVar13;
  param_1[7] = uVar16;
  param_1[8] = uVar8;
  param_1[9] = uVar3;
  return;
}

