
void __gmpn_preinv_divrem_1_pentium4_sse2
               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,
               uint param_7)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  bool bVar7;
  int iVar8;
  uint uVar9;
  ulonglong uVar10;
  int iVar11;
  longlong lVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  
  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);
  uVar14 = (ulonglong)param_7;
  bVar7 = uVar2 < param_5;
  uVar9 = 0;
  if (bVar7) {
    uVar9 = uVar2;
  }
  uVar4 = 0;
  if (!bVar7) {
    uVar4 = uVar2;
  }
  iVar3 = param_1 + -4 + param_2 * 4;
  *(uint *)(iVar3 + param_4 * 4) = uVar4;
  param_4 = param_4 - (uint)bVar7;
  uVar13 = (ulonglong)param_5 << uVar14;
  piVar6 = (int *)(iVar3 + param_4 * 4);
  piVar5 = (int *)(param_3 + -4 + param_4 * 4);
  uVar10 = (ulonglong)uVar9 << uVar14;
  iVar3 = param_4 + -1;
  uVar2 = (uint)uVar13;
  if (param_4 != 0) {
    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);
    iVar8 = (int)uVar10;
    if (iVar3 != 0) {
      do {
        piVar1 = piVar5 + -1;
        iVar8 = *piVar5;
        piVar5 = piVar5 + -1;
        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));
        iVar8 = (int)uVar10;
        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +
                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
        iVar8 = (int)lVar12 + (uVar4 & uVar2);
        uVar10 = CONCAT44(uVar4,iVar8);
        *piVar6 = uVar9 + 1 + uVar4;
        piVar6 = piVar6 + -1;
        bVar7 = iVar3 != 0;
        iVar3 = iVar3 + -1;
      } while (bVar7 && iVar3 != 0);
    }
    iVar3 = *piVar5 << uVar14;
    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +
                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
    *piVar6 = uVar9 + 1 + uVar4;
    piVar6 = piVar6 + -1;
  }
  if (param_2 != 0) {
    do {
      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;
      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
      *piVar6 = uVar9 + 1 + uVar4;
      piVar6 = piVar6 + -1;
      param_2 = param_2 + -1;
    } while (param_2 != 0);
  }
  return;
}



void __gmpn_preinv_divrem_1_pentium4_sse2
               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,
               uint param_7)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  bool bVar7;
  int iVar8;
  uint uVar9;
  ulonglong uVar10;
  int iVar11;
  longlong lVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  
  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);
  uVar14 = (ulonglong)param_7;
  bVar7 = uVar2 < param_5;
  uVar9 = 0;
  if (bVar7) {
    uVar9 = uVar2;
  }
  uVar4 = 0;
  if (!bVar7) {
    uVar4 = uVar2;
  }
  iVar3 = param_1 + -4 + param_2 * 4;
  *(uint *)(iVar3 + param_4 * 4) = uVar4;
  param_4 = param_4 - (uint)bVar7;
  uVar13 = (ulonglong)param_5 << uVar14;
  piVar6 = (int *)(iVar3 + param_4 * 4);
  piVar5 = (int *)(param_3 + -4 + param_4 * 4);
  uVar10 = (ulonglong)uVar9 << uVar14;
  iVar3 = param_4 + -1;
  uVar2 = (uint)uVar13;
  if (param_4 != 0) {
    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);
    iVar8 = (int)uVar10;
    if (iVar3 != 0) {
      do {
        piVar1 = piVar5 + -1;
        iVar8 = *piVar5;
        piVar5 = piVar5 + -1;
        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));
        iVar8 = (int)uVar10;
        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +
                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
        iVar8 = (int)lVar12 + (uVar4 & uVar2);
        uVar10 = CONCAT44(uVar4,iVar8);
        *piVar6 = uVar9 + 1 + uVar4;
        piVar6 = piVar6 + -1;
        bVar7 = iVar3 != 0;
        iVar3 = iVar3 + -1;
      } while (bVar7 && iVar3 != 0);
    }
    iVar3 = *piVar5 << uVar14;
    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +
                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
    *piVar6 = uVar9 + 1 + uVar4;
    piVar6 = piVar6 + -1;
  }
  if (param_2 != 0) {
    do {
      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;
      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
      *piVar6 = uVar9 + 1 + uVar4;
      piVar6 = piVar6 + -1;
      param_2 = param_2 + -1;
    } while (param_2 != 0);
  }
  return;
}


MOV ECX,dword ptr [ESP + 0x10]
XOR EDX,EDX
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESI + ECX*0x4 + -0x4]
MOV dword ptr [ESP + 0x4],EBX
MOV EBX,dword ptr [ESP + 0x8]
MOVD MM4,dword ptr [ESP + 0x18]
MOVD MM7,dword ptr [ESP + 0x1c]
CMP EAX,EBP
CMOVC EDX,EAX
MOVD MM0,EDX
MOVD MM1,EDX
MOV EDX,0x0
MOVD MM5,EBP
CMOVNC EDX,EAX
LEA EDI,[EDI + EBX*0x4 + -0x4]
MOV dword ptr [EDI + ECX*0x4],EDX
SBB ECX,0x0
MOV EAX,0x20
SUB EAX,dword ptr [ESP + 0x1c]
PSLLQ MM5,MM7
LEA EDI,[EDI + ECX*0x4]
LEA ESI,[ESI + ECX*0x4 + -0x4]
MOVD MM6,EAX
JMP 0x0003fe36
(translation_unit "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ulonglong uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "longlong lVar12;" type_identifier identifier ;) (declaration "ulonglong uVar13;" type_identifier identifier ;) (declaration "ulonglong uVar14;" type_identifier identifier ;) (expression_statement "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);" (assignment_expression "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + -4 + param_4 * 4)" * (cast_expression "(uint *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar14 = (ulonglong)param_7;" (assignment_expression "uVar14 = (ulonglong)param_7" identifier = (cast_expression "(ulonglong)param_7" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "bVar7 = uVar2 < param_5;" (assignment_expression "bVar7 = uVar2 < param_5" identifier = (binary_expression "uVar2 < param_5" identifier < identifier)) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n    uVar9 = uVar2;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    uVar9 = uVar2;\n  }" { (expression_statement "uVar9 = uVar2;" (assignment_expression "uVar9 = uVar2" identifier = identifier) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (!bVar7) {\n    uVar4 = uVar2;\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    uVar4 = uVar2;\n  }" { (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (expression_statement "iVar3 = param_1 + -4 + param_2 * 4;" (assignment_expression "iVar3 = param_1 + -4 + param_2 * 4" identifier = (binary_expression "param_1 + -4 + param_2 * 4" (binary_expression "param_1 + -4" identifier + number_literal) + (binary_expression "param_2 * 4" identifier * number_literal))) ;) (expression_statement "*(uint *)(iVar3 + param_4 * 4) = uVar4;" (assignment_expression "*(uint *)(iVar3 + param_4 * 4) = uVar4" (pointer_expression "*(uint *)(iVar3 + param_4 * 4)" * (cast_expression "(uint *)(iVar3 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "param_4 = param_4 - (uint)bVar7;" (assignment_expression "param_4 = param_4 - (uint)bVar7" identifier = (binary_expression "param_4 - (uint)bVar7" identifier - (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar13 = (ulonglong)param_5 << uVar14;" (assignment_expression "uVar13 = (ulonglong)param_5 << uVar14" identifier = (binary_expression "(ulonglong)param_5 << uVar14" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "piVar6 = (int *)(iVar3 + param_4 * 4);" (assignment_expression "piVar6 = (int *)(iVar3 + param_4 * 4)" identifier = (cast_expression "(int *)(iVar3 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "piVar5 = (int *)(param_3 + -4 + param_4 * 4);" (assignment_expression "piVar5 = (int *)(param_3 + -4 + param_4 * 4)" identifier = (cast_expression "(int *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar10 = (ulonglong)uVar9 << uVar14;" (assignment_expression "uVar10 = (ulonglong)uVar9 << uVar14" identifier = (binary_expression "(ulonglong)uVar9 << uVar14" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "iVar3 = param_4 + -1;" (assignment_expression "iVar3 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)uVar13;" (assignment_expression "uVar2 = (uint)uVar13" identifier = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" { (expression_statement "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);" (assignment_expression "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" identifier = (binary_expression "CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(uVar9,*piVar5)" identifier (argument_list "(uVar9,*piVar5)" ( identifier , (pointer_expression "*piVar5" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) ))))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" { (do_statement "do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);" do (compound_statement "{\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      }" { (expression_statement "piVar1 = piVar5 + -1;" (assignment_expression "piVar1 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = *piVar5;" (assignment_expression "iVar8 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar5 = piVar5 + -1;" (assignment_expression "piVar5 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));" (assignment_expression "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" identifier = (cast_expression "(int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (binary_expression "CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(iVar8,*piVar1)" identifier (argument_list "(iVar8,*piVar1)" ( identifier , (pointer_expression "*piVar1" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) )))) )))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" identifier (argument_list "(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" ( identifier , (binary_expression "(iVar11 >> 0x1f & uVar2) + iVar11" (parenthesized_expression "(iVar11 >> 0x1f & uVar2)" ( (binary_expression "iVar11 >> 0x1f & uVar2" (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar11 >> 0x1f))" ( (binary_expression "iVar8 - (iVar11 >> 0x1f)" identifier - (parenthesized_expression "(iVar11 >> 0x1f)" ( (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar11) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar11) - uVar13" (call_expression "CONCAT44(iVar8,iVar11)" identifier (argument_list "(iVar8,iVar11)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)lVar12 + (uVar4 & uVar2);" (assignment_expression "iVar8 = (int)lVar12 + (uVar4 & uVar2)" identifier = (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,iVar8);" (assignment_expression "uVar10 = CONCAT44(uVar4,iVar8)" identifier = (call_expression "CONCAT44(uVar4,iVar8)" identifier (argument_list "(uVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = iVar3 != 0;" (assignment_expression "bVar7 = iVar3 != 0" identifier = (binary_expression "iVar3 != 0" identifier != number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7 && iVar3 != 0)" ( (binary_expression "bVar7 && iVar3 != 0" identifier && (binary_expression "iVar3 != 0" identifier != number_literal)) )) ;) })) (expression_statement "iVar3 = *piVar5 << uVar14;" (assignment_expression "iVar3 = *piVar5 << uVar14" identifier = (binary_expression "*piVar5 << uVar14" (pointer_expression "*piVar5" * identifier) << identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" identifier (argument_list "(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" ( identifier , (binary_expression "(iVar3 >> 0x1f & uVar2) + iVar3" (parenthesized_expression "(iVar3 >> 0x1f & uVar2)" ( (binary_expression "iVar3 >> 0x1f & uVar2" (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar3 >> 0x1f))" ( (binary_expression "iVar8 - (iVar3 >> 0x1f)" identifier - (parenthesized_expression "(iVar3 >> 0x1f)" ( (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar3) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar3) - uVar13" (call_expression "CONCAT44(iVar8,iVar3)" identifier (argument_list "(iVar8,iVar3)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) })) (if_statement "if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" { (do_statement "do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);" do (compound_statement "{\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    }" { (expression_statement "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;" (assignment_expression "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" identifier = (binary_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" (cast_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar10 & 0xffffffff)" ( (binary_expression "uVar10 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) + (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "((uVar10 << 0x20) - uVar13)" ( (binary_expression "(uVar10 << 0x20) - uVar13" (parenthesized_expression "(uVar10 << 0x20)" ( (binary_expression "uVar10 << 0x20" identifier << number_literal) )) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ulonglong uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "longlong lVar12;" type_identifier identifier ;) (declaration "ulonglong uVar13;" type_identifier identifier ;) (declaration "ulonglong uVar14;" type_identifier identifier ;) (expression_statement "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);" (assignment_expression "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + -4 + param_4 * 4)" * (cast_expression "(uint *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar14 = (ulonglong)param_7;" (assignment_expression "uVar14 = (ulonglong)param_7" identifier = (cast_expression "(ulonglong)param_7" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "bVar7 = uVar2 < param_5;" (assignment_expression "bVar7 = uVar2 < param_5" identifier = (binary_expression "uVar2 < param_5" identifier < identifier)) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n    uVar9 = uVar2;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    uVar9 = uVar2;\n  }" { (expression_statement "uVar9 = uVar2;" (assignment_expression "uVar9 = uVar2" identifier = identifier) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (!bVar7) {\n    uVar4 = uVar2;\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    uVar4 = uVar2;\n  }" { (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (expression_statement "iVar3 = param_1 + -4 + param_2 * 4;" (assignment_expression "iVar3 = param_1 + -4 + param_2 * 4" identifier = (binary_expression "param_1 + -4 + param_2 * 4" (binary_expression "param_1 + -4" identifier + number_literal) + (binary_expression "param_2 * 4" identifier * number_literal))) ;) (expression_statement "*(uint *)(iVar3 + param_4 * 4) = uVar4;" (assignment_expression "*(uint *)(iVar3 + param_4 * 4) = uVar4" (pointer_expression "*(uint *)(iVar3 + param_4 * 4)" * (cast_expression "(uint *)(iVar3 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "param_4 = param_4 - (uint)bVar7;" (assignment_expression "param_4 = param_4 - (uint)bVar7" identifier = (binary_expression "param_4 - (uint)bVar7" identifier - (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar13 = (ulonglong)param_5 << uVar14;" (assignment_expression "uVar13 = (ulonglong)param_5 << uVar14" identifier = (binary_expression "(ulonglong)param_5 << uVar14" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "piVar6 = (int *)(iVar3 + param_4 * 4);" (assignment_expression "piVar6 = (int *)(iVar3 + param_4 * 4)" identifier = (cast_expression "(int *)(iVar3 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "piVar5 = (int *)(param_3 + -4 + param_4 * 4);" (assignment_expression "piVar5 = (int *)(param_3 + -4 + param_4 * 4)" identifier = (cast_expression "(int *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar10 = (ulonglong)uVar9 << uVar14;" (assignment_expression "uVar10 = (ulonglong)uVar9 << uVar14" identifier = (binary_expression "(ulonglong)uVar9 << uVar14" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "iVar3 = param_4 + -1;" (assignment_expression "iVar3 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)uVar13;" (assignment_expression "uVar2 = (uint)uVar13" identifier = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" { (expression_statement "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);" (assignment_expression "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" identifier = (binary_expression "CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(uVar9,*piVar5)" identifier (argument_list "(uVar9,*piVar5)" ( identifier , (pointer_expression "*piVar5" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) ))))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" { (do_statement "do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);" do (compound_statement "{\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      }" { (expression_statement "piVar1 = piVar5 + -1;" (assignment_expression "piVar1 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = *piVar5;" (assignment_expression "iVar8 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar5 = piVar5 + -1;" (assignment_expression "piVar5 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));" (assignment_expression "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" identifier = (cast_expression "(int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (binary_expression "CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(iVar8,*piVar1)" identifier (argument_list "(iVar8,*piVar1)" ( identifier , (pointer_expression "*piVar1" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) )))) )))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" identifier (argument_list "(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" ( identifier , (binary_expression "(iVar11 >> 0x1f & uVar2) + iVar11" (parenthesized_expression "(iVar11 >> 0x1f & uVar2)" ( (binary_expression "iVar11 >> 0x1f & uVar2" (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar11 >> 0x1f))" ( (binary_expression "iVar8 - (iVar11 >> 0x1f)" identifier - (parenthesized_expression "(iVar11 >> 0x1f)" ( (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar11) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar11) - uVar13" (call_expression "CONCAT44(iVar8,iVar11)" identifier (argument_list "(iVar8,iVar11)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)lVar12 + (uVar4 & uVar2);" (assignment_expression "iVar8 = (int)lVar12 + (uVar4 & uVar2)" identifier = (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,iVar8);" (assignment_expression "uVar10 = CONCAT44(uVar4,iVar8)" identifier = (call_expression "CONCAT44(uVar4,iVar8)" identifier (argument_list "(uVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = iVar3 != 0;" (assignment_expression "bVar7 = iVar3 != 0" identifier = (binary_expression "iVar3 != 0" identifier != number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7 && iVar3 != 0)" ( (binary_expression "bVar7 && iVar3 != 0" identifier && (binary_expression "iVar3 != 0" identifier != number_literal)) )) ;) })) (expression_statement "iVar3 = *piVar5 << uVar14;" (assignment_expression "iVar3 = *piVar5 << uVar14" identifier = (binary_expression "*piVar5 << uVar14" (pointer_expression "*piVar5" * identifier) << identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" identifier (argument_list "(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" ( identifier , (binary_expression "(iVar3 >> 0x1f & uVar2) + iVar3" (parenthesized_expression "(iVar3 >> 0x1f & uVar2)" ( (binary_expression "iVar3 >> 0x1f & uVar2" (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar3 >> 0x1f))" ( (binary_expression "iVar8 - (iVar3 >> 0x1f)" identifier - (parenthesized_expression "(iVar3 >> 0x1f)" ( (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar3) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar3) - uVar13" (call_expression "CONCAT44(iVar8,iVar3)" identifier (argument_list "(iVar8,iVar3)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) })) (if_statement "if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" { (do_statement "do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);" do (compound_statement "{\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    }" { (expression_statement "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;" (assignment_expression "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" identifier = (binary_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" (cast_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar10 & 0xffffffff)" ( (binary_expression "uVar10 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) + (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "((uVar10 << 0x20) - uVar13)" ( (binary_expression "(uVar10 << 0x20) - uVar13" (parenthesized_expression "(uVar10 << 0x20)" ( (binary_expression "uVar10 << 0x20" identifier << number_literal) )) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ulonglong uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "longlong lVar12;" type_identifier identifier ;) (declaration "ulonglong uVar13;" type_identifier identifier ;) (declaration "ulonglong uVar14;" type_identifier identifier ;) (expression_statement "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);" (assignment_expression "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + -4 + param_4 * 4)" * (cast_expression "(uint *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar14 = (ulonglong)param_7;" (assignment_expression "uVar14 = (ulonglong)param_7" identifier = (cast_expression "(ulonglong)param_7" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ;) (expression_statement "bVar7 = uVar2 < param_5;" (assignment_expression "bVar7 = uVar2 < param_5" identifier = (binary_expression "uVar2 < param_5" identifier < identifier)) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (bVar7) {\n    uVar9 = uVar2;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    uVar9 = uVar2;\n  }" { (expression_statement "uVar9 = uVar2;" (assignment_expression "uVar9 = uVar2" identifier = identifier) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (!bVar7) {\n    uVar4 = uVar2;\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    uVar4 = uVar2;\n  }" { (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (expression_statement "iVar3 = param_1 + -4 + param_2 * 4;" (assignment_expression "iVar3 = param_1 + -4 + param_2 * 4" identifier = (binary_expression "param_1 + -4 + param_2 * 4" (binary_expression "param_1 + -4" identifier + number_literal) + (binary_expression "param_2 * 4" identifier * number_literal))) ;) (expression_statement "*(uint *)(iVar3 + param_4 * 4) = uVar4;" (assignment_expression "*(uint *)(iVar3 + param_4 * 4) = uVar4" (pointer_expression "*(uint *)(iVar3 + param_4 * 4)" * (cast_expression "(uint *)(iVar3 + param_4 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "param_4 = param_4 - (uint)bVar7;" (assignment_expression "param_4 = param_4 - (uint)bVar7" identifier = (binary_expression "param_4 - (uint)bVar7" identifier - (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar13 = (ulonglong)param_5 << uVar14;" (assignment_expression "uVar13 = (ulonglong)param_5 << uVar14" identifier = (binary_expression "(ulonglong)param_5 << uVar14" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "piVar6 = (int *)(iVar3 + param_4 * 4);" (assignment_expression "piVar6 = (int *)(iVar3 + param_4 * 4)" identifier = (cast_expression "(int *)(iVar3 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + param_4 * 4)" ( (binary_expression "iVar3 + param_4 * 4" identifier + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "piVar5 = (int *)(param_3 + -4 + param_4 * 4);" (assignment_expression "piVar5 = (int *)(param_3 + -4 + param_4 * 4)" identifier = (cast_expression "(int *)(param_3 + -4 + param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -4 + param_4 * 4)" ( (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" identifier + number_literal) + (binary_expression "param_4 * 4" identifier * number_literal)) )))) ;) (expression_statement "uVar10 = (ulonglong)uVar9 << uVar14;" (assignment_expression "uVar10 = (ulonglong)uVar9 << uVar14" identifier = (binary_expression "(ulonglong)uVar9 << uVar14" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << identifier)) ;) (expression_statement "iVar3 = param_4 + -1;" (assignment_expression "iVar3 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = (uint)uVar13;" (assignment_expression "uVar2 = (uint)uVar13" identifier = (cast_expression "(uint)uVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" { (expression_statement "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);" (assignment_expression "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" identifier = (binary_expression "CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(uVar9,*piVar5)" identifier (argument_list "(uVar9,*piVar5)" ( identifier , (pointer_expression "*piVar5" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) ))))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" { (do_statement "do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);" do (compound_statement "{\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      }" { (expression_statement "piVar1 = piVar5 + -1;" (assignment_expression "piVar1 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = *piVar5;" (assignment_expression "iVar8 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar5 = piVar5 + -1;" (assignment_expression "piVar5 = piVar5 + -1" identifier = (binary_expression "piVar5 + -1" identifier + number_literal)) ;) (expression_statement "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));" (assignment_expression "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" identifier = (cast_expression "(int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" ( (binary_expression "CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(iVar8,*piVar1)" identifier (argument_list "(iVar8,*piVar1)" ( identifier , (pointer_expression "*piVar1" * identifier) ))) >> (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(0x20 - param_7)" ( (binary_expression "0x20 - param_7" number_literal - identifier) )))) )))) ;) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" identifier (argument_list "(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" ( identifier , (binary_expression "(iVar11 >> 0x1f & uVar2) + iVar11" (parenthesized_expression "(iVar11 >> 0x1f & uVar2)" ( (binary_expression "iVar11 >> 0x1f & uVar2" (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar11 >> 0x1f))" ( (binary_expression "iVar8 - (iVar11 >> 0x1f)" identifier - (parenthesized_expression "(iVar11 >> 0x1f)" ( (binary_expression "iVar11 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar11) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar11) - uVar13" (call_expression "CONCAT44(iVar8,iVar11)" identifier (argument_list "(iVar8,iVar11)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)lVar12 + (uVar4 & uVar2);" (assignment_expression "iVar8 = (int)lVar12 + (uVar4 & uVar2)" identifier = (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,iVar8);" (assignment_expression "uVar10 = CONCAT44(uVar4,iVar8)" identifier = (call_expression "CONCAT44(uVar4,iVar8)" identifier (argument_list "(uVar4,iVar8)" ( identifier , identifier )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = iVar3 != 0;" (assignment_expression "bVar7 = iVar3 != 0" identifier = (binary_expression "iVar3 != 0" identifier != number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar7 && iVar3 != 0)" ( (binary_expression "bVar7 && iVar3 != 0" identifier && (binary_expression "iVar3 != 0" identifier != number_literal)) )) ;) })) (expression_statement "iVar3 = *piVar5 << uVar14;" (assignment_expression "iVar3 = *piVar5 << uVar14" identifier = (binary_expression "*piVar5 << uVar14" (pointer_expression "*piVar5" * identifier) << identifier)) ;) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" identifier = (call_expression "(uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" identifier (argument_list "(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" ( identifier , (binary_expression "(iVar3 >> 0x1f & uVar2) + iVar3" (parenthesized_expression "(iVar3 >> 0x1f & uVar2)" ( (binary_expression "iVar3 >> 0x1f & uVar2" (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) & identifier) )) + identifier) ))) + (binary_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar8 - (iVar3 >> 0x1f))" ( (binary_expression "iVar8 - (iVar3 >> 0x1f)" identifier - (parenthesized_expression "(iVar3 >> 0x1f)" ( (binary_expression "iVar3 >> 0x1f" identifier >> number_literal) ))) ))) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "(CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar3) - uVar13)" ( (binary_expression "CONCAT44(iVar8,iVar3) - uVar13" (call_expression "CONCAT44(iVar8,iVar3)" identifier (argument_list "(iVar8,iVar3)" ( identifier , identifier ))) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) })) (if_statement "if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" { (do_statement "do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);" do (compound_statement "{\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    }" { (expression_statement "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;" (assignment_expression "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" identifier = (binary_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" (cast_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar10 & 0xffffffff)" ( (binary_expression "uVar10 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) + (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" identifier = (binary_expression "((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "((uVar10 << 0x20) - uVar13)" ( (binary_expression "(uVar10 << 0x20) - uVar13" (parenthesized_expression "(uVar10 << 0x20)" ( (binary_expression "uVar10 << 0x20" identifier << number_literal) )) - identifier) )) - (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar13 & 0xffffffff)" ( (binary_expression "uVar13 & 0xffffffff" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar12 >> 0x20)" ( (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier = (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" identifier (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" ( identifier , (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar4 & uVar2)" ( (binary_expression "uVar4 & uVar2" identifier & identifier) ))) )))) ;) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" * identifier) = (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" identifier + number_literal) + identifier)) ;) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" identifier = (binary_expression "piVar6 + -1" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) >> (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) >> (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & IDENT) )) + IDENT) ))) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) - IDENT) )) - (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT && (binary_expression IDENT != LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) << IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & IDENT) )) + IDENT) ))) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) - IDENT) )) - (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT & IDENT) ))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) - IDENT) )) - (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT & IDENT) ))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return ;) })))
(function_definition "void __gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)\n\n{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "__gmpn_preinv_divrem_1_pentium4_sse2\n               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" (identifier "__gmpn_preinv_divrem_1_pentium4_sse2") (parameter_list "(int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,\n               uint param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  bool bVar7;\n  int iVar8;\n  uint uVar9;\n  ulonglong uVar10;\n  int iVar11;\n  longlong lVar12;\n  ulonglong uVar13;\n  ulonglong uVar14;\n  \n  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);\n  uVar14 = (ulonglong)param_7;\n  bVar7 = uVar2 < param_5;\n  uVar9 = 0;\n  if (bVar7) {\n    uVar9 = uVar2;\n  }\n  uVar4 = 0;\n  if (!bVar7) {\n    uVar4 = uVar2;\n  }\n  iVar3 = param_1 + -4 + param_2 * 4;\n  *(uint *)(iVar3 + param_4 * 4) = uVar4;\n  param_4 = param_4 - (uint)bVar7;\n  uVar13 = (ulonglong)param_5 << uVar14;\n  piVar6 = (int *)(iVar3 + param_4 * 4);\n  piVar5 = (int *)(param_3 + -4 + param_4 * 4);\n  uVar10 = (ulonglong)uVar9 << uVar14;\n  iVar3 = param_4 + -1;\n  uVar2 = (uint)uVar13;\n  if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }\n  if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "ulonglong uVar10;" (type_identifier "ulonglong") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "longlong lVar12;" (type_identifier "longlong") (identifier "lVar12") (; ";")) (declaration "ulonglong uVar13;" (type_identifier "ulonglong") (identifier "uVar13") (; ";")) (declaration "ulonglong uVar14;" (type_identifier "ulonglong") (identifier "uVar14") (; ";")) (expression_statement "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);" (assignment_expression "uVar2 = *(uint *)(param_3 + -4 + param_4 * 4)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_3 + -4 + param_4 * 4)" (* "*") (cast_expression "(uint *)(param_3 + -4 + param_4 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + -4 + param_4 * 4)" (( "(") (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" (identifier "param_3") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "param_4 * 4" (identifier "param_4") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar14 = (ulonglong)param_7;" (assignment_expression "uVar14 = (ulonglong)param_7" (identifier "uVar14") (= "=") (cast_expression "(ulonglong)param_7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_7"))) (; ";")) (expression_statement "bVar7 = uVar2 < param_5;" (assignment_expression "bVar7 = uVar2 < param_5" (identifier "bVar7") (= "=") (binary_expression "uVar2 < param_5" (identifier "uVar2") (< "<") (identifier "param_5"))) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar7) {\n    uVar9 = uVar2;\n  }" (if "if") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (compound_statement "{\n    uVar9 = uVar2;\n  }" ({ "{") (expression_statement "uVar9 = uVar2;" (assignment_expression "uVar9 = uVar2" (identifier "uVar9") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (!bVar7) {\n    uVar4 = uVar2;\n  }" (if "if") (parenthesized_expression "(!bVar7)" (( "(") (unary_expression "!bVar7" (! "!") (identifier "bVar7")) () ")")) (compound_statement "{\n    uVar4 = uVar2;\n  }" ({ "{") (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" (identifier "uVar4") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "iVar3 = param_1 + -4 + param_2 * 4;" (assignment_expression "iVar3 = param_1 + -4 + param_2 * 4" (identifier "iVar3") (= "=") (binary_expression "param_1 + -4 + param_2 * 4" (binary_expression "param_1 + -4" (identifier "param_1") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")))) (; ";")) (expression_statement "*(uint *)(iVar3 + param_4 * 4) = uVar4;" (assignment_expression "*(uint *)(iVar3 + param_4 * 4) = uVar4" (pointer_expression "*(uint *)(iVar3 + param_4 * 4)" (* "*") (cast_expression "(uint *)(iVar3 + param_4 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 * 4)" (( "(") (binary_expression "iVar3 + param_4 * 4" (identifier "iVar3") (+ "+") (binary_expression "param_4 * 4" (identifier "param_4") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "param_4 = param_4 - (uint)bVar7;" (assignment_expression "param_4 = param_4 - (uint)bVar7" (identifier "param_4") (= "=") (binary_expression "param_4 - (uint)bVar7" (identifier "param_4") (- "-") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")))) (; ";")) (expression_statement "uVar13 = (ulonglong)param_5 << uVar14;" (assignment_expression "uVar13 = (ulonglong)param_5 << uVar14" (identifier "uVar13") (= "=") (binary_expression "(ulonglong)param_5 << uVar14" (cast_expression "(ulonglong)param_5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_5")) (<< "<<") (identifier "uVar14"))) (; ";")) (expression_statement "piVar6 = (int *)(iVar3 + param_4 * 4);" (assignment_expression "piVar6 = (int *)(iVar3 + param_4 * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar3 + param_4 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + param_4 * 4)" (( "(") (binary_expression "iVar3 + param_4 * 4" (identifier "iVar3") (+ "+") (binary_expression "param_4 * 4" (identifier "param_4") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "piVar5 = (int *)(param_3 + -4 + param_4 * 4);" (assignment_expression "piVar5 = (int *)(param_3 + -4 + param_4 * 4)" (identifier "piVar5") (= "=") (cast_expression "(int *)(param_3 + -4 + param_4 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + -4 + param_4 * 4)" (( "(") (binary_expression "param_3 + -4 + param_4 * 4" (binary_expression "param_3 + -4" (identifier "param_3") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "param_4 * 4" (identifier "param_4") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "uVar10 = (ulonglong)uVar9 << uVar14;" (assignment_expression "uVar10 = (ulonglong)uVar9 << uVar14" (identifier "uVar10") (= "=") (binary_expression "(ulonglong)uVar9 << uVar14" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (<< "<<") (identifier "uVar14"))) (; ";")) (expression_statement "iVar3 = param_4 + -1;" (assignment_expression "iVar3 = param_4 + -1" (identifier "iVar3") (= "=") (binary_expression "param_4 + -1" (identifier "param_4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar2 = (uint)uVar13;" (assignment_expression "uVar2 = (uint)uVar13" (identifier "uVar2") (= "=") (cast_expression "(uint)uVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar13"))) (; ";")) (if_statement "if (param_4 != 0) {\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);\n    iVar8 = (int)uVar10;\n    if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }\n    iVar3 = *piVar5 << uVar14;\n    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n    *piVar6 = uVar9 + 1 + uVar4;\n    piVar6 = piVar6 + -1;\n  }" ({ "{") (expression_statement "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);" (assignment_expression "uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" (identifier "uVar10") (= "=") (binary_expression "CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(uVar9,*piVar5)" (identifier "CONCAT44") (argument_list "(uVar9,*piVar5)" (( "(") (identifier "uVar9") (, ",") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) () ")"))) (>> ">>") (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(0x20 - param_7)" (( "(") (binary_expression "0x20 - param_7" (number_literal "0x20") (- "-") (identifier "param_7")) () ")"))))) (; ";")) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" (identifier "iVar8") (= "=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";")) (if_statement "if (iVar3 != 0) {\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);\n    }" ({ "{") (do_statement "do {\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      } while (bVar7 && iVar3 != 0);" (do "do") (compound_statement "{\n        piVar1 = piVar5 + -1;\n        iVar8 = *piVar5;\n        piVar5 = piVar5 + -1;\n        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));\n        iVar8 = (int)uVar10;\n        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);\n        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n        iVar8 = (int)lVar12 + (uVar4 & uVar2);\n        uVar10 = CONCAT44(uVar4,iVar8);\n        *piVar6 = uVar9 + 1 + uVar4;\n        piVar6 = piVar6 + -1;\n        bVar7 = iVar3 != 0;\n        iVar3 = iVar3 + -1;\n      }" ({ "{") (expression_statement "piVar1 = piVar5 + -1;" (assignment_expression "piVar1 = piVar5 + -1" (identifier "piVar1") (= "=") (binary_expression "piVar5 + -1" (identifier "piVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *piVar5;" (assignment_expression "iVar8 = *piVar5" (identifier "iVar8") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "piVar5 = piVar5 + -1;" (assignment_expression "piVar5 = piVar5 + -1" (identifier "piVar5") (= "=") (binary_expression "piVar5 + -1" (identifier "piVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));" (assignment_expression "iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" (identifier "iVar11") (= "=") (cast_expression "(int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7))" (( "(") (binary_expression "CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7)" (call_expression "CONCAT44(iVar8,*piVar1)" (identifier "CONCAT44") (argument_list "(iVar8,*piVar1)" (( "(") (identifier "iVar8") (, ",") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) () ")"))) (>> ">>") (call_expression "(ulonglong)(0x20 - param_7)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(0x20 - param_7)" (( "(") (binary_expression "0x20 - param_7" (number_literal "0x20") (- "-") (identifier "param_7")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar8 = (int)uVar10;" (assignment_expression "iVar8 = (int)uVar10" (identifier "iVar8") (= "=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (identifier "uVar9") (= "=") (call_expression "(uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (( "(") (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +\n                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" (identifier "CONCAT44") (argument_list "(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11)" (( "(") (identifier "iVar8") (, ",") (binary_expression "(iVar11 >> 0x1f & uVar2) + iVar11" (parenthesized_expression "(iVar11 >> 0x1f & uVar2)" (( "(") (binary_expression "iVar11 >> 0x1f & uVar2" (binary_expression "iVar11 >> 0x1f" (identifier "iVar11") (>> ">>") (number_literal "0x1f")) (& "&") (identifier "uVar2")) () ")")) (+ "+") (identifier "iVar11")) () ")"))) (+ "+") (binary_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(iVar8 - (iVar11 >> 0x1f))" (( "(") (binary_expression "iVar8 - (iVar11 >> 0x1f)" (identifier "iVar8") (- "-") (parenthesized_expression "(iVar11 >> 0x1f)" (( "(") (binary_expression "iVar11 >> 0x1f" (identifier "iVar11") (>> ">>") (number_literal "0x1f")) () ")"))) () ")"))) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6")))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (identifier "lVar12") (= "=") (binary_expression "(CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar11) - uVar13)" (( "(") (binary_expression "CONCAT44(iVar8,iVar11) - uVar13" (call_expression "CONCAT44(iVar8,iVar11)" (identifier "CONCAT44") (argument_list "(iVar8,iVar11)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar11") () ")"))) (- "-") (identifier "uVar13")) () ")")) (- "-") (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (* "*") (parenthesized_expression "(uVar13 & 0xffffffff)" (( "(") (binary_expression "uVar13 & 0xffffffff" (identifier "uVar13") (& "&") (number_literal "0xffffffff")) () ")"))))) (; ";")) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" (identifier "uVar4") (= "=") (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar12")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar8 = (int)lVar12 + (uVar4 & uVar2);" (assignment_expression "iVar8 = (int)lVar12 + (uVar4 & uVar2)" (identifier "iVar8") (= "=") (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar12")) (+ "+") (parenthesized_expression "(uVar4 & uVar2)" (( "(") (binary_expression "uVar4 & uVar2" (identifier "uVar4") (& "&") (identifier "uVar2")) () ")")))) (; ";")) (expression_statement "uVar10 = CONCAT44(uVar4,iVar8);" (assignment_expression "uVar10 = CONCAT44(uVar4,iVar8)" (identifier "uVar10") (= "=") (call_expression "CONCAT44(uVar4,iVar8)" (identifier "CONCAT44") (argument_list "(uVar4,iVar8)" (( "(") (identifier "uVar4") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" (identifier "piVar6") (= "=") (binary_expression "piVar6 + -1" (identifier "piVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar7 = iVar3 != 0;" (assignment_expression "bVar7 = iVar3 != 0" (identifier "bVar7") (= "=") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7 && iVar3 != 0)" (( "(") (binary_expression "bVar7 && iVar3 != 0" (identifier "bVar7") (&& "&&") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar3 = *piVar5 << uVar14;" (assignment_expression "iVar3 = *piVar5 << uVar14" (identifier "iVar3") (= "=") (binary_expression "*piVar5 << uVar14" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (<< "<<") (identifier "uVar14"))) (; ";")) (expression_statement "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (identifier "uVar9") (= "=") (call_expression "(uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20)" (( "(") (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20" (binary_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +\n                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" (identifier "CONCAT44") (argument_list "(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3)" (( "(") (identifier "iVar8") (, ",") (binary_expression "(iVar3 >> 0x1f & uVar2) + iVar3" (parenthesized_expression "(iVar3 >> 0x1f & uVar2)" (( "(") (binary_expression "iVar3 >> 0x1f & uVar2" (binary_expression "iVar3 >> 0x1f" (identifier "iVar3") (>> ">>") (number_literal "0x1f")) (& "&") (identifier "uVar2")) () ")")) (+ "+") (identifier "iVar3")) () ")"))) (+ "+") (binary_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6" (call_expression "(ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f))" (call_expression "(ulonglong)(uint)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(iVar8 - (iVar3 >> 0x1f))" (( "(") (binary_expression "iVar8 - (iVar3 >> 0x1f)" (identifier "iVar8") (- "-") (parenthesized_expression "(iVar3 >> 0x1f)" (( "(") (binary_expression "iVar3 >> 0x1f" (identifier "iVar3") (>> ">>") (number_literal "0x1f")) () ")"))) () ")"))) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6")))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (identifier "lVar12") (= "=") (binary_expression "(CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "(CONCAT44(iVar8,iVar3) - uVar13)" (( "(") (binary_expression "CONCAT44(iVar8,iVar3) - uVar13" (call_expression "CONCAT44(iVar8,iVar3)" (identifier "CONCAT44") (argument_list "(iVar8,iVar3)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar3") () ")"))) (- "-") (identifier "uVar13")) () ")")) (- "-") (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (* "*") (parenthesized_expression "(uVar13 & 0xffffffff)" (( "(") (binary_expression "uVar13 & 0xffffffff" (identifier "uVar13") (& "&") (number_literal "0xffffffff")) () ")"))))) (; ";")) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" (identifier "uVar4") (= "=") (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar12")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" (identifier "uVar10") (= "=") (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" (identifier "CONCAT44") (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" (( "(") (identifier "uVar4") (, ",") (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar12")) (+ "+") (parenthesized_expression "(uVar4 & uVar2)" (( "(") (binary_expression "uVar4 & uVar2" (identifier "uVar4") (& "&") (identifier "uVar2")) () ")"))) () ")")))) (; ";")) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" (identifier "piVar6") (= "=") (binary_expression "piVar6 + -1" (identifier "piVar6") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (if_statement "if (param_2 != 0) {\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);\n  }" ({ "{") (do_statement "do {\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    } while (param_2 != 0);" (do "do") (compound_statement "{\n      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;\n      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);\n      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);\n      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));\n      *piVar6 = uVar9 + 1 + uVar4;\n      piVar6 = piVar6 + -1;\n      param_2 = param_2 + -1;\n    }" ({ "{") (expression_statement "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;" (assignment_expression "uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" (identifier "uVar9") (= "=") (binary_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10" (cast_expression "(int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (( "(") (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar10 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar10 & 0xffffffff)" (( "(") (binary_expression "uVar10 & 0xffffffff" (identifier "uVar10") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6"))) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")))) (; ";")) (expression_statement "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);" (assignment_expression "lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (identifier "lVar12") (= "=") (binary_expression "((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff)" (parenthesized_expression "((uVar10 << 0x20) - uVar13)" (( "(") (binary_expression "(uVar10 << 0x20) - uVar13" (parenthesized_expression "(uVar10 << 0x20)" (( "(") (binary_expression "uVar10 << 0x20" (identifier "uVar10") (<< "<<") (number_literal "0x20")) () ")")) (- "-") (identifier "uVar13")) () ")")) (- "-") (binary_expression "(ulonglong)uVar9 * (uVar13 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (* "*") (parenthesized_expression "(uVar13 & 0xffffffff)" (( "(") (binary_expression "uVar13 & 0xffffffff" (identifier "uVar13") (& "&") (number_literal "0xffffffff")) () ")"))))) (; ";")) (expression_statement "uVar4 = (uint)((ulonglong)lVar12 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)lVar12 >> 0x20)" (identifier "uVar4") (= "=") (call_expression "(uint)((ulonglong)lVar12 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar12 >> 0x20" (cast_expression "(ulonglong)lVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar12")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));" (assignment_expression "uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" (identifier "uVar10") (= "=") (call_expression "CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2))" (identifier "CONCAT44") (argument_list "(uVar4,(int)lVar12 + (uVar4 & uVar2))" (( "(") (identifier "uVar4") (, ",") (binary_expression "(int)lVar12 + (uVar4 & uVar2)" (cast_expression "(int)lVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar12")) (+ "+") (parenthesized_expression "(uVar4 & uVar2)" (( "(") (binary_expression "uVar4 & uVar2" (identifier "uVar4") (& "&") (identifier "uVar2")) () ")"))) () ")")))) (; ";")) (expression_statement "*piVar6 = uVar9 + 1 + uVar4;" (assignment_expression "*piVar6 = uVar9 + 1 + uVar4" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "uVar9 + 1 + uVar4" (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "piVar6 = piVar6 + -1;" (assignment_expression "piVar6 = piVar6 + -1" (identifier "piVar6") (= "=") (binary_expression "piVar6 + -1" (identifier "piVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1
               (int var_5,int var_6,int var_1,int var_2,type_1 var_4,type_1 param_6,
               type_1 var_10)

{
  int *piVar1;
  type_1 var_3;
  int var_7;
  type_1 var_15;
  int *var_11;
  int *var_17;
  bool var_18;
  int var_13;
  type_1 var_16;
  type_2 var_19;
  int var_12;
  type_3 lVar12;
  type_2 var_14;
  type_2 var_8;
  
  var_3 = *(type_1 *)(var_1 + -4 + var_2 * 4);
  var_8 = (type_2)var_10;
  var_18 = var_3 < var_4;
  var_16 = 0;
  if (var_18) {
    var_16 = var_3;
  }
  var_15 = 0;
  if (!var_18) {
    var_15 = var_3;
  }
  var_7 = var_5 + -4 + var_6 * 4;
  *(type_1 *)(var_7 + var_2 * 4) = var_15;
  var_2 = var_2 - (type_1)var_18;
  var_14 = (type_2)var_4 << var_8;
  var_17 = (int *)(var_7 + var_2 * 4);
  var_11 = (int *)(var_1 + -4 + var_2 * 4);
  var_19 = (type_2)var_16 << var_8;
  var_7 = var_2 + -1;
  var_3 = (type_1)var_14;
  if (var_2 != 0) {
    var_19 = var_9(var_16,*var_11) >> (type_2)(0x20 - var_10);
    var_13 = (int)var_19;
    if (var_7 != 0) {
      do {
        piVar1 = var_11 + -1;
        var_13 = *var_11;
        var_11 = var_11 + -1;
        var_12 = (int)(var_9(var_13,*piVar1) >> (type_2)(0x20 - var_10));
        var_13 = (int)var_19;
        var_16 = (type_1)(var_9(var_13,(var_12 >> 0x1f & var_3) + var_12) +
                       (type_2)(type_1)(var_13 - (var_12 >> 0x1f)) * (type_2)param_6 >> 0x20);
        lVar12 = (var_9(var_13,var_12) - var_14) - (type_2)var_16 * (var_14 & 0xffffffff);
        var_15 = (type_1)((type_2)lVar12 >> 0x20);
        var_13 = (int)lVar12 + (var_15 & var_3);
        var_19 = var_9(var_15,var_13);
        *var_17 = var_16 + 1 + var_15;
        var_17 = var_17 + -1;
        var_18 = var_7 != 0;
        var_7 = var_7 + -1;
      } while (var_18 && var_7 != 0);
    }
    var_7 = *var_11 << var_8;
    var_16 = (type_1)(var_9(var_13,(var_7 >> 0x1f & var_3) + var_7) +
                   (type_2)(type_1)(var_13 - (var_7 >> 0x1f)) * (type_2)param_6 >> 0x20);
    lVar12 = (var_9(var_13,var_7) - var_14) - (type_2)var_16 * (var_14 & 0xffffffff);
    var_15 = (type_1)((type_2)lVar12 >> 0x20);
    var_19 = var_9(var_15,(int)lVar12 + (var_15 & var_3));
    *var_17 = var_16 + 1 + var_15;
    var_17 = var_17 + -1;
  }
  if (var_6 != 0) {
    do {
      var_16 = (int)((var_19 & 0xffffffff) * (type_2)param_6 >> 0x20) + (int)var_19;
      lVar12 = ((var_19 << 0x20) - var_14) - (type_2)var_16 * (var_14 & 0xffffffff);
      var_15 = (type_1)((type_2)lVar12 >> 0x20);
      var_19 = var_9(var_15,(int)lVar12 + (var_15 & var_3));
      *var_17 = var_16 + 1 + var_15;
      var_17 = var_17 + -1;
      var_6 = var_6 + -1;
    } while (var_6 != 0);
  }
  return;
}


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

void MASKED
               (int param_1,int param_2,int param_3,int param_4,uint param_5,uint param_6,
               uint param_7)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  bool bVar7;
  int iVar8;
  uint uVar9;
  ulonglong uVar10;
  int iVar11;
  longlong lVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  
  uVar2 = *(uint *)(param_3 + -4 + param_4 * 4);
  uVar14 = (ulonglong)param_7;
  bVar7 = uVar2 < param_5;
  uVar9 = 0;
  if (bVar7) {
    uVar9 = uVar2;
  }
  uVar4 = 0;
  if (!bVar7) {
    uVar4 = uVar2;
  }
  iVar3 = param_1 + -4 + param_2 * 4;
  *(uint *)(iVar3 + param_4 * 4) = uVar4;
  param_4 = param_4 - (uint)bVar7;
  uVar13 = (ulonglong)param_5 << uVar14;
  piVar6 = (int *)(iVar3 + param_4 * 4);
  piVar5 = (int *)(param_3 + -4 + param_4 * 4);
  uVar10 = (ulonglong)uVar9 << uVar14;
  iVar3 = param_4 + -1;
  uVar2 = (uint)uVar13;
  if (param_4 != 0) {
    uVar10 = CONCAT44(uVar9,*piVar5) >> (ulonglong)(0x20 - param_7);
    iVar8 = (int)uVar10;
    if (iVar3 != 0) {
      do {
        piVar1 = piVar5 + -1;
        iVar8 = *piVar5;
        piVar5 = piVar5 + -1;
        iVar11 = (int)(CONCAT44(iVar8,*piVar1) >> (ulonglong)(0x20 - param_7));
        iVar8 = (int)uVar10;
        uVar9 = (uint)(CONCAT44(iVar8,(iVar11 >> 0x1f & uVar2) + iVar11) +
                       (ulonglong)(uint)(iVar8 - (iVar11 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
        lVar12 = (CONCAT44(iVar8,iVar11) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
        uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
        iVar8 = (int)lVar12 + (uVar4 & uVar2);
        uVar10 = CONCAT44(uVar4,iVar8);
        *piVar6 = uVar9 + 1 + uVar4;
        piVar6 = piVar6 + -1;
        bVar7 = iVar3 != 0;
        iVar3 = iVar3 + -1;
      } while (bVar7 && iVar3 != 0);
    }
    iVar3 = *piVar5 << uVar14;
    uVar9 = (uint)(CONCAT44(iVar8,(iVar3 >> 0x1f & uVar2) + iVar3) +
                   (ulonglong)(uint)(iVar8 - (iVar3 >> 0x1f)) * (ulonglong)param_6 >> 0x20);
    lVar12 = (CONCAT44(iVar8,iVar3) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
    uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
    uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
    *piVar6 = uVar9 + 1 + uVar4;
    piVar6 = piVar6 + -1;
  }
  if (param_2 != 0) {
    do {
      uVar9 = (int)((uVar10 & 0xffffffff) * (ulonglong)param_6 >> 0x20) + (int)uVar10;
      lVar12 = ((uVar10 << 0x20) - uVar13) - (ulonglong)uVar9 * (uVar13 & 0xffffffff);
      uVar4 = (uint)((ulonglong)lVar12 >> 0x20);
      uVar10 = CONCAT44(uVar4,(int)lVar12 + (uVar4 & uVar2));
      *piVar6 = uVar9 + 1 + uVar4;
      piVar6 = piVar6 + -1;
      param_2 = param_2 + -1;
    } while (param_2 != 0);
  }
  return;
}

