acdream/docs/research/decompiled/chunk_00650000.c
Erik 4d36756b91 research: full acclient.exe decompilation — 22,225 functions, 688K lines
Complete decompilation of the retail Asheron's Call client using
Ghidra 12.0.4 + pyghidra headless. 22,225 of 22,226 functions
successfully decompiled in 75 seconds.

Output: docs/research/decompiled/ (54 files, 688,567 lines of C)

Key findings already identified:
- CLandBlockStruct::ConstructPolygons at chunk_00530000.c:2270
  (split direction formula with 0x0CCAC033 constants)
- Motion command handlers at chunk_00510000.c (0x45000005 etc)
- Motion interpreter at chunk_00520000.c
- Portal space UI at chunk_004D0000.c and chunk_00560000.c

Next: identify CPhysicsObj, CMotionInterp, collision, and movement
functions by cross-referencing against ACE's C# port.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:25:51 +02:00

18921 lines
863 KiB
C

// Decompiled from acclient.exe — chunk 0x00650000
// Ghidra 12.0.4 + pyghidra headless
// --- FUN_00650070 at 0x00650070 (size: 2699) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00650070(undefined1 (*param_1) [16],undefined8 param_2,undefined8 param_3,
undefined8 param_4,undefined8 param_5,undefined8 param_6,undefined8 param_7,
undefined8 param_8,undefined8 param_9,undefined8 param_10,undefined8 param_11,
undefined8 param_12,undefined8 param_13,undefined8 param_14,undefined8 param_15,
undefined8 param_16)
{
undefined1 (*pauVar1) [16];
undefined1 auVar2 [16];
undefined1 auVar3 [16];
undefined1 auVar4 [16];
undefined1 auVar6 [16];
undefined1 auVar7 [16];
undefined1 auVar8 [16];
undefined1 auVar10 [16];
undefined1 auVar11 [16];
undefined1 auVar12 [16];
undefined1 auVar14 [16];
undefined1 auVar15 [16];
undefined1 auVar16 [16];
undefined1 auVar18 [16];
undefined1 auVar19 [16];
undefined1 auVar20 [16];
undefined1 auVar22 [16];
undefined1 auVar23 [16];
undefined1 auVar24 [16];
undefined1 auVar26 [16];
undefined1 auVar27 [16];
undefined1 auVar28 [16];
undefined1 auVar29 [16];
undefined1 auVar30 [16];
undefined1 auVar31 [16];
undefined1 auVar32 [16];
undefined1 auVar33 [16];
undefined1 auVar34 [16];
undefined1 auVar35 [16];
undefined1 auVar36 [16];
undefined1 auVar37 [16];
undefined1 auVar38 [16];
undefined1 auVar39 [16];
undefined1 auVar40 [16];
undefined1 auVar41 [16];
undefined1 auVar42 [16];
undefined1 auVar43 [16];
undefined1 auVar44 [16];
undefined1 auVar45 [16];
undefined1 auVar46 [16];
undefined1 auVar47 [16];
undefined1 auVar48 [16];
undefined1 auVar49 [16];
undefined1 auVar50 [16];
undefined1 auVar51 [16];
undefined1 auVar52 [16];
undefined1 auVar53 [16];
undefined1 auVar54 [16];
undefined1 auVar55 [16];
undefined1 auVar56 [16];
undefined1 auVar57 [16];
undefined1 auVar58 [16];
undefined1 auVar59 [16];
undefined1 auVar60 [16];
undefined1 auVar61 [16];
undefined1 auVar62 [16];
undefined1 auVar63 [16];
undefined1 auVar64 [16];
undefined1 auVar65 [16];
undefined1 auVar66 [16];
undefined1 auVar67 [16];
undefined1 auVar68 [16];
undefined1 auVar69 [16];
undefined1 auVar70 [16];
undefined1 auVar71 [16];
undefined1 auVar72 [16];
undefined1 auVar73 [16];
undefined1 auVar74 [16];
undefined1 auVar75 [16];
undefined1 auVar76 [16];
undefined1 auVar77 [16];
undefined1 auVar78 [16];
undefined1 auVar79 [16];
undefined1 auVar80 [16];
undefined1 auVar81 [16];
undefined1 auVar82 [16];
undefined1 auVar83 [16];
undefined1 auVar84 [16];
undefined1 auVar85 [16];
undefined1 auVar86 [16];
undefined1 auVar87 [16];
undefined1 auVar88 [16];
undefined1 auVar89 [16];
undefined4 unaff_retaddr;
undefined1 local_80 [128];
undefined1 auVar5 [16];
undefined1 auVar9 [16];
undefined1 auVar13 [16];
undefined1 auVar17 [16];
undefined1 auVar21 [16];
undefined1 auVar25 [16];
pauVar1 = param_1;
if (((uint)param_1 & 0xf) != 0) {
pauVar1 = (undefined1 (*) [16])local_80;
}
if (((uint)param_1 & 0xf) == 0) {
auVar2 = paddsw(param_1[1],param_1[6]);
auVar2 = psllw(auVar2,3);
auVar52 = paddsw(param_1[5],param_1[2]);
auVar70 = paddsw(*param_1,param_1[7]);
auVar35 = psubsw(param_1[1],param_1[6]);
auVar53 = psllw(auVar52,3);
auVar52 = psubsw(auVar2,auVar53);
auVar81 = paddsw(auVar2,auVar53);
auVar53 = paddsw(param_1[3],param_1[4]);
auVar2 = pmulhw(_DAT_00833400,auVar52);
auVar71 = psubsw(auVar70,auVar53);
auVar53 = paddsw(auVar70,auVar53);
auVar71 = psllw(auVar71,3);
auVar2 = paddsw(auVar2,auVar71);
auVar70 = psllw(auVar53,3);
auVar35 = psllw(auVar35,4);
auVar72 = pmulhw(auVar71,_DAT_00833400);
auVar53 = psubsw(param_1[2],param_1[5]);
auVar71 = psubsw(auVar70,auVar81);
auVar2 = pshufhw(auVar2 | _DAT_008333d0,auVar2 | _DAT_008333d0,0x1b);
pauVar1[2] = auVar2;
auVar81 = paddsw(auVar70,auVar81);
auVar70 = psllw(auVar53,4);
auVar2 = psubsw(param_1[3],param_1[4]);
auVar53 = pshufhw(auVar71,auVar71,0x1b);
pauVar1[4] = auVar53;
auVar53 = paddsw(auVar35,auVar70);
auVar53 = pmulhw(auVar53,_DAT_00833430);
auVar35 = psubsw(auVar35,auVar70);
auVar70 = pmulhw(auVar35,_DAT_00833430);
auVar71 = psubsw(auVar72,auVar52);
auVar2 = psllw(auVar2,3);
auVar52 = paddsw(auVar2,auVar70);
auVar35 = psubsw(*param_1,param_1[7]);
auVar70 = psubsw(auVar2,auVar70);
auVar35 = psllw(auVar35,3);
auVar2 = pmulhw(_DAT_008333f0,auVar52);
auVar72 = pshufhw(auVar81,auVar81,0x1b);
*pauVar1 = auVar72;
auVar72 = pmulhw(_DAT_00833410,auVar70);
auVar71 = pshufhw(auVar71 | _DAT_008333d0,auVar71 | _DAT_008333d0,0x1b);
pauVar1[6] = auVar71;
auVar81 = psubsw(auVar35,auVar53 | _DAT_008333d0);
auVar35 = paddsw(auVar35,auVar53 | _DAT_008333d0);
auVar53 = pmulhw(_DAT_00833410,auVar81);
auVar2 = paddsw(auVar2,auVar35);
auVar71 = paddsw(auVar72,auVar70);
auVar35 = pmulhw(auVar35,_DAT_008333f0);
auVar53 = paddsw(auVar53,auVar81);
auVar71 = psubsw(auVar81,auVar71);
auVar2 = pshufhw(auVar2 | _DAT_008333d0,auVar2 | _DAT_008333d0,0x1b);
pauVar1[1] = auVar2;
auVar53 = paddsw(auVar53,auVar70);
auVar2 = pshufhw(auVar71,auVar71,0x1b);
pauVar1[3] = auVar2;
auVar2 = psubsw(auVar35,auVar52);
auVar52 = pshufhw(auVar53,auVar53,0x1b);
pauVar1[5] = auVar52;
auVar2 = pshufhw(auVar2,auVar2,0x1b);
pauVar1[7] = auVar2;
}
else {
auVar2 = param_1[2];
auVar52 = paddsw(param_1[1],param_1[6]);
auVar52 = psllw(auVar52,3);
auVar35 = paddsw(param_1[5],auVar2);
auVar71 = paddsw(*param_1,param_1[7]);
auVar53 = psubsw(param_1[1],param_1[6]);
auVar70 = psllw(auVar35,3);
auVar35 = psubsw(auVar52,auVar70);
auVar81 = paddsw(auVar52,auVar70);
auVar70 = paddsw(param_1[3],param_1[4]);
auVar52 = pmulhw(_DAT_00833400,auVar35);
auVar72 = psubsw(auVar71,auVar70);
auVar70 = paddsw(auVar71,auVar70);
auVar71 = psllw(auVar72,3);
auVar52 = paddsw(auVar52,auVar71);
auVar70 = psllw(auVar70,3);
auVar53 = psllw(auVar53,4);
auVar72 = pmulhw(auVar71,_DAT_00833400);
auVar52 = pshufhw(auVar52 | _DAT_008333d0,auVar52 | _DAT_008333d0,0x1b);
pauVar1[2] = auVar52;
auVar52 = psubsw(auVar70,auVar81);
auVar2 = psubsw(auVar2,param_1[5]);
auVar81 = paddsw(auVar70,auVar81);
auVar71 = psllw(auVar2,4);
auVar2 = psubsw(param_1[3],param_1[4]);
auVar52 = pshufhw(auVar52,auVar52,0x1b);
pauVar1[4] = auVar52;
auVar52 = paddsw(auVar53,auVar71);
auVar70 = pmulhw(auVar52,_DAT_00833430);
auVar52 = psubsw(auVar53,auVar71);
auVar53 = pmulhw(auVar52,_DAT_00833430);
auVar71 = psubsw(auVar72,auVar35);
auVar2 = psllw(auVar2,3);
auVar52 = paddsw(auVar2,auVar53);
auVar35 = psubsw(*param_1,param_1[7]);
auVar53 = psubsw(auVar2,auVar53);
auVar35 = psllw(auVar35,3);
auVar2 = pmulhw(_DAT_008333f0,auVar52);
auVar72 = pshufhw(auVar81,auVar81,0x1b);
*pauVar1 = auVar72;
auVar72 = pmulhw(_DAT_00833410,auVar53);
auVar71 = pshufhw(auVar71 | _DAT_008333d0,auVar71 | _DAT_008333d0,0x1b);
pauVar1[6] = auVar71;
auVar81 = psubsw(auVar35,auVar70 | _DAT_008333d0);
auVar35 = paddsw(auVar35,auVar70 | _DAT_008333d0);
auVar70 = pmulhw(_DAT_00833410,auVar81);
auVar2 = paddsw(auVar2,auVar35);
auVar71 = paddsw(auVar72,auVar53);
auVar35 = pmulhw(auVar35,_DAT_008333f0);
auVar70 = paddsw(auVar70,auVar81);
auVar71 = psubsw(auVar81,auVar71);
auVar2 = pshufhw(auVar2 | _DAT_008333d0,auVar2 | _DAT_008333d0,0x1b);
pauVar1[1] = auVar2;
auVar53 = paddsw(auVar70,auVar53);
auVar2 = pshufhw(auVar71,auVar71,0x1b);
pauVar1[3] = auVar2;
auVar2 = psubsw(auVar35,auVar52);
auVar52 = pshufhw(auVar53,auVar53,0x1b);
pauVar1[5] = auVar52;
auVar2 = pshufhw(auVar2,auVar2,0x1b);
pauVar1[7] = auVar2;
}
if (pauVar1 != (undefined1 (*) [16])&stack0x00000000) {
auVar36._8_8_ = *(undefined8 *)(pauVar1[4] + 8);
auVar36._0_8_ = *(undefined8 *)(*pauVar1 + 8);
auVar3._8_8_ = *(undefined8 *)pauVar1[4];
auVar3._0_8_ = *(undefined8 *)*pauVar1;
auVar2 = paddsw(auVar3,auVar36);
auVar52 = psubsw(auVar3,auVar36);
auVar5._0_8_ = auVar2._0_8_;
auVar5._8_4_ = auVar2._4_4_;
auVar5._12_4_ = auVar52._4_4_;
auVar4._8_8_ = auVar5._8_8_;
auVar4._0_4_ = auVar2._0_4_;
auVar4._4_4_ = auVar52._0_4_;
auVar54._4_4_ = auVar52._8_4_;
auVar54._0_4_ = auVar2._8_4_;
auVar54._8_4_ = auVar2._12_4_;
auVar54._12_4_ = auVar52._12_4_;
auVar37._4_4_ = auVar52._4_4_;
auVar37._0_4_ = auVar2._4_4_;
auVar37._8_4_ = auVar4._0_4_;
auVar37._12_4_ = auVar52._0_4_;
auVar82._4_4_ = auVar52._12_4_;
auVar82._0_4_ = auVar2._12_4_;
auVar82._8_4_ = auVar2._8_4_;
auVar82._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_00833540,auVar4);
auVar53 = pmaddwd(_DAT_00833550,auVar37);
auVar2 = pmaddwd(auVar4,_DAT_00833560);
auVar35 = pmaddwd(auVar37,_DAT_00833570);
auVar27._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar27._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar27._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar27._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar6._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar6._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar6._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar6._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar27,auVar6);
auVar35 = pmaddwd(_DAT_00833540,auVar54);
auVar70 = pmaddwd(_DAT_00833550,auVar82);
auVar52 = pmaddwd(auVar54,_DAT_00833560);
auVar53 = pmaddwd(auVar82,_DAT_00833570);
auVar73._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar73._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar73._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar73._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar55._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar55._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar55._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar55._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar73,auVar55);
*pauVar1 = auVar2;
pauVar1[4] = auVar52;
auVar38._8_8_ = *(undefined8 *)(pauVar1[7] + 8);
auVar38._0_8_ = *(undefined8 *)(pauVar1[1] + 8);
auVar7._8_8_ = *(undefined8 *)pauVar1[7];
auVar7._0_8_ = *(undefined8 *)pauVar1[1];
auVar2 = paddsw(auVar7,auVar38);
auVar52 = psubsw(auVar7,auVar38);
auVar9._0_8_ = auVar2._0_8_;
auVar9._8_4_ = auVar2._4_4_;
auVar9._12_4_ = auVar52._4_4_;
auVar8._8_8_ = auVar9._8_8_;
auVar8._0_4_ = auVar2._0_4_;
auVar8._4_4_ = auVar52._0_4_;
auVar56._4_4_ = auVar52._8_4_;
auVar56._0_4_ = auVar2._8_4_;
auVar56._8_4_ = auVar2._12_4_;
auVar56._12_4_ = auVar52._12_4_;
auVar39._4_4_ = auVar52._4_4_;
auVar39._0_4_ = auVar2._4_4_;
auVar39._8_4_ = auVar8._0_4_;
auVar39._12_4_ = auVar52._0_4_;
auVar83._4_4_ = auVar52._12_4_;
auVar83._0_4_ = auVar2._12_4_;
auVar83._8_4_ = auVar2._8_4_;
auVar83._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_00833580,auVar8);
auVar53 = pmaddwd(_DAT_00833590,auVar39);
auVar2 = pmaddwd(auVar8,_DAT_008335a0);
auVar35 = pmaddwd(auVar39,_DAT_008335b0);
auVar28._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar28._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar28._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar28._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar10._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar10._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar10._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar10._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar28,auVar10);
auVar35 = pmaddwd(_DAT_00833580,auVar56);
auVar70 = pmaddwd(_DAT_00833590,auVar83);
auVar52 = pmaddwd(auVar56,_DAT_008335a0);
auVar53 = pmaddwd(auVar83,_DAT_008335b0);
auVar74._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar74._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar74._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar74._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar57._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar57._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar57._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar57._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar74,auVar57);
pauVar1[1] = auVar2;
pauVar1[7] = auVar52;
auVar40._8_8_ = *(undefined8 *)(pauVar1[6] + 8);
auVar40._0_8_ = *(undefined8 *)(pauVar1[2] + 8);
auVar11._8_8_ = *(undefined8 *)pauVar1[6];
auVar11._0_8_ = *(undefined8 *)pauVar1[2];
auVar2 = paddsw(auVar11,auVar40);
auVar52 = psubsw(auVar11,auVar40);
auVar13._0_8_ = auVar2._0_8_;
auVar13._8_4_ = auVar2._4_4_;
auVar13._12_4_ = auVar52._4_4_;
auVar12._8_8_ = auVar13._8_8_;
auVar12._0_4_ = auVar2._0_4_;
auVar12._4_4_ = auVar52._0_4_;
auVar58._4_4_ = auVar52._8_4_;
auVar58._0_4_ = auVar2._8_4_;
auVar58._8_4_ = auVar2._12_4_;
auVar58._12_4_ = auVar52._12_4_;
auVar41._4_4_ = auVar52._4_4_;
auVar41._0_4_ = auVar2._4_4_;
auVar41._8_4_ = auVar12._0_4_;
auVar41._12_4_ = auVar52._0_4_;
auVar84._4_4_ = auVar52._12_4_;
auVar84._0_4_ = auVar2._12_4_;
auVar84._8_4_ = auVar2._8_4_;
auVar84._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_008335c0,auVar12);
auVar53 = pmaddwd(_DAT_008335d0,auVar41);
auVar2 = pmaddwd(auVar12,_DAT_008335e0);
auVar35 = pmaddwd(auVar41,_DAT_008335f0);
auVar29._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar29._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar29._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar29._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar14._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar14._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar14._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar14._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar29,auVar14);
auVar35 = pmaddwd(_DAT_008335c0,auVar58);
auVar70 = pmaddwd(_DAT_008335d0,auVar84);
auVar52 = pmaddwd(auVar58,_DAT_008335e0);
auVar53 = pmaddwd(auVar84,_DAT_008335f0);
auVar75._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar75._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar75._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar75._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar59._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar59._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar59._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar59._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar75,auVar59);
pauVar1[2] = auVar2;
pauVar1[6] = auVar52;
auVar42._8_8_ = *(undefined8 *)(pauVar1[5] + 8);
auVar42._0_8_ = *(undefined8 *)(pauVar1[3] + 8);
auVar15._8_8_ = *(undefined8 *)pauVar1[5];
auVar15._0_8_ = *(undefined8 *)pauVar1[3];
auVar2 = paddsw(auVar15,auVar42);
auVar52 = psubsw(auVar15,auVar42);
auVar17._0_8_ = auVar2._0_8_;
auVar17._8_4_ = auVar2._4_4_;
auVar17._12_4_ = auVar52._4_4_;
auVar16._8_8_ = auVar17._8_8_;
auVar16._0_4_ = auVar2._0_4_;
auVar16._4_4_ = auVar52._0_4_;
auVar60._4_4_ = auVar52._8_4_;
auVar60._0_4_ = auVar2._8_4_;
auVar60._8_4_ = auVar2._12_4_;
auVar60._12_4_ = auVar52._12_4_;
auVar43._4_4_ = auVar52._4_4_;
auVar43._0_4_ = auVar2._4_4_;
auVar43._8_4_ = auVar16._0_4_;
auVar43._12_4_ = auVar52._0_4_;
auVar85._4_4_ = auVar52._12_4_;
auVar85._0_4_ = auVar2._12_4_;
auVar85._8_4_ = auVar2._8_4_;
auVar85._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_00833600,auVar16);
auVar53 = pmaddwd(_DAT_00833610,auVar43);
auVar2 = pmaddwd(auVar16,_DAT_00833620);
auVar35 = pmaddwd(auVar43,_DAT_00833630);
auVar30._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar30._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar30._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar30._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar18._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar18._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar18._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar18._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar30,auVar18);
auVar35 = pmaddwd(_DAT_00833600,auVar60);
auVar70 = pmaddwd(_DAT_00833610,auVar85);
auVar52 = pmaddwd(auVar60,_DAT_00833620);
auVar53 = pmaddwd(auVar85,_DAT_00833630);
auVar76._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar76._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar76._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar76._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar61._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar61._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar61._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar61._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar76,auVar61);
pauVar1[3] = auVar2;
pauVar1[5] = auVar52;
return;
}
auVar2._4_4_ = param_1;
auVar2._0_4_ = unaff_retaddr;
auVar44._8_8_ = param_10;
auVar44._0_8_ = param_2;
auVar2._8_8_ = param_9;
auVar52 = paddsw(auVar2,auVar44);
auVar2 = psubsw(auVar2,auVar44);
auVar35._0_8_ = auVar52._0_8_;
auVar35._8_4_ = auVar52._4_4_;
auVar35._12_4_ = auVar2._4_4_;
auVar53._8_8_ = auVar35._8_8_;
auVar53._0_4_ = auVar52._0_4_;
auVar53._4_4_ = auVar2._0_4_;
auVar62._4_4_ = auVar2._8_4_;
auVar62._0_4_ = auVar52._8_4_;
auVar62._8_4_ = auVar52._12_4_;
auVar62._12_4_ = auVar2._12_4_;
auVar45._4_4_ = auVar2._4_4_;
auVar45._0_4_ = auVar52._4_4_;
auVar45._8_4_ = auVar53._0_4_;
auVar45._12_4_ = auVar2._0_4_;
auVar86._4_4_ = auVar2._12_4_;
auVar86._0_4_ = auVar52._12_4_;
auVar86._8_4_ = auVar52._8_4_;
auVar86._12_4_ = auVar2._8_4_;
auVar52 = pmaddwd(_DAT_00833540,auVar53);
auVar70 = pmaddwd(_DAT_00833550,auVar45);
auVar2 = pmaddwd(auVar53,_DAT_00833560);
auVar35 = pmaddwd(auVar45,_DAT_00833570);
auVar31._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar31._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar31._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar31._12_4_ = auVar52._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar52._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar52._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar52._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar52._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar31,auVar52);
auVar35 = pmaddwd(_DAT_00833540,auVar62);
auVar70 = pmaddwd(_DAT_00833550,auVar86);
auVar52 = pmaddwd(auVar62,_DAT_00833560);
auVar53 = pmaddwd(auVar86,_DAT_00833570);
auVar77._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar77._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar77._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar77._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar63._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar63._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar63._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar63._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar77,auVar63);
*(longlong *)*param_1 = auVar2._0_8_;
*(longlong *)(*param_1 + 8) = auVar2._8_8_;
*(longlong *)param_1[4] = auVar52._0_8_;
*(longlong *)(param_1[4] + 8) = auVar52._8_8_;
auVar46._8_8_ = param_16;
auVar46._0_8_ = param_4;
auVar70._8_8_ = param_15;
auVar70._0_8_ = param_3;
auVar2 = paddsw(auVar70,auVar46);
auVar52 = psubsw(auVar70,auVar46);
auVar72._0_8_ = auVar2._0_8_;
auVar72._8_4_ = auVar2._4_4_;
auVar72._12_4_ = auVar52._4_4_;
auVar71._8_8_ = auVar72._8_8_;
auVar71._0_4_ = auVar2._0_4_;
auVar71._4_4_ = auVar52._0_4_;
auVar64._4_4_ = auVar52._8_4_;
auVar64._0_4_ = auVar2._8_4_;
auVar64._8_4_ = auVar2._12_4_;
auVar64._12_4_ = auVar52._12_4_;
auVar47._4_4_ = auVar52._4_4_;
auVar47._0_4_ = auVar2._4_4_;
auVar47._8_4_ = auVar71._0_4_;
auVar47._12_4_ = auVar52._0_4_;
auVar87._4_4_ = auVar52._12_4_;
auVar87._0_4_ = auVar2._12_4_;
auVar87._8_4_ = auVar2._8_4_;
auVar87._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_00833580,auVar71);
auVar53 = pmaddwd(_DAT_00833590,auVar47);
auVar2 = pmaddwd(auVar71,_DAT_008335a0);
auVar35 = pmaddwd(auVar47,_DAT_008335b0);
auVar32._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar32._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar32._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar32._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar81._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar81._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar81._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar81._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar32,auVar81);
auVar35 = pmaddwd(_DAT_00833580,auVar64);
auVar70 = pmaddwd(_DAT_00833590,auVar87);
auVar52 = pmaddwd(auVar64,_DAT_008335a0);
auVar53 = pmaddwd(auVar87,_DAT_008335b0);
auVar78._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar78._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar78._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar78._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar65._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar65._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar65._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar65._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar78,auVar65);
*(longlong *)param_1[1] = auVar2._0_8_;
*(longlong *)(param_1[1] + 8) = auVar2._8_8_;
*(longlong *)param_1[7] = auVar52._0_8_;
*(longlong *)(param_1[7] + 8) = auVar52._8_8_;
auVar48._8_8_ = param_14;
auVar48._0_8_ = param_6;
auVar19._8_8_ = param_13;
auVar19._0_8_ = param_5;
auVar2 = paddsw(auVar19,auVar48);
auVar52 = psubsw(auVar19,auVar48);
auVar21._0_8_ = auVar2._0_8_;
auVar21._8_4_ = auVar2._4_4_;
auVar21._12_4_ = auVar52._4_4_;
auVar20._8_8_ = auVar21._8_8_;
auVar20._0_4_ = auVar2._0_4_;
auVar20._4_4_ = auVar52._0_4_;
auVar66._4_4_ = auVar52._8_4_;
auVar66._0_4_ = auVar2._8_4_;
auVar66._8_4_ = auVar2._12_4_;
auVar66._12_4_ = auVar52._12_4_;
auVar49._4_4_ = auVar52._4_4_;
auVar49._0_4_ = auVar2._4_4_;
auVar49._8_4_ = auVar20._0_4_;
auVar49._12_4_ = auVar52._0_4_;
auVar88._4_4_ = auVar52._12_4_;
auVar88._0_4_ = auVar2._12_4_;
auVar88._8_4_ = auVar2._8_4_;
auVar88._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_008335c0,auVar20);
auVar53 = pmaddwd(_DAT_008335d0,auVar49);
auVar2 = pmaddwd(auVar20,_DAT_008335e0);
auVar35 = pmaddwd(auVar49,_DAT_008335f0);
auVar33._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar33._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar33._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar33._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar22._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar22._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar22._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar22._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar33,auVar22);
auVar35 = pmaddwd(_DAT_008335c0,auVar66);
auVar70 = pmaddwd(_DAT_008335d0,auVar88);
auVar52 = pmaddwd(auVar66,_DAT_008335e0);
auVar53 = pmaddwd(auVar88,_DAT_008335f0);
auVar79._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar79._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar79._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar79._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar67._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar67._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar67._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar67._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar79,auVar67);
*(longlong *)param_1[2] = auVar2._0_8_;
*(longlong *)(param_1[2] + 8) = auVar2._8_8_;
*(longlong *)param_1[6] = auVar52._0_8_;
*(longlong *)(param_1[6] + 8) = auVar52._8_8_;
auVar50._8_8_ = param_12;
auVar50._0_8_ = param_8;
auVar23._8_8_ = param_11;
auVar23._0_8_ = param_7;
auVar2 = paddsw(auVar23,auVar50);
auVar52 = psubsw(auVar23,auVar50);
auVar25._0_8_ = auVar2._0_8_;
auVar25._8_4_ = auVar2._4_4_;
auVar25._12_4_ = auVar52._4_4_;
auVar24._8_8_ = auVar25._8_8_;
auVar24._0_4_ = auVar2._0_4_;
auVar24._4_4_ = auVar52._0_4_;
auVar68._4_4_ = auVar52._8_4_;
auVar68._0_4_ = auVar2._8_4_;
auVar68._8_4_ = auVar2._12_4_;
auVar68._12_4_ = auVar52._12_4_;
auVar51._4_4_ = auVar52._4_4_;
auVar51._0_4_ = auVar2._4_4_;
auVar51._8_4_ = auVar24._0_4_;
auVar51._12_4_ = auVar52._0_4_;
auVar89._4_4_ = auVar52._12_4_;
auVar89._0_4_ = auVar2._12_4_;
auVar89._8_4_ = auVar2._8_4_;
auVar89._12_4_ = auVar52._8_4_;
auVar52 = pmaddwd(_DAT_00833600,auVar24);
auVar53 = pmaddwd(_DAT_00833610,auVar51);
auVar2 = pmaddwd(auVar24,_DAT_00833620);
auVar35 = pmaddwd(auVar51,_DAT_00833630);
auVar34._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar34._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar34._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar34._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar26._0_4_ = auVar2._0_4_ + (int)DAT_008333e0 + auVar35._0_4_ >> 0x14;
auVar26._4_4_ = auVar2._4_4_ + DAT_008333e0._4_4_ + auVar35._4_4_ >> 0x14;
auVar26._8_4_ = auVar2._8_4_ + iRam008333e8 + auVar35._8_4_ >> 0x14;
auVar26._12_4_ = auVar2._12_4_ + iRam008333ec + auVar35._12_4_ >> 0x14;
auVar2 = packssdw(auVar34,auVar26);
auVar35 = pmaddwd(_DAT_00833600,auVar68);
auVar70 = pmaddwd(_DAT_00833610,auVar89);
auVar52 = pmaddwd(auVar68,_DAT_00833620);
auVar53 = pmaddwd(auVar89,_DAT_00833630);
auVar80._0_4_ = auVar35._0_4_ + (int)DAT_008333e0 + auVar70._0_4_ >> 0x14;
auVar80._4_4_ = auVar35._4_4_ + DAT_008333e0._4_4_ + auVar70._4_4_ >> 0x14;
auVar80._8_4_ = auVar35._8_4_ + iRam008333e8 + auVar70._8_4_ >> 0x14;
auVar80._12_4_ = auVar35._12_4_ + iRam008333ec + auVar70._12_4_ >> 0x14;
auVar69._0_4_ = auVar52._0_4_ + (int)DAT_008333e0 + auVar53._0_4_ >> 0x14;
auVar69._4_4_ = auVar52._4_4_ + DAT_008333e0._4_4_ + auVar53._4_4_ >> 0x14;
auVar69._8_4_ = auVar52._8_4_ + iRam008333e8 + auVar53._8_4_ >> 0x14;
auVar69._12_4_ = auVar52._12_4_ + iRam008333ec + auVar53._12_4_ >> 0x14;
auVar52 = packssdw(auVar80,auVar69);
*(longlong *)param_1[3] = auVar2._0_8_;
*(longlong *)(param_1[3] + 8) = auVar2._8_8_;
*(longlong *)param_1[5] = auVar52._0_8_;
*(longlong *)(param_1[5] + 8) = auVar52._8_8_;
return;
}
// --- FUN_00650b00 at 0x00650B00 (size: 76) ---
longlong __fastcall FUN_00650b00(undefined4 param_1,uint param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
int local_8;
iVar3 = *(int *)(param_3 + 0x14);
iVar2 = *(int *)(param_3 + 0x10) - iVar3;
iVar1 = FUN_00619550(*(undefined4 *)(param_3 + 0x3c),iVar3,iVar2,&local_8);
if ((iVar1 != 0) && (iVar2 == local_8)) {
*(int *)(param_3 + 0x10) = iVar3;
return (ulonglong)param_2 << 0x20;
}
return CONCAT44(param_2,0xffffffe9);
}
// --- FUN_00650b50 at 0x00650B50 (size: 841) ---
longlong __fastcall FUN_00650b50(undefined4 param_1,uint param_2,undefined4 param_3,int param_4)
{
uint *puVar1;
uint uVar2;
uint uVar3;
int iVar4;
int unaff_ESI;
int iVar5;
ulonglong uVar6;
undefined8 in_MM7;
do {
iVar4 = param_4 + *(int *)(unaff_ESI + 0xc);
if (iVar4 < 0x41) {
*(int *)(unaff_ESI + 0xc) = iVar4;
return (ulonglong)param_2 << 0x20;
}
iVar4 = iVar4 - param_4;
puVar1 = *(uint **)(unaff_ESI + 0x10);
if (3 < *(int *)(unaff_ESI + 0x18) - (int)(puVar1 + 1)) {
uVar6 = psllw(in_MM7,8);
uVar6 = uVar6 | CONCAT26((ushort)((ulonglong)in_MM7 >> 0x38),
CONCAT24((ushort)((ulonglong)in_MM7 >> 0x20) >> 8,
CONCAT22((ushort)((ulonglong)in_MM7 >> 0x10) >> 8,
(ushort)in_MM7 >> 8)));
uVar6 = pshufw(uVar6,uVar6,0x1b);
iVar5 = CONCAT13(-((char)(uVar6 >> 0x18) == -1),
CONCAT12(-((char)(uVar6 >> 0x10) == -1),
CONCAT11(-((char)(uVar6 >> 8) == -1),-((char)uVar6 == -1))));
uVar2 = (uint)uVar6;
if (iVar5 == 0) {
*puVar1 = uVar2;
iVar4 = iVar4 + -0x20;
*(uint **)(unaff_ESI + 0x10) = puVar1 + 1;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
}
else if (iVar5 == -0x1000000) {
*puVar1 = uVar2;
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == 0xff0000) {
*puVar1 = uVar2 & (uint)DAT_00833b78;
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == 0xff00) {
*puVar1 = uVar2 & (uint)DAT_00833b80 | (uint)((uVar6 & DAT_00833b88) << 8);
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else {
uVar3 = (uint)DAT_00833b40;
if ((iVar5 == 0xff) || (iVar5 == -0xffff01)) {
*puVar1 = (uint)((uVar6 & DAT_00833b60) << 8) | uVar3;
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == -0xff0100) {
*puVar1 = (uint)(ushort)uVar6 | (uint)((uVar6 & DAT_00833b88) << 8);
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == 0xff00ff) {
*puVar1 = (uint)((uVar6 & DAT_00833b60) << 8) | uVar3;
iVar4 = iVar4 + -0x10;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == 0xffff00) {
*puVar1 = uVar2 & (uint)DAT_00833b80 | (uint)DAT_00833b90;
iVar4 = iVar4 + -0x10;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if (iVar5 == -0x10000) {
*puVar1 = uVar2 & (uint)DAT_00833b78;
iVar4 = iVar4 + -0x18;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else if ((iVar5 == 0xffff) || (iVar5 == -0xff0001)) {
*puVar1 = (uint)DAT_00833b50;
iVar4 = iVar4 + -0x10;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
else {
if (iVar5 != -0xff01) {
return CONCAT44(param_2,0xffffffe8);
}
*puVar1 = (uint)((uVar6 & DAT_00833b60) << 8) | uVar3;
iVar4 = iVar4 + -0x10;
*(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 4;
*(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 4;
*(int *)(unaff_ESI + 0xc) = iVar4;
}
}
*(int *)(unaff_ESI + 0xc) = iVar4 + param_4;
return (ulonglong)param_2 << 0x20;
}
if (*(int *)(unaff_ESI + 0x3c) == 0) {
return CONCAT44(param_2,0xffffffe4);
}
iVar4 = FUN_00650b00();
} while (iVar4 == 0);
return CONCAT44(param_2,iVar4);
}
// --- FUN_00650eb0 at 0x00650EB0 (size: 385) ---
undefined8 __fastcall
FUN_00650eb0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,int param_5,
short *param_6,short *param_7)
{
short sVar1;
short sVar2;
int iVar3;
int iVar4;
undefined4 extraout_ECX;
undefined4 extraout_ECX_00;
int iVar5;
undefined8 uVar6;
undefined8 uVar7;
int local_18;
int local_14;
sVar1 = *param_7;
sVar2 = *param_6;
*param_6 = sVar1;
iVar3 = (int)sVar1 - (int)sVar2;
if ((int)sVar1 < (int)sVar2) {
iVar3 = -iVar3;
}
iVar4 = iVar3;
if (0xff < iVar3) {
iVar4 = iVar3 >> 8;
}
iVar5 = *(int *)(&DAT_00833740 + iVar4 * 4);
if (0xff < iVar3) {
iVar5 = *(int *)(&DAT_00833740 + iVar4 * 4) + 8;
}
uVar6 = *param_3;
uVar7 = FUN_00650b50(*(undefined2 *)(param_4 + 0x408 + iVar5 * 2),
*(undefined4 *)(param_4 + 8 + iVar5 * 4));
iVar3 = (int)uVar7;
if (iVar3 == 0) {
iVar3 = FUN_00650b50((int)((ulonglong)uVar7 >> 0x20),extraout_ECX);
if (iVar3 == 0) {
local_14 = 0;
local_18 = 1;
do {
iVar4 = (int)param_7[(&DAT_00833640)[local_18]];
if (iVar4 == 0) {
local_14 = local_14 + 1;
}
else {
for (; 0xf < local_14; local_14 = local_14 + -0x10) {
iVar3 = FUN_00650b50(*(undefined2 *)(param_5 + 0x5e8),*(undefined4 *)(param_5 + 0x3c8));
if (iVar3 != 0) goto LAB_00651027;
}
if (iVar4 < 0) {
iVar4 = -iVar4;
}
iVar3 = iVar4;
if (0xff < iVar4) {
iVar3 = iVar4 >> 8;
}
iVar5 = *(int *)(&DAT_00833740 + iVar3 * 4);
if (0xff < iVar4) {
iVar5 = *(int *)(&DAT_00833740 + iVar3 * 4) + 8;
}
iVar5 = local_14 * 0x10 + iVar5;
uVar7 = FUN_00650b50(*(undefined2 *)(param_5 + 0x408 + iVar5 * 2),
*(undefined4 *)(param_5 + 8 + iVar5 * 4));
iVar3 = (int)uVar7;
if (iVar3 != 0) goto LAB_00651027;
iVar3 = FUN_00650b50((int)((ulonglong)uVar7 >> 0x20),extraout_ECX_00);
if (iVar3 != 0) goto LAB_00651027;
local_14 = 0;
}
local_18 = local_18 + 1;
} while (local_18 < 0x40);
if (local_14 != 0) {
iVar3 = FUN_00650b50(*(undefined2 *)(param_5 + 0x408),*(undefined4 *)(param_5 + 8));
if (iVar3 != 0) goto LAB_00651027;
}
iVar3 = 0;
}
}
LAB_00651027:
*param_3 = uVar6;
return CONCAT44(param_2,iVar3);
}
// --- FUN_00651040 at 0x00651040 (size: 607) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00651040(undefined4 param_1,undefined4 param_2,int param_3,ulonglong *param_4,uint *param_5,
uint *param_6)
{
uint uVar1;
uint uVar2;
uint uVar3;
undefined4 in_EAX;
uint uVar4;
uint uVar5;
uint uVar6;
ulonglong *puVar7;
short sVar8;
short sVar12;
short sVar13;
ulonglong uVar9;
short sVar14;
ulonglong uVar10;
ulonglong uVar11;
uint uVar15;
ulonglong uVar16;
ulonglong uVar20;
ulonglong uVar21;
undefined8 uVar22;
int *piStack_2c;
int local_10;
uint local_c;
ulonglong *local_8;
ushort uVar17;
ushort uVar18;
ushort uVar19;
local_8 = param_4;
piStack_2c = &DAT_00833640;
local_10 = 0x10;
local_c = 0;
do {
uVar3 = local_c;
uVar5 = *(uint *)(param_3 + *piStack_2c * 2);
uVar1 = *(uint *)(param_3 + piStack_2c[1] * 2);
uVar15 = *(uint *)(param_3 + piStack_2c[2] * 2);
uVar2 = *(uint *)(param_3 + piStack_2c[3] * 2);
uVar4 = uVar5 & 0xffff | uVar1 << 0x10;
uVar6 = uVar15 & 0xffff | uVar2 << 0x10;
if (uVar4 == 0 && uVar6 == 0) {
local_c = local_c + 4;
}
else {
uVar5 = CONCAT22(-(ushort)((short)uVar1 == 0),-(ushort)((short)uVar5 == 0));
uVar15 = CONCAT22(-(ushort)((short)uVar2 == 0),-(ushort)((short)uVar15 == 0));
if (uVar5 != 0 || uVar15 != 0) {
uVar5 = ~uVar5 & 0x20001 | ~uVar15 & 0x80004;
/* WARNING: Could not recover jumptable at 0x006510fe. Too many branches */
/* WARNING: Treating indirect jump as call */
uVar22 = (*(code *)(&DAT_00651100 + ((uVar5 >> 0x10 | uVar5 & 0xffff) - 1) * 8))();
return uVar22;
}
local_c = 0;
*(uint *)((int)local_8 + 0x104) = 0;
*(uint *)local_8 = uVar4;
*(uint *)((int)local_8 + 4) = uVar1 & 0xffff;
*(uint *)(local_8 + 0x21) = 0;
*(uint *)(local_8 + 0x20) = uVar3;
*(uint *)(local_8 + 1) = uVar6;
*(uint *)((int)local_8 + 0x10c) = 0;
*(uint *)((int)local_8 + 0xc) = uVar2 & 0xffff;
local_8 = local_8 + 2;
}
piStack_2c = piStack_2c + 4;
local_10 = local_10 + -1;
} while (local_10 != 0);
uVar5 = (uint)((int)local_8 - (int)param_4) >> 2;
*param_6 = uVar5;
uVar5 = uVar5 + 4 & 0xfc;
puVar7 = param_4;
do {
uVar9 = packssdw(CONCAT44((int)(short)(*param_4 >> 0x20),(int)(short)*param_4),
CONCAT44((int)(short)(param_4[1] >> 0x20),(int)(short)param_4[1]));
sVar8 = (short)uVar9;
sVar12 = (short)(uVar9 >> 0x10);
sVar13 = (short)(uVar9 >> 0x20);
sVar14 = (short)(uVar9 >> 0x30);
uVar11 = CONCAT26(-(ushort)(0 < sVar14),
CONCAT24(-(ushort)(0 < sVar13),
CONCAT22(-(ushort)(0 < sVar12),-(ushort)(0 < sVar8))));
uVar10 = ~uVar11 & CONCAT26(-sVar14,CONCAT24(-sVar13,CONCAT22(-sVar12,-sVar8))) | uVar9 & uVar11
;
uVar17 = (ushort)(uVar10 >> 0x10);
uVar18 = (ushort)(uVar10 >> 0x20);
uVar19 = (ushort)(uVar10 >> 0x30);
uVar16 = CONCAT26(-(ushort)((short)((ulonglong)DAT_00833bc8 >> 0x30) < (short)uVar19),
CONCAT24(-(ushort)((short)((ulonglong)DAT_00833bc8 >> 0x20) < (short)uVar18),
CONCAT22(-(ushort)((short)((ulonglong)DAT_00833bc8 >> 0x10) <
(short)uVar17),
-(ushort)((short)DAT_00833bc8 < (short)(ushort)uVar10))));
*puVar7 = ~uVar11 & CONCAT26(sVar14 - (short)(DAT_00833b98 >> 0x30),
CONCAT24(sVar13 - (short)(DAT_00833b98 >> 0x20),
CONCAT22(sVar12 - (short)(DAT_00833b98 >> 0x10),
sVar8 - (short)DAT_00833b98))) | uVar9 & uVar11;
uVar9 = CONCAT26(uVar19 >> 8,CONCAT24(uVar18 >> 8,CONCAT22(uVar17 >> 8,(ushort)uVar10 >> 8))) &
uVar16;
uVar11 = uVar9 | ~uVar16 & uVar10;
uVar9 = uVar9 | ~uVar16 & uVar10;
uVar21 = CONCAT26(-(ushort)((short)((ulonglong)DAT_00833bc0 >> 0x30) < (short)(uVar9 >> 0x30)),
CONCAT24(-(ushort)((short)((ulonglong)DAT_00833bc0 >> 0x20) <
(short)(uVar9 >> 0x20)),
CONCAT22(-(ushort)((short)((ulonglong)DAT_00833bc0 >> 0x10) <
(short)(uVar9 >> 0x10)),
-(ushort)((short)DAT_00833bc0 < (short)uVar9))));
uVar9 = CONCAT26((ushort)(uVar11 >> 0x34),
CONCAT24((ushort)(uVar11 >> 0x20) >> 4,
CONCAT22((ushort)(uVar11 >> 0x10) >> 4,(ushort)uVar11 >> 4))) & uVar21
;
uVar10 = uVar9 | ~uVar21 & uVar11;
uVar9 = uVar9 | ~uVar21 & uVar11;
uVar20 = CONCAT26(-(ushort)((short)((ulonglong)DAT_00833ba8 >> 0x30) < (short)(uVar9 >> 0x30)),
CONCAT24(-(ushort)((short)((ulonglong)DAT_00833ba8 >> 0x20) <
(short)(uVar9 >> 0x20)),
CONCAT22(-(ushort)((short)((ulonglong)DAT_00833ba8 >> 0x10) <
(short)(uVar9 >> 0x10)),
-(ushort)((short)DAT_00833ba8 < (short)uVar9))));
uVar9 = CONCAT26((ushort)(uVar10 >> 0x32),
CONCAT24((ushort)(uVar10 >> 0x20) >> 2,
CONCAT22((ushort)(uVar10 >> 0x10) >> 2,(ushort)uVar10 >> 2))) & uVar20
;
uVar11 = uVar9 | ~uVar20 & uVar10;
uVar9 = uVar9 | ~uVar20 & uVar10;
uVar10 = CONCAT26(-(ushort)((short)(DAT_00833b98 >> 0x30) < (short)(uVar9 >> 0x30)),
CONCAT24(-(ushort)((short)(DAT_00833b98 >> 0x20) < (short)(uVar9 >> 0x20)),
CONCAT22(-(ushort)((short)(DAT_00833b98 >> 0x10) <
(short)(uVar9 >> 0x10)),
-(ushort)((short)DAT_00833b98 < (short)uVar9))));
uVar9 = CONCAT26((ushort)(uVar11 >> 0x31),
CONCAT24((ushort)(uVar11 >> 0x20) >> 1,
CONCAT22((ushort)(uVar11 >> 0x10) >> 1,(ushort)uVar11 >> 1))) & uVar10
| ~uVar10 & uVar11;
uVar11 = uVar16 & _DAT_00833bb8 | uVar21 & _DAT_00833bb0 |
uVar10 & DAT_00833b98 | uVar20 & _DAT_00833ba0;
param_4 = param_4 + 2;
puVar7[0x40] = CONCAT26((short)(uVar9 >> 0x30) + (short)(uVar11 >> 0x30),
CONCAT24((short)(uVar9 >> 0x20) + (short)(uVar11 >> 0x20),
CONCAT22((short)(uVar9 >> 0x10) + (short)(uVar11 >> 0x10),
(short)uVar9 + (short)uVar11)));
uVar5 = uVar5 - 4;
puVar7 = puVar7 + 1;
} while (uVar5 != 0);
*param_5 = local_c;
return CONCAT44(param_2,in_EAX);
}
// --- FUN_006515a0 at 0x006515A0 (size: 109) ---
undefined4 FUN_006515a0(int param_1)
{
int iVar1;
undefined4 local_14 [4];
iVar1 = FUN_00619530(*(undefined4 *)(param_1 + 0x3c),param_1 + 0x40,0x1000,local_14);
*(undefined4 *)(param_1 + 0x24) = local_14[0];
if ((iVar1 != 0) && (*(int *)(param_1 + 0x24) == 0)) {
return 0xfffffff5;
}
*(int *)(param_1 + 0x10) = param_1 + 0x40;
return 0;
}
// --- FUN_00651610 at 0x00651610 (size: 645) ---
undefined4 FUN_00651610(ulonglong *param_1,int param_2,int param_3,short *param_4)
{
undefined4 uVar1;
undefined4 uVar2;
ulonglong uVar3;
ulonglong uVar4;
uint uVar5;
int iVar6;
int iVar7;
uint uVar8;
int iVar9;
ulonglong uVar10;
ulonglong extraout_MM1;
ulonglong extraout_MM1_00;
ulonglong extraout_MM1_01;
ulonglong extraout_MM1_02;
ulonglong extraout_MM1_03;
ulonglong extraout_MM1_04;
ulonglong uVar11;
undefined8 uVar12;
ulonglong uVar13;
uVar1 = *(undefined4 *)((int)param_1 + 0x1c);
uVar2 = *(undefined4 *)((int)param_1 + 0x24);
uVar3 = param_1[6];
uVar10 = *param_1;
iVar9 = *(int *)((int)param_1 + 0xc);
uVar4 = param_1[2];
uVar12 = 0x40;
if (iVar9 < 8) {
iVar6 = FUN_00651895();
uVar10 = extraout_MM1;
if (iVar6 == 0) goto LAB_00651861;
if (7 < iVar9) goto LAB_00651669;
LAB_006517c3:
uVar5 = FUN_006519f3();
uVar10 = extraout_MM1_01;
if ((int)uVar5 < 0) goto LAB_00651861;
}
else {
LAB_00651669:
uVar5 = *(uint *)(param_2 + 8 + (uint)(byte)(uVar10 >> 0x38) * 4);
if ((int)uVar5 < 0x10000) goto LAB_006517c3;
iVar9 = iVar9 - (uVar5 >> 0x10);
uVar10 = uVar10 << (ulonglong)(uVar5 >> 0x10);
uVar5 = uVar5 & 0xffff;
}
if (((int)uVar5 <= iVar9) || (iVar6 = FUN_00651895(), uVar10 = extraout_MM1_00, iVar6 != 0)) {
iVar9 = iVar9 - uVar5;
iVar6 = (int)(uVar10 >> CONCAT44((int)((ulonglong)uVar12 >> 0x20),(int)uVar12 - uVar5));
uVar10 = uVar10 << (ulonglong)uVar5;
if (iVar6 < *(int *)(&DAT_00908100 + uVar5 * 4)) {
iVar6 = iVar6 + *(int *)(&DAT_009080c0 + uVar5 * 4);
}
iVar7 = 1;
*param_4 = *param_4 + (short)iVar6;
LAB_006516ea:
do {
if (iVar9 < 8) {
uVar12 = FUN_00651895();
iVar7 = (int)((ulonglong)uVar12 >> 0x20);
uVar10 = extraout_MM1_03;
if ((int)uVar12 == 0) break;
if (7 < iVar9) goto LAB_006516ea;
LAB_00651842:
uVar13 = FUN_006519f3();
uVar10 = extraout_MM1_04;
if ((int)uVar13 < 0) break;
}
else {
uVar5 = *(uint *)(param_3 + 8 + (uint)(byte)(uVar10 >> 0x38) * 4);
uVar8 = uVar5 >> 0x10;
uVar13 = CONCAT44(iVar7,uVar5) & 0xffffffff0000ffff;
if (uVar8 == 0) goto LAB_00651842;
iVar9 = iVar9 - uVar8;
uVar10 = uVar10 << (ulonglong)uVar8;
}
iVar7 = (int)(uVar13 >> 0x20);
uVar5 = (uint)uVar13;
uVar8 = uVar5 & 0xf;
uVar11 = (ulonglong)uVar8;
if ((uVar13 & 0xf) == 0) {
if ((int)uVar5 < 0xf0) goto LAB_00651754;
iVar7 = iVar7 + 0x10;
}
else {
iVar7 = iVar7 + (uVar5 >> 4);
if (iVar9 < (int)uVar8) {
uVar12 = FUN_00651895();
iVar7 = (int)((ulonglong)uVar12 >> 0x20);
uVar10 = extraout_MM1_02;
if ((int)uVar12 == 0) break;
}
iVar9 = iVar9 - uVar8;
uVar10 = uVar10 << uVar11;
iVar7 = iVar7 + 1;
}
if (0x3f < iVar7) {
LAB_00651754:
*param_1 = uVar10;
*(int *)((int)param_1 + 0xc) = iVar9;
*(int *)(param_1 + 2) = (int)uVar4;
*(undefined4 *)((int)param_1 + 0x24) = uVar2;
*(char *)(param_1 + 6) = (char)uVar3;
*(undefined4 *)((int)param_1 + 0x1c) = uVar1;
return 0;
}
} while( true );
}
LAB_00651861:
*param_1 = uVar10;
*(int *)((int)param_1 + 0xc) = iVar9;
*(int *)(param_1 + 2) = (int)uVar4;
*(undefined4 *)((int)param_1 + 0x24) = uVar2;
*(char *)(param_1 + 6) = (char)uVar3;
*(undefined4 *)((int)param_1 + 0x1c) = uVar1;
return 0;
}
// --- FUN_00651895 at 0x00651895 (size: 350) ---
undefined4 __fastcall FUN_00651895(undefined4 param_1,undefined4 param_2)
{
byte bVar1;
undefined4 uVar2;
uint in_EAX;
int iVar3;
int iVar4;
undefined4 unaff_EBX;
int unaff_EBP;
byte *unaff_ESI;
int unaff_EDI;
iVar4 = *(int *)(unaff_EBP + -0x24);
if (*(char *)(unaff_EBP + -0x20) == '\0') {
if (3 < iVar4) {
uVar2 = *(undefined4 *)unaff_ESI;
in_EAX = CONCAT13(-((char)uVar2 == -1),
CONCAT12(-((char)((uint)uVar2 >> 8) == -1),
CONCAT11(-((char)((uint)uVar2 >> 0x10) == -1),
-((char)((uint)uVar2 >> 0x18) == -1))));
if (in_EAX == 0) {
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 4;
*(int *)(unaff_EBP + -0x24) = iVar4 + -4;
return 0xff;
}
}
iVar4 = *(int *)(unaff_EBP + -0x24);
do {
for (; iVar4 < 1; iVar4 = *(int *)(iVar4 + 0x24)) {
iVar4 = *(int *)(unaff_EBP + 8);
if ((*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) ||
(iVar3 = FUN_006515a0(iVar4,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar4,in_EAX), iVar3 != 0)) {
return 0;
}
unaff_ESI = *(byte **)(iVar4 + 0x10);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
in_EAX = (uint)*unaff_ESI;
unaff_ESI = unaff_ESI + 1;
iVar3 = iVar4 + -1;
iVar4 = iVar4 + -1;
if (in_EAX == 0xff) {
do {
while (iVar4 = iVar3 + -1, iVar3 < 1) {
iVar4 = *(int *)(unaff_EBP + 8);
if (*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) {
return 0;
}
iVar3 = FUN_006515a0(iVar4,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar4,in_EAX);
if (iVar3 != 0) {
return 0;
}
unaff_ESI = *(byte **)(iVar4 + 0x10);
iVar3 = *(int *)(iVar4 + 0x24);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
bVar1 = *unaff_ESI;
in_EAX = (uint)bVar1;
unaff_ESI = unaff_ESI + 1;
iVar3 = iVar4;
} while (in_EAX == 0xff);
if (in_EAX != 0) {
*(byte *)(unaff_EBP + -0x20) = bVar1;
break;
}
in_EAX = 0xff;
}
unaff_EDI = unaff_EDI + 8;
} while (unaff_EDI < 0x39);
}
*(int *)(unaff_EBP + -0x24) = iVar4;
return 0xff;
}
// --- FUN_006519f3 at 0x006519F3 (size: 215) ---
longlong __fastcall FUN_006519f3(undefined4 param_1,uint param_2)
{
int iVar1;
uint uVar2;
uint unaff_EBX;
uint uVar3;
int unaff_EBP;
int unaff_EDI;
int iVar4;
ulonglong in_MM1;
longlong lVar5;
ulonglong extraout_MM1;
longlong extraout_MM1_00;
undefined8 in_MM4;
*(uint *)(unaff_EBP + -0x10) = unaff_EBX;
if (unaff_EDI < (int)unaff_EBX) {
iVar4 = FUN_00651895();
if (iVar4 == 0) goto LAB_00651ac3;
unaff_EBX = *(uint *)(unaff_EBP + -0x10);
in_MM1 = extraout_MM1;
}
iVar4 = unaff_EDI - unaff_EBX;
uVar2 = (uint)(in_MM1 >> CONCAT44((int)((ulonglong)in_MM4 >> 0x20),(int)in_MM4 - unaff_EBX));
lVar5 = in_MM1 << (ulonglong)unaff_EBX;
while( true ) {
iVar1 = *(int *)(unaff_EBP + -0x10);
uVar3 = (uint)*(short *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
if (uVar3 != 0xffffffff) {
uVar3 = (uint)*(ushort *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
}
if ((int)uVar2 <= (int)uVar3) {
if (iVar1 < 0x11) {
iVar4 = *(int *)(unaff_EBP + -0x14);
return CONCAT44(param_2,(int)*(short *)(iVar4 + 0x408 +
CONCAT22((short)(uVar2 >> 0x10),
((short)uVar2 -
*(short *)(iVar4 + 0x608 +
*(int *)(unaff_EBP + -0x10) * 2))
+ *(short *)(iVar4 + 0x64e +
*(int *)(unaff_EBP + -0x10) * 2)
) * 2));
}
return (ulonglong)param_2 << 0x20;
}
if ((iVar4 < 1) && (iVar1 = FUN_00651895(), lVar5 = extraout_MM1_00, iVar1 == 0)) break;
iVar4 = iVar4 + -1;
*(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1;
uVar2 = uVar2 << 1 | (uint)((ulonglong)lVar5 >> 0x3f);
lVar5 = lVar5 << 1;
}
LAB_00651ac3:
return CONCAT44(param_2,1);
}
// --- FUN_00651ae0 at 0x00651AE0 (size: 1192) ---
undefined4 FUN_00651ae0(ulonglong *param_1,int param_2,int param_3,ushort *param_4,uint *param_5)
{
char cVar1;
short sVar2;
uint uVar3;
ushort uVar4;
int iVar5;
int iVar6;
uint uVar7;
uint *puVar8;
int iVar9;
ulonglong uVar10;
ulonglong uVar11;
ulonglong uVar12;
ulonglong extraout_MM1;
ulonglong extraout_MM1_00;
ulonglong extraout_MM1_01;
ulonglong extraout_MM1_02;
ulonglong extraout_MM1_03;
ulonglong extraout_MM1_04;
longlong lVar13;
undefined8 uVar15;
undefined8 uVar16;
int local_2c;
int local_24;
undefined4 uVar14;
uVar11 = *param_1;
iVar9 = *(int *)((int)param_1 + 0xc);
puVar8 = *(uint **)(param_1 + 2);
local_2c = *(int *)((int)param_1 + 0x1c);
local_24 = *(int *)((int)param_1 + 0x24);
cVar1 = (char)param_1[6];
uVar15 = 0x40;
param_5[0] = 0;
param_5[1] = 0;
param_5[2] = 0;
param_5[3] = 0;
param_5[4] = 0;
param_5[5] = 0;
param_5[6] = 0;
param_5[7] = 0;
param_5[8] = 0;
param_5[9] = 0;
param_5[10] = 0;
param_5[0xb] = 0;
param_5[0xc] = 0;
param_5[0xd] = 0;
param_5[0xe] = 0;
param_5[0xf] = 0;
param_5[0x10] = 0;
param_5[0x11] = 0;
param_5[0x12] = 0;
param_5[0x13] = 0;
param_5[0x14] = 0;
param_5[0x15] = 0;
param_5[0x16] = 0;
param_5[0x17] = 0;
param_5[0x18] = 0;
param_5[0x19] = 0;
param_5[0x1a] = 0;
param_5[0x1b] = 0;
param_5[0x1c] = 0;
param_5[0x1d] = 0;
param_5[0x1e] = 0;
param_5[0x1f] = 0;
if (iVar9 < 8) {
uVar11 = uVar11 >> (ulonglong)(0x40 - iVar9);
if (cVar1 == '\0') {
if (3 < local_24) {
uVar3 = *puVar8;
if (CONCAT13(-((char)uVar3 == -1),
CONCAT12(-((char)((uVar3 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar3 & 0xff0000) >> 0x10) == -1),
-((char)(uVar3 >> 0x18) == -1)))) == 0) {
puVar8 = puVar8 + 1;
iVar9 = iVar9 + 0x20;
uVar11 = uVar11 << 0x20 |
(ulonglong)
(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18)
;
local_24 = local_24 + -4;
local_2c = local_2c + 4;
goto LAB_00651d0e;
}
}
iVar5 = FUN_00651f88();
uVar11 = extraout_MM1;
if (iVar5 == 0) goto LAB_00651f54;
}
else {
LAB_00651d0e:
uVar11 = uVar11 << (ulonglong)(0x40 - iVar9);
}
if (7 < iVar9) goto LAB_00651b76;
LAB_00651dd2:
uVar3 = FUN_00652085();
uVar11 = extraout_MM1_01;
if ((int)uVar3 < 0) goto LAB_00651f54;
}
else {
LAB_00651b76:
uVar3 = (uint)(byte)(uVar11 >> 0x38);
uVar7 = (uint)*(ushort *)(param_2 + 10 + uVar3 * 4);
uVar3 = (uint)*(ushort *)(param_2 + 8 + uVar3 * 4);
if (uVar7 == 0) goto LAB_00651dd2;
iVar9 = iVar9 - uVar7;
uVar11 = uVar11 << (ulonglong)uVar7;
}
if ((int)uVar3 <= iVar9) goto LAB_00651ba7;
uVar14 = (undefined4)((ulonglong)uVar15 >> 0x20);
uVar11 = uVar11 >> CONCAT44(uVar14,(int)uVar15 - iVar9);
if (cVar1 == '\0') {
if (3 < local_24) {
uVar7 = *puVar8;
if (CONCAT13(-((char)uVar7 == -1),
CONCAT12(-((char)((uVar7 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar7 & 0xff0000) >> 0x10) == -1),
-((char)(uVar7 >> 0x18) == -1)))) == 0) {
puVar8 = puVar8 + 1;
iVar9 = iVar9 + 0x20;
uVar11 = uVar11 << 0x20 |
(ulonglong)
(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);
local_24 = local_24 + -4;
local_2c = local_2c + 4;
goto LAB_00651da3;
}
}
iVar5 = FUN_00651f88();
uVar11 = extraout_MM1_00;
if (iVar5 == 0) {
LAB_00651f54:
*param_1 = uVar11;
*(int *)((int)param_1 + 0xc) = iVar9;
*(uint **)(param_1 + 2) = puVar8;
*(int *)((int)param_1 + 0x24) = local_24;
*(char *)(param_1 + 6) = cVar1;
*(int *)((int)param_1 + 0x1c) = local_2c;
return 0;
}
}
else {
LAB_00651da3:
uVar11 = uVar11 << CONCAT44(uVar14,(int)uVar15 - iVar9);
}
LAB_00651ba7:
iVar9 = iVar9 - uVar3;
uVar10 = uVar11 >> CONCAT44((int)((ulonglong)uVar15 >> 0x20),(int)uVar15 - uVar3);
uVar11 = uVar11 << (ulonglong)uVar3;
sVar2 = 0;
if ((int)uVar10 < *(int *)(&DAT_00908100 + uVar3 * 4)) {
sVar2 = (short)*(undefined4 *)(&DAT_009080c0 + uVar3 * 4);
}
iVar5 = 1;
uVar4 = (short)uVar10 + sVar2 + *param_4;
*param_4 = uVar4;
*param_5 = (uint)uVar4;
do {
uVar10 = uVar11 >> 0x38;
do {
while( true ) {
if (7 < iVar9) {
uVar12 = CONCAT44(iVar5,(uint)*(ushort *)(param_3 + 8 + (int)uVar10 * 4));
uVar3 = (uint)*(ushort *)(param_3 + 10 + (int)uVar10 * 4);
if (uVar3 != 0) {
iVar9 = iVar9 - uVar3;
uVar11 = uVar11 << (ulonglong)uVar3;
goto LAB_00651c27;
}
goto LAB_00651f35;
}
uVar14 = (undefined4)((ulonglong)uVar15 >> 0x20);
uVar11 = uVar11 >> CONCAT44(uVar14,(int)uVar15 - iVar9);
if (cVar1 == '\0') break;
LAB_00651eda:
uVar11 = uVar11 << CONCAT44(uVar14,(int)uVar15 - iVar9);
uVar10 = uVar11 >> 0x38;
if (iVar9 < 8) goto LAB_00651f35;
}
if (3 < local_24) {
uVar3 = *puVar8;
if (CONCAT13(-((char)uVar3 == -1),
CONCAT12(-((char)((uVar3 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar3 & 0xff0000) >> 0x10) == -1),
-((char)(uVar3 >> 0x18) == -1)))) == 0) {
puVar8 = puVar8 + 1;
iVar9 = iVar9 + 0x20;
uVar11 = uVar11 << 0x20 |
(ulonglong)
(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18)
;
local_24 = local_24 + -4;
local_2c = local_2c + 4;
goto LAB_00651eda;
}
}
uVar16 = FUN_00651f88();
iVar5 = (int)((ulonglong)uVar16 >> 0x20);
uVar11 = extraout_MM1_03;
if ((int)uVar16 == 0) goto LAB_00651f54;
uVar10 = extraout_MM1_03 >> 0x38;
} while (7 < iVar9);
LAB_00651f35:
uVar12 = FUN_00652085();
uVar11 = extraout_MM1_04;
if ((int)uVar12 < 0) goto LAB_00651f54;
LAB_00651c27:
iVar6 = (int)(uVar12 >> 0x20);
uVar3 = (uint)uVar12;
uVar7 = uVar3 & 0xf;
uVar10 = (ulonglong)uVar7;
iVar5 = (int)uVar15;
uVar14 = (undefined4)((ulonglong)uVar15 >> 0x20);
lVar13 = CONCAT44(uVar14,iVar5 - uVar7);
if ((uVar12 & 0xf) == 0) {
if ((int)uVar3 < 0xf0) break;
iVar5 = iVar6 + 0x10;
}
else {
iVar6 = iVar6 + (uVar3 >> 4);
if (iVar9 < (int)uVar7) {
uVar11 = uVar11 >> CONCAT44(uVar14,iVar5 - iVar9);
if (cVar1 == '\0') {
if (3 < local_24) {
uVar3 = *puVar8;
if (CONCAT13(-((char)uVar3 == -1),
CONCAT12(-((char)((uVar3 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar3 & 0xff0000) >> 0x10) == -1),
-((char)(uVar3 >> 0x18) == -1)))) == 0) {
puVar8 = puVar8 + 1;
iVar9 = iVar9 + 0x20;
uVar11 = uVar11 << 0x20 |
(ulonglong)
(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
uVar3 << 0x18);
local_24 = local_24 + -4;
local_2c = local_2c + 4;
goto LAB_00651e5c;
}
}
uVar16 = FUN_00651f88();
iVar6 = (int)((ulonglong)uVar16 >> 0x20);
uVar11 = extraout_MM1_02;
if ((int)uVar16 == 0) goto LAB_00651f54;
}
else {
LAB_00651e5c:
uVar11 = uVar11 << CONCAT44(uVar14,iVar5 - iVar9);
}
}
uVar12 = uVar11 >> lVar13;
iVar9 = iVar9 - uVar7;
uVar11 = uVar11 << uVar10;
sVar2 = 0;
if ((int)uVar12 < *(int *)(&DAT_00908100 + uVar7 * 4)) {
sVar2 = (short)*(undefined4 *)(&DAT_009080c0 + uVar7 * 4);
}
iVar5 = iVar6 + 1;
*(short *)((int)param_5 + (&DAT_00907ee0)[iVar6] * 2) = (short)uVar12 + sVar2;
}
} while (iVar5 < 0x40);
*param_1 = uVar11;
*(int *)((int)param_1 + 0xc) = iVar9;
*(uint **)(param_1 + 2) = puVar8;
*(char *)(param_1 + 6) = cVar1;
*(int *)((int)param_1 + 0x24) = local_24;
*(int *)((int)param_1 + 0x1c) = local_2c;
return 0;
}
// --- FUN_00651f88 at 0x00651F88 (size: 253) ---
undefined4 __fastcall FUN_00651f88(undefined4 param_1,undefined4 param_2)
{
uint in_EAX;
int iVar1;
int iVar2;
undefined4 unaff_EBX;
int unaff_EBP;
byte *unaff_ESI;
int unaff_EDI;
iVar2 = *(int *)(unaff_EBP + -0x20);
do {
for (; iVar2 < 1; iVar2 = *(int *)(iVar2 + 0x24)) {
iVar2 = *(int *)(unaff_EBP + 8);
if ((*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) ||
(iVar1 = FUN_006515a0(iVar2,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar2,in_EAX), iVar1 != 0)) {
return 0;
}
unaff_ESI = *(byte **)(iVar2 + 0x10);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
in_EAX = (uint)*unaff_ESI;
unaff_ESI = unaff_ESI + 1;
iVar1 = iVar2 + -1;
iVar2 = iVar2 + -1;
if (in_EAX == 0xff) {
do {
while (iVar2 = iVar1 + -1, iVar1 < 1) {
iVar2 = *(int *)(unaff_EBP + 8);
if (*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) {
return 0;
}
iVar1 = FUN_006515a0(iVar2,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar2,in_EAX);
if (iVar1 != 0) {
return 0;
}
unaff_ESI = *(byte **)(iVar2 + 0x10);
iVar1 = *(int *)(iVar2 + 0x24);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
in_EAX = (uint)*unaff_ESI;
unaff_ESI = unaff_ESI + 1;
iVar1 = iVar2;
} while (in_EAX == 0xff);
if (in_EAX != 0) {
*(uint *)(unaff_EBP + -0x24) = in_EAX;
goto LAB_00651fc5;
}
in_EAX = 0xff;
}
unaff_EDI = unaff_EDI + 8;
if (0x38 < unaff_EDI) {
LAB_00651fc5:
*(int *)(unaff_EBP + -0x20) = iVar2;
return 0xff;
}
} while( true );
}
// --- FUN_00652085 at 0x00652085 (size: 416) ---
longlong __fastcall FUN_00652085(undefined4 param_1,uint param_2)
{
int iVar1;
uint uVar2;
uint unaff_EBX;
uint uVar3;
int unaff_EBP;
uint *unaff_ESI;
int unaff_EDI;
int iVar4;
ulonglong in_MM1;
ulonglong extraout_MM1;
ulonglong uVar5;
ulonglong extraout_MM1_00;
undefined8 in_MM4;
undefined4 uVar6;
*(uint *)(unaff_EBP + -0x10) = unaff_EBX;
if ((int)unaff_EBX <= unaff_EDI) goto LAB_00652091;
uVar6 = (undefined4)((ulonglong)in_MM4 >> 0x20);
uVar5 = in_MM1 >> CONCAT44(uVar6,(int)in_MM4 - unaff_EDI);
if (*(int *)(unaff_EBP + -0x24) == 0) {
if (3 < *(int *)(unaff_EBP + -0x20)) {
uVar2 = *unaff_ESI;
if (CONCAT13(-((char)uVar2 == -1),
CONCAT12(-((char)((uVar2 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar2 & 0xff0000) >> 0x10) == -1),
-((char)(uVar2 >> 0x18) == -1)))) == 0) {
unaff_ESI = unaff_ESI + 1;
unaff_EDI = unaff_EDI + 0x20;
uVar5 = uVar5 << 0x20 |
(ulonglong)
(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18);
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 4;
*(int *)(unaff_EBP + -0x20) = *(int *)(unaff_EBP + -0x20) + -4;
goto LAB_0065214a;
}
}
iVar4 = FUN_00651f88();
if (iVar4 == 0) {
LAB_0065221e:
return CONCAT44(param_2,1);
}
unaff_EBX = *(uint *)(unaff_EBP + -0x10);
in_MM1 = extraout_MM1;
}
else {
LAB_0065214a:
in_MM1 = uVar5 << CONCAT44(uVar6,(int)in_MM4 - unaff_EDI);
unaff_EBX = *(uint *)(unaff_EBP + -0x10);
}
LAB_00652091:
iVar4 = unaff_EDI - unaff_EBX;
uVar2 = (uint)(in_MM1 >> CONCAT44((int)((ulonglong)in_MM4 >> 0x20),(int)in_MM4 - unaff_EBX));
uVar5 = in_MM1 << (ulonglong)unaff_EBX;
do {
iVar1 = *(int *)(unaff_EBP + -0x10);
uVar3 = (uint)*(short *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
if (uVar3 != 0xffffffff) {
uVar3 = (uint)*(ushort *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
}
if ((int)uVar2 <= (int)uVar3) {
if (iVar1 < 0x11) {
iVar4 = *(int *)(unaff_EBP + -0x14);
return CONCAT44(param_2,(int)*(short *)(iVar4 + 0x408 +
CONCAT22((short)(uVar2 >> 0x10),
((short)uVar2 -
*(short *)(iVar4 + 0x608 +
*(int *)(unaff_EBP + -0x10) * 2))
+ *(short *)(iVar4 + 0x64e +
*(int *)(unaff_EBP + -0x10) * 2)
) * 2));
}
return (ulonglong)param_2 << 0x20;
}
if (iVar4 < 1) {
uVar6 = (undefined4)((ulonglong)in_MM4 >> 0x20);
uVar5 = uVar5 >> CONCAT44(uVar6,(int)in_MM4 - iVar4);
if (*(int *)(unaff_EBP + -0x24) == 0) {
if (3 < *(int *)(unaff_EBP + -0x20)) {
uVar3 = *unaff_ESI;
if (CONCAT13(-((char)uVar3 == -1),
CONCAT12(-((char)((uVar3 & 0xff00) >> 8) == -1),
CONCAT11(-((char)((uVar3 & 0xff0000) >> 0x10) == -1),
-((char)(uVar3 >> 0x18) == -1)))) == 0) {
unaff_ESI = unaff_ESI + 1;
iVar4 = iVar4 + 0x20;
uVar5 = uVar5 << 0x20 |
(ulonglong)
(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18
);
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 4;
*(int *)(unaff_EBP + -0x20) = *(int *)(unaff_EBP + -0x20) + -4;
goto LAB_006521ca;
}
}
iVar1 = FUN_00651f88();
uVar5 = extraout_MM1_00;
if (iVar1 == 0) goto LAB_0065221e;
}
else {
LAB_006521ca:
uVar5 = uVar5 << CONCAT44(uVar6,(int)in_MM4 - iVar4);
}
}
iVar4 = iVar4 + -1;
*(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1;
uVar2 = uVar2 << 1 | (uint)(uVar5 >> 0x3f);
uVar5 = uVar5 << 1;
} while( true );
}
// --- FUN_00652240 at 0x00652240 (size: 782) ---
undefined4 FUN_00652240(ulonglong *param_1,int param_2,int param_3,short *param_4,short *param_5)
{
undefined4 uVar1;
undefined4 uVar2;
ulonglong uVar3;
ulonglong uVar4;
uint uVar5;
short sVar6;
int iVar7;
int iVar8;
uint uVar9;
int iVar10;
int iVar11;
ulonglong uVar12;
ulonglong extraout_MM1;
ulonglong extraout_MM1_00;
ulonglong extraout_MM1_01;
ulonglong extraout_MM1_02;
ulonglong extraout_MM1_03;
ulonglong extraout_MM1_04;
ulonglong uVar13;
longlong lVar14;
undefined8 uVar15;
undefined8 uVar16;
ulonglong uVar17;
uVar1 = *(undefined4 *)((int)param_1 + 0x1c);
uVar2 = *(undefined4 *)((int)param_1 + 0x24);
uVar3 = param_1[6];
uVar12 = *param_1;
iVar11 = *(int *)((int)param_1 + 0xc);
uVar4 = param_1[2];
uVar15 = 0x40;
param_5[0] = 0;
param_5[1] = 0;
param_5[2] = 0;
param_5[3] = 0;
param_5[4] = 0;
param_5[5] = 0;
param_5[6] = 0;
param_5[7] = 0;
param_5[8] = 0;
param_5[9] = 0;
param_5[10] = 0;
param_5[0xb] = 0;
param_5[0xc] = 0;
param_5[0xd] = 0;
param_5[0xe] = 0;
param_5[0xf] = 0;
param_5[0x10] = 0;
param_5[0x11] = 0;
param_5[0x12] = 0;
param_5[0x13] = 0;
param_5[0x14] = 0;
param_5[0x15] = 0;
param_5[0x16] = 0;
param_5[0x17] = 0;
param_5[0x18] = 0;
param_5[0x19] = 0;
param_5[0x1a] = 0;
param_5[0x1b] = 0;
param_5[0x1c] = 0;
param_5[0x1d] = 0;
param_5[0x1e] = 0;
param_5[0x1f] = 0;
param_5[0x20] = 0;
param_5[0x21] = 0;
param_5[0x22] = 0;
param_5[0x23] = 0;
param_5[0x24] = 0;
param_5[0x25] = 0;
param_5[0x26] = 0;
param_5[0x27] = 0;
param_5[0x28] = 0;
param_5[0x29] = 0;
param_5[0x2a] = 0;
param_5[0x2b] = 0;
param_5[0x2c] = 0;
param_5[0x2d] = 0;
param_5[0x2e] = 0;
param_5[0x2f] = 0;
param_5[0x30] = 0;
param_5[0x31] = 0;
param_5[0x32] = 0;
param_5[0x33] = 0;
param_5[0x34] = 0;
param_5[0x35] = 0;
param_5[0x36] = 0;
param_5[0x37] = 0;
param_5[0x38] = 0;
param_5[0x39] = 0;
param_5[0x3a] = 0;
param_5[0x3b] = 0;
param_5[0x3c] = 0;
param_5[0x3d] = 0;
param_5[0x3e] = 0;
param_5[0x3f] = 0;
if (iVar11 < 8) {
iVar7 = FUN_0065254e();
uVar12 = extraout_MM1;
if (iVar7 == 0) goto LAB_0065251a;
if (7 < iVar11) goto LAB_006522ec;
LAB_0065247c:
uVar5 = FUN_00652656();
uVar12 = extraout_MM1_01;
if ((int)uVar5 < 0) goto LAB_0065251a;
}
else {
LAB_006522ec:
uVar5 = *(uint *)(param_2 + 8 + (uint)(byte)(uVar12 >> 0x38) * 4);
if ((int)uVar5 < 0x10000) goto LAB_0065247c;
iVar11 = iVar11 - (uVar5 >> 0x10);
uVar12 = uVar12 << (ulonglong)(uVar5 >> 0x10);
uVar5 = uVar5 & 0xffff;
}
if (((int)uVar5 <= iVar11) || (iVar7 = FUN_0065254e(), uVar12 = extraout_MM1_00, iVar7 != 0)) {
iVar11 = iVar11 - uVar5;
iVar7 = (int)(uVar12 >> CONCAT44((int)((ulonglong)uVar15 >> 0x20),(int)uVar15 - uVar5));
uVar12 = uVar12 << (ulonglong)uVar5;
if (iVar7 < *(int *)(&DAT_00908100 + uVar5 * 4)) {
iVar7 = iVar7 + *(int *)(&DAT_009080c0 + uVar5 * 4);
}
iVar8 = 1;
sVar6 = (short)iVar7 + *param_4;
*param_4 = sVar6;
*param_5 = sVar6;
LAB_00652373:
do {
if (iVar11 < 8) {
uVar16 = FUN_0065254e();
iVar8 = (int)((ulonglong)uVar16 >> 0x20);
uVar12 = extraout_MM1_03;
if ((int)uVar16 == 0) break;
if (7 < iVar11) goto LAB_00652373;
LAB_006524fb:
uVar17 = FUN_00652656();
uVar12 = extraout_MM1_04;
if ((int)uVar17 < 0) break;
}
else {
uVar5 = *(uint *)(param_3 + 8 + (uint)(byte)(uVar12 >> 0x38) * 4);
uVar9 = uVar5 >> 0x10;
uVar17 = CONCAT44(iVar8,uVar5) & 0xffffffff0000ffff;
if (uVar9 == 0) goto LAB_006524fb;
iVar11 = iVar11 - uVar9;
uVar12 = uVar12 << (ulonglong)uVar9;
}
iVar7 = (int)(uVar17 >> 0x20);
uVar5 = (uint)uVar17;
uVar9 = uVar5 & 0xf;
uVar13 = (ulonglong)uVar9;
lVar14 = CONCAT44((int)((ulonglong)uVar15 >> 0x20),(int)uVar15 - uVar9);
if ((uVar17 & 0xf) == 0) {
if ((int)uVar5 < 0xf0) goto LAB_0065240d;
iVar8 = iVar7 + 0x10;
}
else {
iVar7 = iVar7 + (uVar5 >> 4);
if (iVar11 < (int)uVar9) {
uVar16 = FUN_0065254e();
iVar7 = (int)((ulonglong)uVar16 >> 0x20);
uVar12 = extraout_MM1_02;
if ((int)uVar16 == 0) break;
}
iVar11 = iVar11 - uVar9;
iVar10 = (int)(uVar12 >> lVar14);
uVar12 = uVar12 << uVar13;
if (iVar10 < *(int *)(&DAT_00908100 + uVar9 * 4)) {
iVar10 = iVar10 + *(int *)(&DAT_009080c0 + uVar9 * 4);
}
iVar8 = iVar7 + 1;
param_5[(&DAT_00907ee0)[iVar7]] = (short)iVar10;
}
if (0x3f < iVar8) {
LAB_0065240d:
*param_1 = uVar12;
*(int *)((int)param_1 + 0xc) = iVar11;
*(int *)(param_1 + 2) = (int)uVar4;
*(undefined4 *)((int)param_1 + 0x24) = uVar2;
*(char *)(param_1 + 6) = (char)uVar3;
*(undefined4 *)((int)param_1 + 0x1c) = uVar1;
return 0;
}
} while( true );
}
LAB_0065251a:
*param_1 = uVar12;
*(int *)((int)param_1 + 0xc) = iVar11;
*(int *)(param_1 + 2) = (int)uVar4;
*(undefined4 *)((int)param_1 + 0x24) = uVar2;
*(char *)(param_1 + 6) = (char)uVar3;
*(undefined4 *)((int)param_1 + 0x1c) = uVar1;
return 0;
}
// --- FUN_0065254e at 0x0065254E (size: 264) ---
undefined4 __fastcall FUN_0065254e(undefined4 param_1,undefined4 param_2)
{
byte bVar1;
uint in_EAX;
int iVar2;
int iVar3;
undefined4 unaff_EBX;
int unaff_EBP;
byte *unaff_ESI;
int unaff_EDI;
iVar3 = *(int *)(unaff_EBP + -0x24);
if (*(char *)(unaff_EBP + -0x20) == '\0') {
do {
for (; iVar3 < 1; iVar3 = *(int *)(iVar3 + 0x24)) {
iVar3 = *(int *)(unaff_EBP + 8);
if ((*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) ||
(iVar2 = FUN_006515a0(iVar3,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar3,in_EAX), iVar2 != 0)) {
return 0;
}
unaff_ESI = *(byte **)(iVar3 + 0x10);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
in_EAX = (uint)*unaff_ESI;
unaff_ESI = unaff_ESI + 1;
iVar2 = iVar3 + -1;
iVar3 = iVar3 + -1;
if (in_EAX == 0xff) {
do {
while (iVar3 = iVar2 + -1, iVar2 < 1) {
iVar3 = *(int *)(unaff_EBP + 8);
if (*(int *)(*(int *)(unaff_EBP + 8) + 0x3c) == 0) {
return 0;
}
iVar2 = FUN_006515a0(iVar3,unaff_EDI,unaff_ESI,unaff_EBP,&stack0x00000000,unaff_EBX,
param_2,iVar3,in_EAX);
if (iVar2 != 0) {
return 0;
}
unaff_ESI = *(byte **)(iVar3 + 0x10);
iVar2 = *(int *)(iVar3 + 0x24);
}
*(int *)(unaff_EBP + -0x28) = *(int *)(unaff_EBP + -0x28) + 1;
bVar1 = *unaff_ESI;
in_EAX = (uint)bVar1;
unaff_ESI = unaff_ESI + 1;
iVar2 = iVar3;
} while (in_EAX == 0xff);
if (in_EAX != 0) {
*(byte *)(unaff_EBP + -0x20) = bVar1;
break;
}
in_EAX = 0xff;
}
unaff_EDI = unaff_EDI + 8;
} while (unaff_EDI < 0x39);
}
*(int *)(unaff_EBP + -0x24) = iVar3;
return 0xff;
}
// --- FUN_00652656 at 0x00652656 (size: 213) ---
longlong __fastcall FUN_00652656(undefined4 param_1,uint param_2)
{
int iVar1;
uint uVar2;
uint unaff_EBX;
uint uVar3;
int unaff_EBP;
int unaff_EDI;
int iVar4;
ulonglong in_MM1;
longlong lVar5;
ulonglong extraout_MM1;
longlong extraout_MM1_00;
undefined8 in_MM4;
*(uint *)(unaff_EBP + -0x10) = unaff_EBX;
if (unaff_EDI < (int)unaff_EBX) {
iVar4 = FUN_0065254e();
if (iVar4 == 0) goto LAB_00652724;
unaff_EBX = *(uint *)(unaff_EBP + -0x10);
in_MM1 = extraout_MM1;
}
iVar4 = unaff_EDI - unaff_EBX;
uVar2 = (uint)(in_MM1 >> CONCAT44((int)((ulonglong)in_MM4 >> 0x20),(int)in_MM4 - unaff_EBX));
lVar5 = in_MM1 << (ulonglong)unaff_EBX;
while( true ) {
iVar1 = *(int *)(unaff_EBP + -0x10);
uVar3 = (uint)*(short *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
if (uVar3 != 0xffffffff) {
uVar3 = (uint)*(ushort *)(*(int *)(unaff_EBP + -0x14) + 0x62a + iVar1 * 2);
}
if ((int)uVar2 <= (int)uVar3) {
if (iVar1 < 0x11) {
iVar4 = *(int *)(unaff_EBP + -0x14);
return CONCAT44(param_2,(int)*(short *)(iVar4 + 0x408 +
CONCAT22((short)(uVar2 >> 0x10),
((short)uVar2 -
*(short *)(iVar4 + 0x608 +
*(int *)(unaff_EBP + -0x10) * 2))
+ *(short *)(iVar4 + 0x64e +
*(int *)(unaff_EBP + -0x10) * 2)
) * 2));
}
return (ulonglong)param_2 << 0x20;
}
if ((iVar4 < 1) && (iVar1 = FUN_0065254e(), lVar5 = extraout_MM1_00, iVar1 == 0)) break;
iVar4 = iVar4 + -1;
*(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1;
uVar2 = uVar2 << 1 | (uint)((ulonglong)lVar5 >> 0x3f);
lVar5 = lVar5 << 1;
}
LAB_00652724:
return CONCAT44(param_2,1);
}
// --- FUN_00652740 at 0x00652740 (size: 252) ---
void FUN_00652740(undefined8 *param_1,undefined8 *param_2)
{
undefined8 uVar1;
undefined8 uVar2;
undefined8 uVar3;
undefined8 uVar4;
uVar1 = *param_1;
uVar2 = *param_2;
uVar3 = param_1[1];
uVar4 = param_2[1];
*param_1 = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) * (short)((ulonglong)uVar2 >> 0x20)
,CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[1] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[2];
uVar2 = param_2[2];
uVar3 = param_1[3];
uVar4 = param_2[3];
param_1[2] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[3] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[4];
uVar2 = param_2[4];
uVar3 = param_1[5];
uVar4 = param_2[5];
param_1[4] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[5] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[6];
uVar2 = param_2[6];
uVar3 = param_1[7];
uVar4 = param_2[7];
param_1[6] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[7] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[8];
uVar2 = param_2[8];
uVar3 = param_1[9];
uVar4 = param_2[9];
param_1[8] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[9] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[10];
uVar2 = param_2[10];
uVar3 = param_1[0xb];
uVar4 = param_2[0xb];
param_1[10] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[0xb] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[0xc];
uVar2 = param_2[0xc];
uVar3 = param_1[0xd];
uVar4 = param_2[0xd];
param_1[0xc] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[0xd] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
uVar1 = param_1[0xe];
uVar2 = param_2[0xe];
uVar3 = param_1[0xf];
uVar4 = param_2[0xf];
param_1[0xe] = CONCAT26((short)((ulonglong)uVar1 >> 0x30) * (short)((ulonglong)uVar2 >> 0x30),
CONCAT24((short)((ulonglong)uVar1 >> 0x20) *
(short)((ulonglong)uVar2 >> 0x20),
CONCAT22((short)((ulonglong)uVar1 >> 0x10) *
(short)((ulonglong)uVar2 >> 0x10),
(short)uVar1 * (short)uVar2)));
param_1[0xf] = CONCAT26((short)((ulonglong)uVar3 >> 0x30) * (short)((ulonglong)uVar4 >> 0x30),
CONCAT24((short)((ulonglong)uVar3 >> 0x20) *
(short)((ulonglong)uVar4 >> 0x20),
CONCAT22((short)((ulonglong)uVar3 >> 0x10) *
(short)((ulonglong)uVar4 >> 0x10),
(short)uVar3 * (short)uVar4)));
return;
}
// --- FUN_00652840 at 0x00652840 (size: 662) ---
void FUN_00652840(short *param_1,short *param_2)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
short sVar12;
short sVar13;
short sVar14;
short sVar15;
if (((uint)param_1 & 0xf) == 0) {
if (((uint)param_2 & 0xf) == 0) {
sVar1 = param_2[1];
sVar2 = param_2[2];
sVar3 = param_2[3];
sVar4 = param_2[4];
sVar5 = param_2[5];
sVar6 = param_2[6];
sVar7 = param_2[7];
sVar8 = param_2[8];
sVar9 = param_2[9];
sVar10 = param_2[10];
sVar11 = param_2[0xb];
sVar12 = param_2[0xc];
sVar13 = param_2[0xd];
sVar14 = param_2[0xe];
sVar15 = param_2[0xf];
*param_1 = *param_1 * *param_2;
param_1[1] = param_1[1] * sVar1;
param_1[2] = param_1[2] * sVar2;
param_1[3] = param_1[3] * sVar3;
param_1[4] = param_1[4] * sVar4;
param_1[5] = param_1[5] * sVar5;
param_1[6] = param_1[6] * sVar6;
param_1[7] = param_1[7] * sVar7;
param_1[8] = param_1[8] * sVar8;
param_1[9] = param_1[9] * sVar9;
param_1[10] = param_1[10] * sVar10;
param_1[0xb] = param_1[0xb] * sVar11;
param_1[0xc] = param_1[0xc] * sVar12;
param_1[0xd] = param_1[0xd] * sVar13;
param_1[0xe] = param_1[0xe] * sVar14;
param_1[0xf] = param_1[0xf] * sVar15;
sVar1 = param_2[0x11];
sVar2 = param_2[0x12];
sVar3 = param_2[0x13];
sVar4 = param_2[0x14];
sVar5 = param_2[0x15];
sVar6 = param_2[0x16];
sVar7 = param_2[0x17];
sVar8 = param_2[0x18];
sVar9 = param_2[0x19];
sVar10 = param_2[0x1a];
sVar11 = param_2[0x1b];
sVar12 = param_2[0x1c];
sVar13 = param_2[0x1d];
sVar14 = param_2[0x1e];
sVar15 = param_2[0x1f];
param_1[0x10] = param_1[0x10] * param_2[0x10];
param_1[0x11] = param_1[0x11] * sVar1;
param_1[0x12] = param_1[0x12] * sVar2;
param_1[0x13] = param_1[0x13] * sVar3;
param_1[0x14] = param_1[0x14] * sVar4;
param_1[0x15] = param_1[0x15] * sVar5;
param_1[0x16] = param_1[0x16] * sVar6;
param_1[0x17] = param_1[0x17] * sVar7;
param_1[0x18] = param_1[0x18] * sVar8;
param_1[0x19] = param_1[0x19] * sVar9;
param_1[0x1a] = param_1[0x1a] * sVar10;
param_1[0x1b] = param_1[0x1b] * sVar11;
param_1[0x1c] = param_1[0x1c] * sVar12;
param_1[0x1d] = param_1[0x1d] * sVar13;
param_1[0x1e] = param_1[0x1e] * sVar14;
param_1[0x1f] = param_1[0x1f] * sVar15;
sVar1 = param_2[0x21];
sVar2 = param_2[0x22];
sVar3 = param_2[0x23];
sVar4 = param_2[0x24];
sVar5 = param_2[0x25];
sVar6 = param_2[0x26];
sVar7 = param_2[0x27];
sVar8 = param_2[0x28];
sVar9 = param_2[0x29];
sVar10 = param_2[0x2a];
sVar11 = param_2[0x2b];
sVar12 = param_2[0x2c];
sVar13 = param_2[0x2d];
sVar14 = param_2[0x2e];
sVar15 = param_2[0x2f];
param_1[0x20] = param_1[0x20] * param_2[0x20];
param_1[0x21] = param_1[0x21] * sVar1;
param_1[0x22] = param_1[0x22] * sVar2;
param_1[0x23] = param_1[0x23] * sVar3;
param_1[0x24] = param_1[0x24] * sVar4;
param_1[0x25] = param_1[0x25] * sVar5;
param_1[0x26] = param_1[0x26] * sVar6;
param_1[0x27] = param_1[0x27] * sVar7;
param_1[0x28] = param_1[0x28] * sVar8;
param_1[0x29] = param_1[0x29] * sVar9;
param_1[0x2a] = param_1[0x2a] * sVar10;
param_1[0x2b] = param_1[0x2b] * sVar11;
param_1[0x2c] = param_1[0x2c] * sVar12;
param_1[0x2d] = param_1[0x2d] * sVar13;
param_1[0x2e] = param_1[0x2e] * sVar14;
param_1[0x2f] = param_1[0x2f] * sVar15;
sVar1 = param_2[0x31];
sVar2 = param_2[0x32];
sVar3 = param_2[0x33];
sVar4 = param_2[0x34];
sVar5 = param_2[0x35];
sVar6 = param_2[0x36];
sVar7 = param_2[0x37];
sVar8 = param_2[0x38];
sVar9 = param_2[0x39];
sVar10 = param_2[0x3a];
sVar11 = param_2[0x3b];
sVar12 = param_2[0x3c];
sVar13 = param_2[0x3d];
sVar14 = param_2[0x3e];
sVar15 = param_2[0x3f];
param_1[0x30] = param_1[0x30] * param_2[0x30];
param_1[0x31] = param_1[0x31] * sVar1;
param_1[0x32] = param_1[0x32] * sVar2;
param_1[0x33] = param_1[0x33] * sVar3;
param_1[0x34] = param_1[0x34] * sVar4;
param_1[0x35] = param_1[0x35] * sVar5;
param_1[0x36] = param_1[0x36] * sVar6;
param_1[0x37] = param_1[0x37] * sVar7;
param_1[0x38] = param_1[0x38] * sVar8;
param_1[0x39] = param_1[0x39] * sVar9;
param_1[0x3a] = param_1[0x3a] * sVar10;
param_1[0x3b] = param_1[0x3b] * sVar11;
param_1[0x3c] = param_1[0x3c] * sVar12;
param_1[0x3d] = param_1[0x3d] * sVar13;
param_1[0x3e] = param_1[0x3e] * sVar14;
param_1[0x3f] = param_1[0x3f] * sVar15;
}
else {
sVar1 = param_2[1];
sVar2 = param_2[2];
sVar3 = param_2[3];
sVar4 = param_2[4];
sVar5 = param_2[5];
sVar6 = param_2[6];
sVar7 = param_2[7];
sVar8 = param_2[8];
sVar9 = param_2[9];
sVar10 = param_2[10];
sVar11 = param_2[0xb];
sVar12 = param_2[0xc];
sVar13 = param_2[0xd];
sVar14 = param_2[0xe];
sVar15 = param_2[0xf];
*param_1 = *param_1 * *param_2;
param_1[1] = param_1[1] * sVar1;
param_1[2] = param_1[2] * sVar2;
param_1[3] = param_1[3] * sVar3;
param_1[4] = param_1[4] * sVar4;
param_1[5] = param_1[5] * sVar5;
param_1[6] = param_1[6] * sVar6;
param_1[7] = param_1[7] * sVar7;
param_1[8] = param_1[8] * sVar8;
param_1[9] = param_1[9] * sVar9;
param_1[10] = param_1[10] * sVar10;
param_1[0xb] = param_1[0xb] * sVar11;
param_1[0xc] = param_1[0xc] * sVar12;
param_1[0xd] = param_1[0xd] * sVar13;
param_1[0xe] = param_1[0xe] * sVar14;
param_1[0xf] = param_1[0xf] * sVar15;
sVar1 = param_2[0x11];
sVar2 = param_2[0x12];
sVar3 = param_2[0x13];
sVar4 = param_2[0x14];
sVar5 = param_2[0x15];
sVar6 = param_2[0x16];
sVar7 = param_2[0x17];
sVar8 = param_2[0x18];
sVar9 = param_2[0x19];
sVar10 = param_2[0x1a];
sVar11 = param_2[0x1b];
sVar12 = param_2[0x1c];
sVar13 = param_2[0x1d];
sVar14 = param_2[0x1e];
sVar15 = param_2[0x1f];
param_1[0x10] = param_1[0x10] * param_2[0x10];
param_1[0x11] = param_1[0x11] * sVar1;
param_1[0x12] = param_1[0x12] * sVar2;
param_1[0x13] = param_1[0x13] * sVar3;
param_1[0x14] = param_1[0x14] * sVar4;
param_1[0x15] = param_1[0x15] * sVar5;
param_1[0x16] = param_1[0x16] * sVar6;
param_1[0x17] = param_1[0x17] * sVar7;
param_1[0x18] = param_1[0x18] * sVar8;
param_1[0x19] = param_1[0x19] * sVar9;
param_1[0x1a] = param_1[0x1a] * sVar10;
param_1[0x1b] = param_1[0x1b] * sVar11;
param_1[0x1c] = param_1[0x1c] * sVar12;
param_1[0x1d] = param_1[0x1d] * sVar13;
param_1[0x1e] = param_1[0x1e] * sVar14;
param_1[0x1f] = param_1[0x1f] * sVar15;
sVar1 = param_2[0x21];
sVar2 = param_2[0x22];
sVar3 = param_2[0x23];
sVar4 = param_2[0x24];
sVar5 = param_2[0x25];
sVar6 = param_2[0x26];
sVar7 = param_2[0x27];
sVar8 = param_2[0x28];
sVar9 = param_2[0x29];
sVar10 = param_2[0x2a];
sVar11 = param_2[0x2b];
sVar12 = param_2[0x2c];
sVar13 = param_2[0x2d];
sVar14 = param_2[0x2e];
sVar15 = param_2[0x2f];
param_1[0x20] = param_1[0x20] * param_2[0x20];
param_1[0x21] = param_1[0x21] * sVar1;
param_1[0x22] = param_1[0x22] * sVar2;
param_1[0x23] = param_1[0x23] * sVar3;
param_1[0x24] = param_1[0x24] * sVar4;
param_1[0x25] = param_1[0x25] * sVar5;
param_1[0x26] = param_1[0x26] * sVar6;
param_1[0x27] = param_1[0x27] * sVar7;
param_1[0x28] = param_1[0x28] * sVar8;
param_1[0x29] = param_1[0x29] * sVar9;
param_1[0x2a] = param_1[0x2a] * sVar10;
param_1[0x2b] = param_1[0x2b] * sVar11;
param_1[0x2c] = param_1[0x2c] * sVar12;
param_1[0x2d] = param_1[0x2d] * sVar13;
param_1[0x2e] = param_1[0x2e] * sVar14;
param_1[0x2f] = param_1[0x2f] * sVar15;
sVar1 = param_2[0x31];
sVar2 = param_2[0x32];
sVar3 = param_2[0x33];
sVar4 = param_2[0x34];
sVar5 = param_2[0x35];
sVar6 = param_2[0x36];
sVar7 = param_2[0x37];
sVar8 = param_2[0x38];
sVar9 = param_2[0x39];
sVar10 = param_2[0x3a];
sVar11 = param_2[0x3b];
sVar12 = param_2[0x3c];
sVar13 = param_2[0x3d];
sVar14 = param_2[0x3e];
sVar15 = param_2[0x3f];
param_1[0x30] = param_1[0x30] * param_2[0x30];
param_1[0x31] = param_1[0x31] * sVar1;
param_1[0x32] = param_1[0x32] * sVar2;
param_1[0x33] = param_1[0x33] * sVar3;
param_1[0x34] = param_1[0x34] * sVar4;
param_1[0x35] = param_1[0x35] * sVar5;
param_1[0x36] = param_1[0x36] * sVar6;
param_1[0x37] = param_1[0x37] * sVar7;
param_1[0x38] = param_1[0x38] * sVar8;
param_1[0x39] = param_1[0x39] * sVar9;
param_1[0x3a] = param_1[0x3a] * sVar10;
param_1[0x3b] = param_1[0x3b] * sVar11;
param_1[0x3c] = param_1[0x3c] * sVar12;
param_1[0x3d] = param_1[0x3d] * sVar13;
param_1[0x3e] = param_1[0x3e] * sVar14;
param_1[0x3f] = param_1[0x3f] * sVar15;
}
}
else if (((uint)param_2 & 0xf) == 0) {
sVar1 = param_2[1];
sVar2 = param_2[2];
sVar3 = param_2[3];
sVar4 = param_2[4];
sVar5 = param_2[5];
sVar6 = param_2[6];
sVar7 = param_2[7];
sVar8 = param_2[8];
sVar9 = param_2[9];
sVar10 = param_2[10];
sVar11 = param_2[0xb];
sVar12 = param_2[0xc];
sVar13 = param_2[0xd];
sVar14 = param_2[0xe];
sVar15 = param_2[0xf];
*param_1 = *param_1 * *param_2;
param_1[1] = param_1[1] * sVar1;
param_1[2] = param_1[2] * sVar2;
param_1[3] = param_1[3] * sVar3;
param_1[4] = param_1[4] * sVar4;
param_1[5] = param_1[5] * sVar5;
param_1[6] = param_1[6] * sVar6;
param_1[7] = param_1[7] * sVar7;
param_1[8] = param_1[8] * sVar8;
param_1[9] = param_1[9] * sVar9;
param_1[10] = param_1[10] * sVar10;
param_1[0xb] = param_1[0xb] * sVar11;
param_1[0xc] = param_1[0xc] * sVar12;
param_1[0xd] = param_1[0xd] * sVar13;
param_1[0xe] = param_1[0xe] * sVar14;
param_1[0xf] = param_1[0xf] * sVar15;
sVar1 = param_2[0x11];
sVar2 = param_2[0x12];
sVar3 = param_2[0x13];
sVar4 = param_2[0x14];
sVar5 = param_2[0x15];
sVar6 = param_2[0x16];
sVar7 = param_2[0x17];
sVar8 = param_2[0x18];
sVar9 = param_2[0x19];
sVar10 = param_2[0x1a];
sVar11 = param_2[0x1b];
sVar12 = param_2[0x1c];
sVar13 = param_2[0x1d];
sVar14 = param_2[0x1e];
sVar15 = param_2[0x1f];
param_1[0x10] = param_1[0x10] * param_2[0x10];
param_1[0x11] = param_1[0x11] * sVar1;
param_1[0x12] = param_1[0x12] * sVar2;
param_1[0x13] = param_1[0x13] * sVar3;
param_1[0x14] = param_1[0x14] * sVar4;
param_1[0x15] = param_1[0x15] * sVar5;
param_1[0x16] = param_1[0x16] * sVar6;
param_1[0x17] = param_1[0x17] * sVar7;
param_1[0x18] = param_1[0x18] * sVar8;
param_1[0x19] = param_1[0x19] * sVar9;
param_1[0x1a] = param_1[0x1a] * sVar10;
param_1[0x1b] = param_1[0x1b] * sVar11;
param_1[0x1c] = param_1[0x1c] * sVar12;
param_1[0x1d] = param_1[0x1d] * sVar13;
param_1[0x1e] = param_1[0x1e] * sVar14;
param_1[0x1f] = param_1[0x1f] * sVar15;
sVar1 = param_2[0x21];
sVar2 = param_2[0x22];
sVar3 = param_2[0x23];
sVar4 = param_2[0x24];
sVar5 = param_2[0x25];
sVar6 = param_2[0x26];
sVar7 = param_2[0x27];
sVar8 = param_2[0x28];
sVar9 = param_2[0x29];
sVar10 = param_2[0x2a];
sVar11 = param_2[0x2b];
sVar12 = param_2[0x2c];
sVar13 = param_2[0x2d];
sVar14 = param_2[0x2e];
sVar15 = param_2[0x2f];
param_1[0x20] = param_1[0x20] * param_2[0x20];
param_1[0x21] = param_1[0x21] * sVar1;
param_1[0x22] = param_1[0x22] * sVar2;
param_1[0x23] = param_1[0x23] * sVar3;
param_1[0x24] = param_1[0x24] * sVar4;
param_1[0x25] = param_1[0x25] * sVar5;
param_1[0x26] = param_1[0x26] * sVar6;
param_1[0x27] = param_1[0x27] * sVar7;
param_1[0x28] = param_1[0x28] * sVar8;
param_1[0x29] = param_1[0x29] * sVar9;
param_1[0x2a] = param_1[0x2a] * sVar10;
param_1[0x2b] = param_1[0x2b] * sVar11;
param_1[0x2c] = param_1[0x2c] * sVar12;
param_1[0x2d] = param_1[0x2d] * sVar13;
param_1[0x2e] = param_1[0x2e] * sVar14;
param_1[0x2f] = param_1[0x2f] * sVar15;
sVar1 = param_2[0x31];
sVar2 = param_2[0x32];
sVar3 = param_2[0x33];
sVar4 = param_2[0x34];
sVar5 = param_2[0x35];
sVar6 = param_2[0x36];
sVar7 = param_2[0x37];
sVar8 = param_2[0x38];
sVar9 = param_2[0x39];
sVar10 = param_2[0x3a];
sVar11 = param_2[0x3b];
sVar12 = param_2[0x3c];
sVar13 = param_2[0x3d];
sVar14 = param_2[0x3e];
sVar15 = param_2[0x3f];
param_1[0x30] = param_1[0x30] * param_2[0x30];
param_1[0x31] = param_1[0x31] * sVar1;
param_1[0x32] = param_1[0x32] * sVar2;
param_1[0x33] = param_1[0x33] * sVar3;
param_1[0x34] = param_1[0x34] * sVar4;
param_1[0x35] = param_1[0x35] * sVar5;
param_1[0x36] = param_1[0x36] * sVar6;
param_1[0x37] = param_1[0x37] * sVar7;
param_1[0x38] = param_1[0x38] * sVar8;
param_1[0x39] = param_1[0x39] * sVar9;
param_1[0x3a] = param_1[0x3a] * sVar10;
param_1[0x3b] = param_1[0x3b] * sVar11;
param_1[0x3c] = param_1[0x3c] * sVar12;
param_1[0x3d] = param_1[0x3d] * sVar13;
param_1[0x3e] = param_1[0x3e] * sVar14;
param_1[0x3f] = param_1[0x3f] * sVar15;
}
else {
sVar1 = param_2[1];
sVar2 = param_2[2];
sVar3 = param_2[3];
sVar4 = param_2[4];
sVar5 = param_2[5];
sVar6 = param_2[6];
sVar7 = param_2[7];
sVar8 = param_2[8];
sVar9 = param_2[9];
sVar10 = param_2[10];
sVar11 = param_2[0xb];
sVar12 = param_2[0xc];
sVar13 = param_2[0xd];
sVar14 = param_2[0xe];
sVar15 = param_2[0xf];
*param_1 = *param_1 * *param_2;
param_1[1] = param_1[1] * sVar1;
param_1[2] = param_1[2] * sVar2;
param_1[3] = param_1[3] * sVar3;
param_1[4] = param_1[4] * sVar4;
param_1[5] = param_1[5] * sVar5;
param_1[6] = param_1[6] * sVar6;
param_1[7] = param_1[7] * sVar7;
param_1[8] = param_1[8] * sVar8;
param_1[9] = param_1[9] * sVar9;
param_1[10] = param_1[10] * sVar10;
param_1[0xb] = param_1[0xb] * sVar11;
param_1[0xc] = param_1[0xc] * sVar12;
param_1[0xd] = param_1[0xd] * sVar13;
param_1[0xe] = param_1[0xe] * sVar14;
param_1[0xf] = param_1[0xf] * sVar15;
sVar1 = param_2[0x11];
sVar2 = param_2[0x12];
sVar3 = param_2[0x13];
sVar4 = param_2[0x14];
sVar5 = param_2[0x15];
sVar6 = param_2[0x16];
sVar7 = param_2[0x17];
sVar8 = param_2[0x18];
sVar9 = param_2[0x19];
sVar10 = param_2[0x1a];
sVar11 = param_2[0x1b];
sVar12 = param_2[0x1c];
sVar13 = param_2[0x1d];
sVar14 = param_2[0x1e];
sVar15 = param_2[0x1f];
param_1[0x10] = param_1[0x10] * param_2[0x10];
param_1[0x11] = param_1[0x11] * sVar1;
param_1[0x12] = param_1[0x12] * sVar2;
param_1[0x13] = param_1[0x13] * sVar3;
param_1[0x14] = param_1[0x14] * sVar4;
param_1[0x15] = param_1[0x15] * sVar5;
param_1[0x16] = param_1[0x16] * sVar6;
param_1[0x17] = param_1[0x17] * sVar7;
param_1[0x18] = param_1[0x18] * sVar8;
param_1[0x19] = param_1[0x19] * sVar9;
param_1[0x1a] = param_1[0x1a] * sVar10;
param_1[0x1b] = param_1[0x1b] * sVar11;
param_1[0x1c] = param_1[0x1c] * sVar12;
param_1[0x1d] = param_1[0x1d] * sVar13;
param_1[0x1e] = param_1[0x1e] * sVar14;
param_1[0x1f] = param_1[0x1f] * sVar15;
sVar1 = param_2[0x21];
sVar2 = param_2[0x22];
sVar3 = param_2[0x23];
sVar4 = param_2[0x24];
sVar5 = param_2[0x25];
sVar6 = param_2[0x26];
sVar7 = param_2[0x27];
sVar8 = param_2[0x28];
sVar9 = param_2[0x29];
sVar10 = param_2[0x2a];
sVar11 = param_2[0x2b];
sVar12 = param_2[0x2c];
sVar13 = param_2[0x2d];
sVar14 = param_2[0x2e];
sVar15 = param_2[0x2f];
param_1[0x20] = param_1[0x20] * param_2[0x20];
param_1[0x21] = param_1[0x21] * sVar1;
param_1[0x22] = param_1[0x22] * sVar2;
param_1[0x23] = param_1[0x23] * sVar3;
param_1[0x24] = param_1[0x24] * sVar4;
param_1[0x25] = param_1[0x25] * sVar5;
param_1[0x26] = param_1[0x26] * sVar6;
param_1[0x27] = param_1[0x27] * sVar7;
param_1[0x28] = param_1[0x28] * sVar8;
param_1[0x29] = param_1[0x29] * sVar9;
param_1[0x2a] = param_1[0x2a] * sVar10;
param_1[0x2b] = param_1[0x2b] * sVar11;
param_1[0x2c] = param_1[0x2c] * sVar12;
param_1[0x2d] = param_1[0x2d] * sVar13;
param_1[0x2e] = param_1[0x2e] * sVar14;
param_1[0x2f] = param_1[0x2f] * sVar15;
sVar1 = param_2[0x31];
sVar2 = param_2[0x32];
sVar3 = param_2[0x33];
sVar4 = param_2[0x34];
sVar5 = param_2[0x35];
sVar6 = param_2[0x36];
sVar7 = param_2[0x37];
sVar8 = param_2[0x38];
sVar9 = param_2[0x39];
sVar10 = param_2[0x3a];
sVar11 = param_2[0x3b];
sVar12 = param_2[0x3c];
sVar13 = param_2[0x3d];
sVar14 = param_2[0x3e];
sVar15 = param_2[0x3f];
param_1[0x30] = param_1[0x30] * param_2[0x30];
param_1[0x31] = param_1[0x31] * sVar1;
param_1[0x32] = param_1[0x32] * sVar2;
param_1[0x33] = param_1[0x33] * sVar3;
param_1[0x34] = param_1[0x34] * sVar4;
param_1[0x35] = param_1[0x35] * sVar5;
param_1[0x36] = param_1[0x36] * sVar6;
param_1[0x37] = param_1[0x37] * sVar7;
param_1[0x38] = param_1[0x38] * sVar8;
param_1[0x39] = param_1[0x39] * sVar9;
param_1[0x3a] = param_1[0x3a] * sVar10;
param_1[0x3b] = param_1[0x3b] * sVar11;
param_1[0x3c] = param_1[0x3c] * sVar12;
param_1[0x3d] = param_1[0x3d] * sVar13;
param_1[0x3e] = param_1[0x3e] * sVar14;
param_1[0x3f] = param_1[0x3f] * sVar15;
}
return;
}
// --- FUN_00652ae0 at 0x00652AE0 (size: 2493) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00652ae0(undefined8 *param_1)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
undefined4 uVar5;
int iVar6;
undefined8 uVar7;
int iVar9;
ulonglong uVar8;
int iVar10;
undefined8 uVar11;
int iVar12;
undefined8 uVar13;
int iVar14;
undefined8 uVar15;
int iVar16;
undefined8 uVar17;
uint uVar19;
ulonglong uVar18;
int iVar20;
int iVar22;
undefined8 uVar21;
undefined4 uVar23;
undefined8 uVar24;
undefined8 uVar25;
uVar11 = *param_1;
uVar13 = param_1[1];
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833c90,uVar7);
uVar17 = pmaddwd(DAT_00833c98,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833ca0);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833cb0,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833cb8,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833ca8);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833cc0);
uVar17 = pmaddwd(uVar25,_DAT_00833cc8);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
*param_1 = uVar11;
uVar11 = param_1[2];
uVar13 = param_1[3];
param_1[1] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833cd0,uVar7);
uVar17 = pmaddwd(DAT_00833cd8,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833ce0);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833cf0,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833cf8,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833ce8);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d00);
uVar17 = pmaddwd(uVar25,_DAT_00833d08);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[2] = uVar11;
uVar11 = param_1[4];
uVar13 = param_1[5];
param_1[3] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833d10,uVar7);
uVar17 = pmaddwd(DAT_00833d18,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833d20);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833d30,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833d38,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833d28);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d40);
uVar17 = pmaddwd(uVar25,_DAT_00833d48);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[4] = uVar11;
uVar11 = param_1[6];
uVar13 = param_1[7];
param_1[5] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833d50,uVar7);
uVar17 = pmaddwd(DAT_00833d58,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833d60);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833d70,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833d78,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833d68);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d80);
uVar17 = pmaddwd(uVar25,_DAT_00833d88);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[6] = uVar11;
uVar11 = param_1[8];
uVar13 = param_1[9];
param_1[7] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833c90,uVar7);
uVar17 = pmaddwd(DAT_00833c98,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833ca0);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833cb0,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833cb8,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833ca8);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833cc0);
uVar17 = pmaddwd(uVar25,_DAT_00833cc8);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[8] = uVar11;
uVar11 = param_1[10];
uVar13 = param_1[0xb];
param_1[9] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833d50,uVar7);
uVar17 = pmaddwd(DAT_00833d58,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833d60);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833d70,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833d78,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833d68);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d80);
uVar17 = pmaddwd(uVar25,_DAT_00833d88);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[10] = uVar11;
uVar11 = param_1[0xc];
uVar13 = param_1[0xd];
param_1[0xb] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833d10,uVar7);
uVar17 = pmaddwd(DAT_00833d18,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833d20);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833d30,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833d38,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833d28);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d40);
uVar17 = pmaddwd(uVar25,_DAT_00833d48);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar7 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar7 >> 0x20);
param_1[0xc] = uVar11;
uVar11 = param_1[0xe];
uVar13 = param_1[0xf];
param_1[0xd] = CONCAT44(uVar19 << 0x10,(uint)uVar7 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar7 >> 0x10);
uVar23 = CONCAT22((short)((ulonglong)uVar13 >> 0x10),(short)((ulonglong)uVar11 >> 0x10));
uVar5 = CONCAT22((short)uVar13,(short)uVar11);
uVar7 = CONCAT44(uVar5,uVar5);
uVar5 = CONCAT22((short)((ulonglong)uVar13 >> 0x20),(short)((ulonglong)uVar11 >> 0x20));
uVar15 = pmaddwd(DAT_00833cd0,uVar7);
uVar17 = pmaddwd(DAT_00833cd8,CONCAT44(uVar5,uVar5));
uVar21 = CONCAT44(uVar23,uVar23);
uVar7 = pmaddwd(uVar7,_DAT_00833ce0);
uVar23 = (undefined4)
(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar11 >> 0x30),uVar5)) >> 0x20);
uVar25 = CONCAT44(uVar23,uVar23);
uVar11 = pmaddwd(DAT_00833cf0,uVar21);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar24 = pmaddwd(DAT_00833cf8,uVar25);
uVar13 = pmaddwd(CONCAT44(uVar5,uVar5),_DAT_00833ce8);
iVar14 = (int)uVar15 + (int)DAT_00833bf0 + (int)uVar17;
iVar16 = (int)((ulonglong)uVar15 >> 0x20) + iVar9 + (int)((ulonglong)uVar17 >> 0x20);
uVar15 = pmaddwd(uVar21,_DAT_00833d00);
uVar17 = pmaddwd(uVar25,_DAT_00833d08);
iVar10 = (int)uVar11 + (int)uVar24;
iVar12 = (int)((ulonglong)uVar11 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
iVar6 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar13;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar13 >> 0x20);
iVar20 = (int)uVar15 + (int)uVar17;
iVar22 = (int)((ulonglong)uVar15 >> 0x20) + (int)((ulonglong)uVar17 >> 0x20);
uVar11 = packssdw(CONCAT44(iVar12 + iVar16 >> 0xc,iVar10 + iVar14 >> 0xc),
CONCAT44(iVar9 + iVar22 >> 0xc,iVar6 + iVar20 >> 0xc));
uVar13 = packssdw(CONCAT44(iVar9 - iVar22 >> 0xc,iVar6 - iVar20 >> 0xc),
CONCAT44(iVar16 - iVar12 >> 0xc,iVar14 - iVar10 >> 0xc));
uVar19 = (uint)((ulonglong)uVar13 >> 0x20);
param_1[0xe] = uVar11;
uVar11 = param_1[10];
param_1[0xf] = CONCAT44(uVar19 << 0x10,(uint)uVar13 << 0x10) |
CONCAT44(uVar19 >> 0x10,(uint)uVar13 >> 0x10);
uVar13 = param_1[6];
uVar7 = pmulhw(uVar11,DAT_00833c60);
uVar15 = pmulhw(DAT_00833c60,uVar13);
uVar17 = pmulhw(param_1[0xe],DAT_00833c40);
uVar7 = paddsw(uVar7,uVar11);
uVar21 = pmulhw(DAT_00833c40,param_1[2]);
uVar15 = paddsw(uVar15,uVar13);
uVar13 = paddsw(uVar7,uVar13);
uVar7 = psubsw(uVar11,uVar15);
uVar25 = pmulhw(param_1[0xc],DAT_00833c50);
uVar15 = pmulhw(DAT_00833c50,param_1[4]);
uVar21 = psubsw(uVar21,param_1[0xe]);
uVar17 = paddsw(uVar17,param_1[2]);
uVar11 = paddsw(uVar13,uVar17);
uVar11 = paddsw(uVar11,_DAT_00833be0);
uVar13 = psubsw(uVar17,uVar13);
uVar24 = paddsw(uVar25,param_1[4]);
uVar15 = psubsw(uVar15,param_1[0xc]);
uVar17 = psubsw(uVar21,uVar7);
uVar25 = paddsw(uVar17,_DAT_00833be0);
uVar21 = paddsw(uVar21,uVar7);
param_1[0xe] = uVar11;
uVar11 = DAT_00833c70;
uVar17 = paddsw(uVar13,uVar25);
uVar7 = pmulhw(DAT_00833c70,uVar17);
param_1[6] = uVar21;
uVar13 = psubsw(uVar13,uVar25);
uVar11 = pmulhw(uVar11,uVar13);
uVar18 = paddsw(uVar17,uVar7);
uVar18 = uVar18 | _DAT_00833be0;
uVar7 = paddsw(param_1[8],*param_1);
uVar21 = psubsw(*param_1,param_1[8]);
uVar8 = paddsw(uVar11,uVar13);
uVar8 = uVar8 | _DAT_00833be0;
uVar11 = paddsw(uVar7,uVar24);
uVar17 = paddsw(uVar11,_DAT_00833c00);
uVar13 = psubsw(uVar7,uVar24);
uVar11 = paddsw(uVar21,uVar15);
uVar25 = paddsw(uVar11,_DAT_00833c00);
uVar11 = paddsw(param_1[0xe],uVar17);
uVar24 = psraw(uVar11,5);
uVar11 = psubsw(uVar21,uVar15);
uVar7 = paddsw(uVar13,_DAT_00833c10);
uVar11 = paddsw(uVar11,_DAT_00833c10);
uVar13 = paddsw(uVar25,uVar18);
uVar15 = paddsw(uVar24,_DAT_00833c20);
sVar1 = (short)uVar15;
sVar2 = (short)((ulonglong)uVar15 >> 0x10);
sVar3 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
*param_1 = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >> 0x18
),(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar15
>> 0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) - (0xff < sVar3))
,(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar15 - (0xff < sVar1)));
uVar13 = psraw(uVar13,5);
uVar15 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar15;
sVar2 = (short)((ulonglong)uVar15 >> 0x10);
sVar3 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
uVar13 = paddsw(uVar11,uVar8);
param_1[2] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar15 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar15 - (0xff < sVar1)));
uVar13 = psraw(uVar13,5);
uVar21 = psubsw(uVar11,uVar8);
uVar15 = paddsw(param_1[6],uVar7);
uVar7 = psubsw(uVar7,param_1[6]);
uVar11 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar21 = psraw(uVar21,5);
param_1[4] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar11 = psraw(uVar15,5);
uVar15 = psubsw(uVar17,param_1[0xe]);
uVar13 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar13;
sVar2 = (short)((ulonglong)uVar13 >> 0x10);
sVar3 = (short)((ulonglong)uVar13 >> 0x20);
sVar4 = (short)((ulonglong)uVar13 >> 0x30);
uVar11 = psraw(uVar7,5);
param_1[6] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar13 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar13 - (0xff < sVar1)));
uVar11 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar13 = psubsw(uVar25,uVar18);
param_1[8] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar7 = paddsw(uVar21,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psraw(uVar13,5);
param_1[10] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) - (0xff < sVar4)
),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8))
,(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar11 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar13 = psraw(uVar15,5);
param_1[0xc] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar11 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar11 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
param_1[0xe] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar11 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar11 = param_1[0xb];
uVar13 = param_1[7];
uVar7 = pmulhw(uVar11,DAT_00833c60);
uVar15 = pmulhw(DAT_00833c60,uVar13);
uVar17 = pmulhw(param_1[0xf],DAT_00833c40);
uVar7 = paddsw(uVar7,uVar11);
uVar21 = pmulhw(DAT_00833c40,param_1[3]);
uVar15 = paddsw(uVar15,uVar13);
uVar13 = paddsw(uVar7,uVar13);
uVar7 = psubsw(uVar11,uVar15);
uVar25 = pmulhw(param_1[0xd],DAT_00833c50);
uVar15 = pmulhw(DAT_00833c50,param_1[5]);
uVar21 = psubsw(uVar21,param_1[0xf]);
uVar17 = paddsw(uVar17,param_1[3]);
uVar11 = paddsw(uVar13,uVar17);
uVar11 = paddsw(uVar11,_DAT_00833be0);
uVar13 = psubsw(uVar17,uVar13);
uVar24 = paddsw(uVar25,param_1[5]);
uVar15 = psubsw(uVar15,param_1[0xd]);
uVar17 = psubsw(uVar21,uVar7);
uVar25 = paddsw(uVar17,_DAT_00833be0);
uVar21 = paddsw(uVar21,uVar7);
param_1[0xf] = uVar11;
uVar11 = DAT_00833c70;
uVar17 = paddsw(uVar13,uVar25);
uVar7 = pmulhw(DAT_00833c70,uVar17);
param_1[7] = uVar21;
uVar13 = psubsw(uVar13,uVar25);
uVar11 = pmulhw(uVar11,uVar13);
uVar18 = paddsw(uVar17,uVar7);
uVar18 = uVar18 | _DAT_00833be0;
uVar7 = paddsw(param_1[9],param_1[1]);
uVar21 = psubsw(param_1[1],param_1[9]);
uVar8 = paddsw(uVar11,uVar13);
uVar8 = uVar8 | _DAT_00833be0;
uVar11 = paddsw(uVar7,uVar24);
uVar17 = paddsw(uVar11,_DAT_00833c00);
uVar13 = psubsw(uVar7,uVar24);
uVar11 = paddsw(uVar21,uVar15);
uVar25 = paddsw(uVar11,_DAT_00833c00);
uVar11 = paddsw(param_1[0xf],uVar17);
uVar24 = psraw(uVar11,5);
uVar11 = psubsw(uVar21,uVar15);
uVar7 = paddsw(uVar13,_DAT_00833c10);
uVar11 = paddsw(uVar11,_DAT_00833c10);
uVar13 = paddsw(uVar25,uVar18);
uVar15 = paddsw(uVar24,_DAT_00833c20);
sVar1 = (short)uVar15;
sVar2 = (short)((ulonglong)uVar15 >> 0x10);
sVar3 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
param_1[1] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar15 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar15 - (0xff < sVar1)));
uVar13 = psraw(uVar13,5);
uVar15 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar15;
sVar2 = (short)((ulonglong)uVar15 >> 0x10);
sVar3 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
uVar13 = paddsw(uVar11,uVar8);
param_1[3] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar15 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar15 - (0xff < sVar1)));
uVar13 = psraw(uVar13,5);
uVar21 = psubsw(uVar11,uVar8);
uVar15 = paddsw(param_1[7],uVar7);
uVar7 = psubsw(uVar7,param_1[7]);
uVar11 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar21 = psraw(uVar21,5);
param_1[5] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar11 = psraw(uVar15,5);
uVar15 = psubsw(uVar17,param_1[0xf]);
uVar13 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar13;
sVar2 = (short)((ulonglong)uVar13 >> 0x10);
sVar3 = (short)((ulonglong)uVar13 >> 0x20);
sVar4 = (short)((ulonglong)uVar13 >> 0x30);
uVar11 = psraw(uVar7,5);
param_1[7] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar13 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar13 - (0xff < sVar1)));
uVar11 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar13 = psubsw(uVar25,uVar18);
param_1[9] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar7 = paddsw(uVar21,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psraw(uVar13,5);
param_1[0xb] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar11 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar13 = psraw(uVar15,5);
param_1[0xd] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar11 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar11 = paddsw(uVar13,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
param_1[0xf] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar11 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
return;
}
// --- FUN_006534a0 at 0x006534A0 (size: 2373) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_006534a0(undefined8 *param_1)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
int iVar5;
undefined8 uVar6;
undefined8 uVar7;
int iVar9;
ulonglong uVar8;
undefined8 uVar10;
undefined8 uVar11;
int iVar12;
undefined8 uVar13;
int iVar14;
int iVar15;
undefined8 uVar16;
int iVar17;
undefined8 uVar18;
ulonglong uVar19;
undefined8 uVar20;
int iVar21;
undefined8 uVar22;
int iVar23;
undefined8 uVar24;
uVar7 = *param_1;
uVar11 = param_1[1];
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833d90,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833d98,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833db0,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833db8,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833da0);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833da8);
uVar6 = pmaddwd(uVar13,_DAT_00833dc0);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833dc8);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
*param_1 = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[2];
uVar11 = param_1[3];
param_1[1] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833dd0,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833dd8,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833df0,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833df8,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833de0);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833de8);
uVar6 = pmaddwd(uVar13,_DAT_00833e00);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e08);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[2] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[4];
uVar11 = param_1[5];
param_1[3] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833e10,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833e18,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833e30,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833e38,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833e20);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833e28);
uVar6 = pmaddwd(uVar13,_DAT_00833e40);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e48);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[4] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[6];
uVar11 = param_1[7];
param_1[5] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833e50,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833e58,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833e70,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833e78,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833e60);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833e68);
uVar6 = pmaddwd(uVar13,_DAT_00833e80);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e88);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[6] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[8];
uVar11 = param_1[9];
param_1[7] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833d90,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833d98,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833db0,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833db8,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833da0);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833da8);
uVar6 = pmaddwd(uVar13,_DAT_00833dc0);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833dc8);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[8] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[10];
uVar11 = param_1[0xb];
param_1[9] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833e50,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833e58,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833e70,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833e78,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833e60);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833e68);
uVar6 = pmaddwd(uVar13,_DAT_00833e80);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e88);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[10] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[0xc];
uVar11 = param_1[0xd];
param_1[0xb] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833e10,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833e18,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833e30,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833e38,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833e20);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833e28);
uVar6 = pmaddwd(uVar13,_DAT_00833e40);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e48);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[0xc] = uVar7;
uVar6 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[0xe];
uVar11 = param_1[0xf];
param_1[0xd] = uVar6;
uVar6 = pshufw(uVar7,uVar7,0x88);
uVar16 = pmaddwd(DAT_00833dd0,uVar6);
uVar10 = pshufw(uVar11,uVar11,0x88);
uVar18 = pmaddwd(DAT_00833dd8,uVar10);
uVar13 = pshufw(uVar7,uVar7,0xdd);
uVar22 = pmaddwd(DAT_00833df0,uVar13);
uVar20 = pshufw(uVar11,uVar11,0xdd);
uVar24 = pmaddwd(DAT_00833df8,uVar20);
iVar9 = (int)((ulonglong)DAT_00833bf0 >> 0x20);
uVar7 = pmaddwd(uVar6,_DAT_00833de0);
iVar15 = (int)uVar16 + (int)DAT_00833bf0 + (int)uVar18;
iVar17 = (int)((ulonglong)uVar16 >> 0x20) + iVar9 + (int)((ulonglong)uVar18 >> 0x20);
uVar11 = pmaddwd(uVar10,_DAT_00833de8);
uVar6 = pmaddwd(uVar13,_DAT_00833e00);
iVar21 = (int)uVar22 + (int)uVar24;
iVar23 = (int)((ulonglong)uVar22 >> 0x20) + (int)((ulonglong)uVar24 >> 0x20);
uVar10 = pmaddwd(uVar20,_DAT_00833e08);
iVar5 = (int)uVar7 + (int)DAT_00833bf0 + (int)uVar11;
iVar9 = (int)((ulonglong)uVar7 >> 0x20) + iVar9 + (int)((ulonglong)uVar11 >> 0x20);
iVar12 = (int)uVar6 + (int)uVar10;
iVar14 = (int)((ulonglong)uVar6 >> 0x20) + (int)((ulonglong)uVar10 >> 0x20);
uVar7 = packssdw(CONCAT44(iVar17 + iVar23 >> 0xc,iVar15 + iVar21 >> 0xc),
CONCAT44(iVar9 + iVar14 >> 0xc,iVar5 + iVar12 >> 0xc));
uVar11 = packssdw(CONCAT44(iVar9 - iVar14 >> 0xc,iVar5 - iVar12 >> 0xc),
CONCAT44(iVar17 - iVar23 >> 0xc,iVar15 - iVar21 >> 0xc));
param_1[0xe] = uVar7;
uVar11 = pshufw(uVar11,uVar11,0xb1);
uVar7 = param_1[10];
param_1[0xf] = uVar11;
uVar11 = param_1[6];
uVar6 = pmulhw(uVar7,DAT_00833c60);
uVar10 = pmulhw(DAT_00833c60,uVar11);
uVar13 = pmulhw(param_1[0xe],DAT_00833c40);
uVar6 = paddsw(uVar6,uVar7);
uVar16 = pmulhw(DAT_00833c40,param_1[2]);
uVar10 = paddsw(uVar10,uVar11);
uVar11 = paddsw(uVar6,uVar11);
uVar6 = psubsw(uVar7,uVar10);
uVar18 = pmulhw(param_1[0xc],DAT_00833c50);
uVar10 = pmulhw(DAT_00833c50,param_1[4]);
uVar16 = psubsw(uVar16,param_1[0xe]);
uVar13 = paddsw(uVar13,param_1[2]);
uVar7 = paddsw(uVar11,uVar13);
uVar7 = paddsw(uVar7,_DAT_00833be0);
uVar11 = psubsw(uVar13,uVar11);
uVar20 = paddsw(uVar18,param_1[4]);
uVar10 = psubsw(uVar10,param_1[0xc]);
uVar13 = psubsw(uVar16,uVar6);
uVar18 = paddsw(uVar13,_DAT_00833be0);
uVar16 = paddsw(uVar16,uVar6);
param_1[0xe] = uVar7;
uVar7 = DAT_00833c70;
uVar13 = paddsw(uVar11,uVar18);
uVar6 = pmulhw(DAT_00833c70,uVar13);
param_1[6] = uVar16;
uVar11 = psubsw(uVar11,uVar18);
uVar7 = pmulhw(uVar7,uVar11);
uVar19 = paddsw(uVar13,uVar6);
uVar19 = uVar19 | _DAT_00833be0;
uVar6 = paddsw(param_1[8],*param_1);
uVar16 = psubsw(*param_1,param_1[8]);
uVar8 = paddsw(uVar7,uVar11);
uVar8 = uVar8 | _DAT_00833be0;
uVar7 = paddsw(uVar6,uVar20);
uVar13 = paddsw(uVar7,_DAT_00833c00);
uVar11 = psubsw(uVar6,uVar20);
uVar7 = paddsw(uVar16,uVar10);
uVar18 = paddsw(uVar7,_DAT_00833c00);
uVar7 = paddsw(param_1[0xe],uVar13);
uVar20 = psraw(uVar7,5);
uVar7 = psubsw(uVar16,uVar10);
uVar6 = paddsw(uVar11,_DAT_00833c10);
uVar7 = paddsw(uVar7,_DAT_00833c10);
uVar11 = paddsw(uVar18,uVar19);
uVar10 = paddsw(uVar20,_DAT_00833c20);
sVar1 = (short)uVar10;
sVar2 = (short)((ulonglong)uVar10 >> 0x10);
sVar3 = (short)((ulonglong)uVar10 >> 0x20);
sVar4 = (short)((ulonglong)uVar10 >> 0x30);
*param_1 = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >> 0x18
),(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar10
>> 0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar3))
,(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar10 - (0xff < sVar1)));
uVar11 = psraw(uVar11,5);
uVar10 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar10;
sVar2 = (short)((ulonglong)uVar10 >> 0x10);
sVar3 = (short)((ulonglong)uVar10 >> 0x20);
sVar4 = (short)((ulonglong)uVar10 >> 0x30);
uVar11 = paddsw(uVar7,uVar8);
param_1[2] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar10 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar10 - (0xff < sVar1)));
uVar11 = psraw(uVar11,5);
uVar16 = psubsw(uVar7,uVar8);
uVar10 = paddsw(param_1[6],uVar6);
uVar6 = psubsw(uVar6,param_1[6]);
uVar7 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar16 = psraw(uVar16,5);
param_1[4] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar7 >> 0x30
) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) - (0xff < sVar3)
),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar7 = psraw(uVar10,5);
uVar10 = psubsw(uVar13,param_1[0xe]);
uVar11 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar7 = psraw(uVar6,5);
param_1[6] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar7 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psubsw(uVar18,uVar19);
param_1[8] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar7 >> 0x30
) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) - (0xff < sVar3)
),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar6 = paddsw(uVar16,_DAT_00833c20);
sVar1 = (short)uVar6;
sVar2 = (short)((ulonglong)uVar6 >> 0x10);
sVar3 = (short)((ulonglong)uVar6 >> 0x20);
sVar4 = (short)((ulonglong)uVar6 >> 0x30);
uVar7 = psraw(uVar11,5);
param_1[10] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar6 >>
0x30) - (0xff < sVar4)
),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar6 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8))
,(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar6 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar6 - (0xff < sVar1)));
uVar7 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psraw(uVar10,5);
param_1[0xc] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar7 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
param_1[0xe] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar7 = param_1[0xb];
uVar11 = param_1[7];
uVar6 = pmulhw(uVar7,DAT_00833c60);
uVar10 = pmulhw(DAT_00833c60,uVar11);
uVar13 = pmulhw(param_1[0xf],DAT_00833c40);
uVar6 = paddsw(uVar6,uVar7);
uVar16 = pmulhw(DAT_00833c40,param_1[3]);
uVar10 = paddsw(uVar10,uVar11);
uVar11 = paddsw(uVar6,uVar11);
uVar6 = psubsw(uVar7,uVar10);
uVar18 = pmulhw(param_1[0xd],DAT_00833c50);
uVar10 = pmulhw(DAT_00833c50,param_1[5]);
uVar16 = psubsw(uVar16,param_1[0xf]);
uVar13 = paddsw(uVar13,param_1[3]);
uVar7 = paddsw(uVar11,uVar13);
uVar7 = paddsw(uVar7,_DAT_00833be0);
uVar11 = psubsw(uVar13,uVar11);
uVar20 = paddsw(uVar18,param_1[5]);
uVar10 = psubsw(uVar10,param_1[0xd]);
uVar13 = psubsw(uVar16,uVar6);
uVar18 = paddsw(uVar13,_DAT_00833be0);
uVar16 = paddsw(uVar16,uVar6);
param_1[0xf] = uVar7;
uVar7 = DAT_00833c70;
uVar13 = paddsw(uVar11,uVar18);
uVar6 = pmulhw(DAT_00833c70,uVar13);
param_1[7] = uVar16;
uVar11 = psubsw(uVar11,uVar18);
uVar7 = pmulhw(uVar7,uVar11);
uVar19 = paddsw(uVar13,uVar6);
uVar19 = uVar19 | _DAT_00833be0;
uVar6 = paddsw(param_1[9],param_1[1]);
uVar16 = psubsw(param_1[1],param_1[9]);
uVar8 = paddsw(uVar7,uVar11);
uVar8 = uVar8 | _DAT_00833be0;
uVar7 = paddsw(uVar6,uVar20);
uVar13 = paddsw(uVar7,_DAT_00833c00);
uVar11 = psubsw(uVar6,uVar20);
uVar7 = paddsw(uVar16,uVar10);
uVar18 = paddsw(uVar7,_DAT_00833c00);
uVar7 = paddsw(param_1[0xf],uVar13);
uVar20 = psraw(uVar7,5);
uVar7 = psubsw(uVar16,uVar10);
uVar6 = paddsw(uVar11,_DAT_00833c10);
uVar7 = paddsw(uVar7,_DAT_00833c10);
uVar11 = paddsw(uVar18,uVar19);
uVar10 = paddsw(uVar20,_DAT_00833c20);
sVar1 = (short)uVar10;
sVar2 = (short)((ulonglong)uVar10 >> 0x10);
sVar3 = (short)((ulonglong)uVar10 >> 0x20);
sVar4 = (short)((ulonglong)uVar10 >> 0x30);
param_1[1] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar10 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar10 - (0xff < sVar1)));
uVar11 = psraw(uVar11,5);
uVar10 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar10;
sVar2 = (short)((ulonglong)uVar10 >> 0x10);
sVar3 = (short)((ulonglong)uVar10 >> 0x20);
sVar4 = (short)((ulonglong)uVar10 >> 0x30);
uVar11 = paddsw(uVar7,uVar8);
param_1[3] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar10 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar10 - (0xff < sVar1)));
uVar11 = psraw(uVar11,5);
uVar16 = psubsw(uVar7,uVar8);
uVar10 = paddsw(param_1[7],uVar6);
uVar6 = psubsw(uVar6,param_1[7]);
uVar7 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar16 = psraw(uVar16,5);
param_1[5] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar7 >> 0x30
) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) - (0xff < sVar3)
),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar7 = psraw(uVar10,5);
uVar10 = psubsw(uVar13,param_1[0xf]);
uVar11 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar11;
sVar2 = (short)((ulonglong)uVar11 >> 0x10);
sVar3 = (short)((ulonglong)uVar11 >> 0x20);
sVar4 = (short)((ulonglong)uVar11 >> 0x30);
uVar7 = psraw(uVar6,5);
param_1[7] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar11 >>
0x30) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)));
uVar7 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psubsw(uVar18,uVar19);
param_1[9] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar7 >> 0x30
) - (0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) - (0xff < sVar3)
),(char)((uint)DAT_00833c30 >> 8)),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10) -
(0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar6 = paddsw(uVar16,_DAT_00833c20);
sVar1 = (short)uVar6;
sVar2 = (short)((ulonglong)uVar6 >> 0x10);
sVar3 = (short)((ulonglong)uVar6 >> 0x20);
sVar4 = (short)((ulonglong)uVar6 >> 0x30);
uVar7 = psraw(uVar11,5);
param_1[0xb] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar6 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar6 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar6 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar6 - (0xff < sVar1)));
uVar7 = paddsw(uVar7,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
uVar11 = psraw(uVar10,5);
param_1[0xd] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
uVar7 = paddsw(uVar11,_DAT_00833c20);
sVar1 = (short)uVar7;
sVar2 = (short)((ulonglong)uVar7 >> 0x10);
sVar3 = (short)((ulonglong)uVar7 >> 0x20);
sVar4 = (short)((ulonglong)uVar7 >> 0x30);
param_1[0xf] = CONCAT62(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11((char)((uint)DAT_00833c30 >>
0x18),
(0 < sVar4) * (sVar4 < 0x100)
* (char)((ulonglong)uVar7 >>
0x30) -
(0xff < sVar4)),
(char)((uint)DAT_00833c30 >> 0x10)),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar7 >> 0x20) -
(0xff < sVar3)),(char)((uint)DAT_00833c30 >> 8)
),
(0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar7 >> 0x10)
- (0xff < sVar2)),
CONCAT11((char)DAT_00833c30,
(0 < sVar1) * (sVar1 < 0x100) * (char)uVar7 - (0xff < sVar1)));
return;
}
// --- FUN_00653df0 at 0x00653DF0 (size: 3349) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00653df0(undefined1 (*param_1) [16],undefined8 param_2,undefined1 param_3 [16],
undefined1 param_4 [16],undefined1 param_5 [16],undefined1 param_6 [16],
undefined1 param_7 [16],undefined1 param_8 [16],undefined1 param_9 [16])
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
short sVar7;
short sVar8;
undefined1 auVar9 [16];
undefined1 uVar10;
undefined1 uVar11;
undefined1 uVar12;
undefined1 uVar13;
undefined1 uVar14;
undefined1 uVar15;
undefined1 uVar16;
undefined1 uVar17;
undefined1 (*pauVar18) [16];
undefined1 auVar19 [16];
int iVar20;
int iVar26;
int iVar27;
undefined1 in_XMM1 [16];
undefined1 auVar21 [16];
int iVar28;
undefined1 auVar22 [16];
undefined1 auVar23 [16];
undefined1 auVar24 [16];
undefined1 auVar25 [16];
undefined1 auVar29 [16];
undefined1 auVar30 [16];
undefined1 auVar31 [16];
undefined1 auVar32 [16];
undefined1 auVar33 [16];
undefined1 auVar34 [16];
int iVar35;
int iVar37;
int iVar38;
undefined1 auVar36 [16];
int iVar39;
undefined1 auVar40 [16];
undefined1 in_XMM5 [16];
undefined1 auVar41 [16];
undefined1 auVar42 [16];
undefined1 auVar43 [16];
undefined1 auVar44 [16];
undefined1 auVar45 [16];
undefined1 auVar46 [16];
undefined1 auVar47 [16];
undefined1 auVar48 [16];
undefined1 auVar49 [16];
undefined1 auVar50 [16];
undefined1 auVar51 [16];
undefined1 auVar52 [16];
undefined1 auVar53 [16];
undefined1 auVar54 [16];
undefined1 auVar55 [16];
undefined1 auVar56 [16];
undefined1 auVar57 [16];
undefined1 auVar58 [16];
undefined1 auVar59 [16];
undefined1 auVar60 [16];
undefined1 auVar61 [16];
undefined1 auVar62 [16];
undefined4 unaff_retaddr;
undefined1 local_80 [128];
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
pauVar18 = param_1;
if (((uint)param_1 & 0xf) != 0) {
pauVar18 = (undefined1 (*) [16])local_80;
}
if (((uint)param_1 & 0xf) == 0) {
auVar19 = *param_1;
auVar40 = param_1[4];
auVar21 = pshuflw(in_XMM1,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833e90,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833eb0,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833ea0);
auVar19 = pmaddwd(auVar19,_DAT_00833ec0);
auVar41 = pshuflw(in_XMM5,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833e90,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar59 = pmaddwd(_DAT_00833eb0,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833ea0);
auVar40 = pmaddwd(auVar40,_DAT_00833ec0);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar30._0_4_ = iVar20 - iVar35 >> 0xc;
auVar30._4_4_ = iVar26 - iVar37 >> 0xc;
auVar30._8_4_ = iVar27 - iVar38 >> 0xc;
auVar30._12_4_ = iVar28 - iVar39 >> 0xc;
auVar22._0_4_ = iVar20 + iVar35 >> 0xc;
auVar22._4_4_ = iVar26 + iVar37 >> 0xc;
auVar22._8_4_ = iVar27 + iVar38 >> 0xc;
auVar22._12_4_ = iVar28 + iVar39 >> 0xc;
auVar21 = packssdw(auVar22,auVar30);
iVar35 = auVar59._0_4_ + auVar40._8_4_;
iVar37 = auVar59._4_4_ + auVar40._12_4_;
iVar38 = auVar59._8_4_ + auVar40._0_4_;
iVar39 = auVar59._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar51._0_4_ = iVar20 - iVar35 >> 0xc;
auVar51._4_4_ = iVar26 - iVar37 >> 0xc;
auVar51._8_4_ = iVar27 - iVar38 >> 0xc;
auVar51._12_4_ = iVar28 - iVar39 >> 0xc;
auVar42._0_4_ = iVar20 + iVar35 >> 0xc;
auVar42._4_4_ = iVar26 + iVar37 >> 0xc;
auVar42._8_4_ = iVar27 + iVar38 >> 0xc;
auVar42._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar42,auVar51);
*pauVar18 = auVar21;
pauVar18[4] = auVar41;
auVar19 = param_1[1];
auVar40 = param_1[7];
auVar21 = pshuflw(auVar21,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833ed0,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833ef0,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833ee0);
auVar19 = pmaddwd(auVar19,_DAT_00833f00);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833ed0,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar59 = pmaddwd(_DAT_00833ef0,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833ee0);
auVar40 = pmaddwd(auVar40,_DAT_00833f00);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar31._0_4_ = iVar20 - iVar35 >> 0xc;
auVar31._4_4_ = iVar26 - iVar37 >> 0xc;
auVar31._8_4_ = iVar27 - iVar38 >> 0xc;
auVar31._12_4_ = iVar28 - iVar39 >> 0xc;
auVar23._0_4_ = iVar20 + iVar35 >> 0xc;
auVar23._4_4_ = iVar26 + iVar37 >> 0xc;
auVar23._8_4_ = iVar27 + iVar38 >> 0xc;
auVar23._12_4_ = iVar28 + iVar39 >> 0xc;
auVar21 = packssdw(auVar23,auVar31);
iVar35 = auVar59._0_4_ + auVar40._8_4_;
iVar37 = auVar59._4_4_ + auVar40._12_4_;
iVar38 = auVar59._8_4_ + auVar40._0_4_;
iVar39 = auVar59._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar52._0_4_ = iVar20 - iVar35 >> 0xc;
auVar52._4_4_ = iVar26 - iVar37 >> 0xc;
auVar52._8_4_ = iVar27 - iVar38 >> 0xc;
auVar52._12_4_ = iVar28 - iVar39 >> 0xc;
auVar43._0_4_ = iVar20 + iVar35 >> 0xc;
auVar43._4_4_ = iVar26 + iVar37 >> 0xc;
auVar43._8_4_ = iVar27 + iVar38 >> 0xc;
auVar43._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar43,auVar52);
pauVar18[1] = auVar21;
pauVar18[7] = auVar41;
auVar19 = param_1[3];
auVar40 = param_1[5];
auVar21 = pshuflw(auVar21,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833f50,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833f70,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833f60);
auVar19 = pmaddwd(auVar19,_DAT_00833f80);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833f50,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar59 = pmaddwd(_DAT_00833f70,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833f60);
auVar40 = pmaddwd(auVar40,_DAT_00833f80);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar32._0_4_ = iVar20 - iVar35 >> 0xc;
auVar32._4_4_ = iVar26 - iVar37 >> 0xc;
auVar32._8_4_ = iVar27 - iVar38 >> 0xc;
auVar32._12_4_ = iVar28 - iVar39 >> 0xc;
auVar24._0_4_ = iVar20 + iVar35 >> 0xc;
auVar24._4_4_ = iVar26 + iVar37 >> 0xc;
auVar24._8_4_ = iVar27 + iVar38 >> 0xc;
auVar24._12_4_ = iVar28 + iVar39 >> 0xc;
auVar21 = packssdw(auVar24,auVar32);
iVar35 = auVar59._0_4_ + auVar40._8_4_;
iVar37 = auVar59._4_4_ + auVar40._12_4_;
iVar38 = auVar59._8_4_ + auVar40._0_4_;
iVar39 = auVar59._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar53._0_4_ = iVar20 - iVar35 >> 0xc;
auVar53._4_4_ = iVar26 - iVar37 >> 0xc;
auVar53._8_4_ = iVar27 - iVar38 >> 0xc;
auVar53._12_4_ = iVar28 - iVar39 >> 0xc;
auVar44._0_4_ = iVar20 + iVar35 >> 0xc;
auVar44._4_4_ = iVar26 + iVar37 >> 0xc;
auVar44._8_4_ = iVar27 + iVar38 >> 0xc;
auVar44._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar44,auVar53);
pauVar18[3] = auVar21;
pauVar18[5] = auVar41;
auVar19 = param_1[2];
auVar40 = param_1[6];
auVar21 = pshuflw(auVar21,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833f10,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833f30,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833f20);
auVar19 = pmaddwd(auVar19,_DAT_00833f40);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833f10,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar59 = pmaddwd(_DAT_00833f30,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833f20);
auVar40 = pmaddwd(auVar40,_DAT_00833f40);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar33._0_4_ = iVar20 - iVar35 >> 0xc;
auVar33._4_4_ = iVar26 - iVar37 >> 0xc;
auVar33._8_4_ = iVar27 - iVar38 >> 0xc;
auVar33._12_4_ = iVar28 - iVar39 >> 0xc;
auVar25._0_4_ = iVar20 + iVar35 >> 0xc;
auVar25._4_4_ = iVar26 + iVar37 >> 0xc;
auVar25._8_4_ = iVar27 + iVar38 >> 0xc;
auVar25._12_4_ = iVar28 + iVar39 >> 0xc;
auVar19 = packssdw(auVar25,auVar33);
iVar35 = auVar59._0_4_ + auVar40._8_4_;
iVar37 = auVar59._4_4_ + auVar40._12_4_;
iVar38 = auVar59._8_4_ + auVar40._0_4_;
iVar39 = auVar59._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar54._0_4_ = iVar20 - iVar35 >> 0xc;
auVar54._4_4_ = iVar26 - iVar37 >> 0xc;
auVar54._8_4_ = iVar27 - iVar38 >> 0xc;
auVar54._12_4_ = iVar28 - iVar39 >> 0xc;
auVar45._0_4_ = iVar20 + iVar35 >> 0xc;
auVar45._4_4_ = iVar26 + iVar37 >> 0xc;
auVar45._8_4_ = iVar27 + iVar38 >> 0xc;
auVar45._12_4_ = iVar28 + iVar39 >> 0xc;
auVar40 = packssdw(auVar45,auVar54);
pauVar18[2] = auVar19;
pauVar18[6] = auVar40;
}
else {
auVar19 = *param_1;
auVar40 = param_1[4];
auVar21._8_8_ = 0;
auVar21._0_8_ = *(ulonglong *)(param_1[4] + 8);
auVar21 = pshuflw(auVar21,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833e90,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833eb0,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833ea0);
auVar19 = pmaddwd(auVar19,_DAT_00833ec0);
auVar41 = pshuflw(in_XMM5,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833e90,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar59 = pmaddwd(_DAT_00833eb0,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833ea0);
auVar40 = pmaddwd(auVar40,_DAT_00833ec0);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar60._0_4_ = iVar20 - iVar35 >> 0xc;
auVar60._4_4_ = iVar26 - iVar37 >> 0xc;
auVar60._8_4_ = iVar27 - iVar38 >> 0xc;
auVar60._12_4_ = iVar28 - iVar39 >> 0xc;
auVar19._0_4_ = iVar20 + iVar35 >> 0xc;
auVar19._4_4_ = iVar26 + iVar37 >> 0xc;
auVar19._8_4_ = iVar27 + iVar38 >> 0xc;
auVar19._12_4_ = iVar28 + iVar39 >> 0xc;
auVar19 = packssdw(auVar19,auVar60);
iVar35 = auVar59._0_4_ + auVar40._8_4_;
iVar37 = auVar59._4_4_ + auVar40._12_4_;
iVar38 = auVar59._8_4_ + auVar40._0_4_;
iVar39 = auVar59._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar55._0_4_ = iVar20 - iVar35 >> 0xc;
auVar55._4_4_ = iVar26 - iVar37 >> 0xc;
auVar55._8_4_ = iVar27 - iVar38 >> 0xc;
auVar55._12_4_ = iVar28 - iVar39 >> 0xc;
auVar46._0_4_ = iVar20 + iVar35 >> 0xc;
auVar46._4_4_ = iVar26 + iVar37 >> 0xc;
auVar46._8_4_ = iVar27 + iVar38 >> 0xc;
auVar46._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar46,auVar55);
*pauVar18 = auVar19;
pauVar18[4] = auVar41;
auVar19 = param_1[1];
auVar40 = param_1[7];
auVar29._8_8_ = 0;
auVar29._0_8_ = *(ulonglong *)(param_1[7] + 8);
auVar21 = pshuflw(auVar29,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833ed0,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833ef0,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833ee0);
auVar19 = pmaddwd(auVar19,_DAT_00833f00);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar59 = pmaddwd(_DAT_00833ed0,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar60 = pmaddwd(_DAT_00833ef0,auVar40);
auVar50 = pmaddwd(auVar41,_DAT_00833ee0);
auVar41 = pmaddwd(auVar40,_DAT_00833f00);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar61._0_4_ = iVar20 - iVar35 >> 0xc;
auVar61._4_4_ = iVar26 - iVar37 >> 0xc;
auVar61._8_4_ = iVar27 - iVar38 >> 0xc;
auVar61._12_4_ = iVar28 - iVar39 >> 0xc;
auVar40._0_4_ = iVar20 + iVar35 >> 0xc;
auVar40._4_4_ = iVar26 + iVar37 >> 0xc;
auVar40._8_4_ = iVar27 + iVar38 >> 0xc;
auVar40._12_4_ = iVar28 + iVar39 >> 0xc;
auVar19 = packssdw(auVar40,auVar61);
iVar35 = auVar60._0_4_ + auVar41._8_4_;
iVar37 = auVar60._4_4_ + auVar41._12_4_;
iVar38 = auVar60._8_4_ + auVar41._0_4_;
iVar39 = auVar60._12_4_ + auVar41._4_4_;
iVar20 = auVar50._8_4_ + auVar59._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar50._12_4_ + auVar59._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar50._0_4_ + auVar59._8_4_ + iRam00833bf8;
iVar28 = auVar50._4_4_ + auVar59._12_4_ + iRam00833bfc;
auVar56._0_4_ = iVar20 - iVar35 >> 0xc;
auVar56._4_4_ = iVar26 - iVar37 >> 0xc;
auVar56._8_4_ = iVar27 - iVar38 >> 0xc;
auVar56._12_4_ = iVar28 - iVar39 >> 0xc;
auVar47._0_4_ = iVar20 + iVar35 >> 0xc;
auVar47._4_4_ = iVar26 + iVar37 >> 0xc;
auVar47._8_4_ = iVar27 + iVar38 >> 0xc;
auVar47._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar47,auVar56);
pauVar18[1] = auVar19;
pauVar18[7] = auVar41;
auVar19 = param_1[3];
auVar40 = param_1[5];
auVar36._8_8_ = 0;
auVar36._0_8_ = *(ulonglong *)(param_1[5] + 8);
auVar21 = pshuflw(auVar36,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833f50,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833f70,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833f60);
auVar19 = pmaddwd(auVar19,_DAT_00833f80);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar59 = pmaddwd(_DAT_00833f50,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar60 = pmaddwd(_DAT_00833f70,auVar40);
auVar50 = pmaddwd(auVar41,_DAT_00833f60);
auVar40 = pmaddwd(auVar40,_DAT_00833f80);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar62._0_4_ = iVar20 - iVar35 >> 0xc;
auVar62._4_4_ = iVar26 - iVar37 >> 0xc;
auVar62._8_4_ = iVar27 - iVar38 >> 0xc;
auVar62._12_4_ = iVar28 - iVar39 >> 0xc;
auVar41._0_4_ = iVar20 + iVar35 >> 0xc;
auVar41._4_4_ = iVar26 + iVar37 >> 0xc;
auVar41._8_4_ = iVar27 + iVar38 >> 0xc;
auVar41._12_4_ = iVar28 + iVar39 >> 0xc;
auVar19 = packssdw(auVar41,auVar62);
iVar35 = auVar60._0_4_ + auVar40._8_4_;
iVar37 = auVar60._4_4_ + auVar40._12_4_;
iVar38 = auVar60._8_4_ + auVar40._0_4_;
iVar39 = auVar60._12_4_ + auVar40._4_4_;
iVar20 = auVar50._8_4_ + auVar59._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar50._12_4_ + auVar59._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar50._0_4_ + auVar59._8_4_ + iRam00833bf8;
iVar28 = auVar50._4_4_ + auVar59._12_4_ + iRam00833bfc;
auVar57._0_4_ = iVar20 - iVar35 >> 0xc;
auVar57._4_4_ = iVar26 - iVar37 >> 0xc;
auVar57._8_4_ = iVar27 - iVar38 >> 0xc;
auVar57._12_4_ = iVar28 - iVar39 >> 0xc;
auVar48._0_4_ = iVar20 + iVar35 >> 0xc;
auVar48._4_4_ = iVar26 + iVar37 >> 0xc;
auVar48._8_4_ = iVar27 + iVar38 >> 0xc;
auVar48._12_4_ = iVar28 + iVar39 >> 0xc;
auVar41 = packssdw(auVar48,auVar57);
pauVar18[3] = auVar19;
pauVar18[5] = auVar41;
auVar19 = param_1[2];
auVar40 = param_1[6];
auVar50._8_8_ = 0;
auVar50._0_8_ = *(ulonglong *)(param_1[6] + 8);
auVar21 = pshuflw(auVar50,auVar19,0x88);
auVar19 = pshuflw(auVar19,auVar19,0xdd);
auVar21 = pshufhw(auVar21,auVar21,0x88);
auVar29 = pmaddwd(_DAT_00833f10,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0xdd);
auVar36 = pmaddwd(_DAT_00833f30,auVar19);
auVar21 = pmaddwd(auVar21,_DAT_00833f20);
auVar19 = pmaddwd(auVar19,_DAT_00833f40);
auVar41 = pshuflw(auVar41,auVar40,0x88);
auVar40 = pshuflw(auVar40,auVar40,0xdd);
auVar41 = pshufhw(auVar41,auVar41,0x88);
auVar50 = pmaddwd(_DAT_00833f10,auVar41);
auVar40 = pshufhw(auVar40,auVar40,0xdd);
auVar60 = pmaddwd(_DAT_00833f30,auVar40);
auVar41 = pmaddwd(auVar41,_DAT_00833f20);
auVar40 = pmaddwd(auVar40,_DAT_00833f40);
iVar35 = auVar36._0_4_ + auVar19._8_4_;
iVar37 = auVar36._4_4_ + auVar19._12_4_;
iVar38 = auVar36._8_4_ + auVar19._0_4_;
iVar39 = auVar36._12_4_ + auVar19._4_4_;
iVar20 = auVar21._8_4_ + auVar29._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar21._12_4_ + auVar29._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar21._0_4_ + auVar29._8_4_ + iRam00833bf8;
iVar28 = auVar21._4_4_ + auVar29._12_4_ + iRam00833bfc;
auVar34._0_4_ = iVar20 - iVar35 >> 0xc;
auVar34._4_4_ = iVar26 - iVar37 >> 0xc;
auVar34._8_4_ = iVar27 - iVar38 >> 0xc;
auVar34._12_4_ = iVar28 - iVar39 >> 0xc;
auVar59._0_4_ = iVar20 + iVar35 >> 0xc;
auVar59._4_4_ = iVar26 + iVar37 >> 0xc;
auVar59._8_4_ = iVar27 + iVar38 >> 0xc;
auVar59._12_4_ = iVar28 + iVar39 >> 0xc;
auVar19 = packssdw(auVar59,auVar34);
iVar35 = auVar60._0_4_ + auVar40._8_4_;
iVar37 = auVar60._4_4_ + auVar40._12_4_;
iVar38 = auVar60._8_4_ + auVar40._0_4_;
iVar39 = auVar60._12_4_ + auVar40._4_4_;
iVar20 = auVar41._8_4_ + auVar50._0_4_ + (int)DAT_00833bf0;
iVar26 = auVar41._12_4_ + auVar50._4_4_ + DAT_00833bf0._4_4_;
iVar27 = auVar41._0_4_ + auVar50._8_4_ + iRam00833bf8;
iVar28 = auVar41._4_4_ + auVar50._12_4_ + iRam00833bfc;
auVar58._0_4_ = iVar20 - iVar35 >> 0xc;
auVar58._4_4_ = iVar26 - iVar37 >> 0xc;
auVar58._8_4_ = iVar27 - iVar38 >> 0xc;
auVar58._12_4_ = iVar28 - iVar39 >> 0xc;
auVar49._0_4_ = iVar20 + iVar35 >> 0xc;
auVar49._4_4_ = iVar26 + iVar37 >> 0xc;
auVar49._8_4_ = iVar27 + iVar38 >> 0xc;
auVar49._12_4_ = iVar28 + iVar39 >> 0xc;
auVar40 = packssdw(auVar49,auVar58);
pauVar18[2] = auVar19;
pauVar18[6] = auVar40;
}
if (pauVar18 != (undefined1 (*) [16])&stack0x00000000) {
auVar19 = pauVar18[5];
auVar40 = pauVar18[3];
auVar21 = pmulhw(auVar19,_DAT_00833c60);
auVar29 = pmulhw(_DAT_00833c60,auVar40);
auVar36 = pmulhw(pauVar18[7],_DAT_00833c40);
auVar21 = paddsw(auVar21,auVar19);
auVar41 = pmulhw(_DAT_00833c40,pauVar18[1]);
auVar29 = paddsw(auVar29,auVar40);
auVar40 = paddsw(auVar21,auVar40);
auVar21 = psubsw(auVar19,auVar29);
auVar50 = pmulhw(pauVar18[6],_DAT_00833c50);
auVar29 = pmulhw(_DAT_00833c50,pauVar18[2]);
auVar41 = psubsw(auVar41,pauVar18[7]);
auVar36 = paddsw(auVar36,pauVar18[1]);
auVar19 = paddsw(auVar40,auVar36);
auVar19 = paddsw(auVar19,_DAT_00833be0);
auVar40 = psubsw(auVar36,auVar40);
auVar59 = paddsw(auVar50,pauVar18[2]);
auVar29 = psubsw(auVar29,pauVar18[6]);
auVar36 = psubsw(auVar41,auVar21);
auVar19 = pshufhw(auVar19,auVar19,0x1b);
auVar50 = paddsw(auVar36,_DAT_00833be0);
auVar21 = paddsw(auVar41,auVar21);
pauVar18[7] = auVar19;
auVar36 = paddsw(auVar40,auVar50);
auVar19 = pshufhw(auVar21,auVar21,0x1b);
auVar21 = pmulhw(_DAT_00833c70,auVar36);
pauVar18[3] = auVar19;
auVar40 = psubsw(auVar40,auVar50);
auVar19 = pmulhw(_DAT_00833c70,auVar40);
auVar21 = paddsw(auVar36,auVar21);
auVar41 = paddsw(pauVar18[4],*pauVar18);
auVar50 = psubsw(*pauVar18,pauVar18[4]);
auVar19 = paddsw(auVar19,auVar40);
auVar36 = pshufhw(auVar21 | _DAT_00833be0,auVar21 | _DAT_00833be0,0x1b);
auVar40 = paddsw(auVar41,auVar59);
auVar40 = paddsw(auVar40,_DAT_00833c00);
auVar21 = psubsw(auVar41,auVar59);
auVar59 = paddsw(auVar50,auVar29);
auVar41 = pshufhw(auVar40,auVar40,0x1b);
auVar59 = paddsw(auVar59,_DAT_00833c00);
auVar40 = paddsw(pauVar18[7],auVar41);
auVar60 = psraw(auVar40,5);
auVar40 = psubsw(auVar50,auVar29);
auVar50 = pshufhw(auVar59,auVar59,0x1b);
auVar21 = paddsw(auVar21,_DAT_00833c10);
auVar40 = paddsw(auVar40,_DAT_00833c10);
auVar59 = paddsw(auVar50,auVar36);
auVar29 = pshufhw(auVar21,auVar21,0x1b);
auVar21 = paddsw(auVar60,_DAT_00833c20);
sVar1 = auVar21._0_2_;
sVar2 = auVar21._2_2_;
sVar3 = auVar21._4_2_;
sVar4 = auVar21._6_2_;
sVar5 = auVar21._8_2_;
sVar6 = auVar21._10_2_;
sVar7 = auVar21._12_2_;
sVar8 = auVar21._14_2_;
(*pauVar18)[0] = (0 < sVar1) * (sVar1 < 0x100) * auVar21[0] - (0xff < sVar1);
(*pauVar18)[1] = (undefined1)DAT_00833c30;
(*pauVar18)[2] = (0 < sVar2) * (sVar2 < 0x100) * auVar21[2] - (0xff < sVar2);
(*pauVar18)[3] = DAT_00833c30._1_1_;
(*pauVar18)[4] = (0 < sVar3) * (sVar3 < 0x100) * auVar21[4] - (0xff < sVar3);
(*pauVar18)[5] = DAT_00833c30._2_1_;
(*pauVar18)[6] = (0 < sVar4) * (sVar4 < 0x100) * auVar21[6] - (0xff < sVar4);
(*pauVar18)[7] = DAT_00833c30._3_1_;
(*pauVar18)[8] = (0 < sVar5) * (sVar5 < 0x100) * auVar21[8] - (0xff < sVar5);
(*pauVar18)[9] = uRam00833c34;
(*pauVar18)[10] = (0 < sVar6) * (sVar6 < 0x100) * auVar21[10] - (0xff < sVar6);
(*pauVar18)[0xb] = uRam00833c35;
(*pauVar18)[0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar21[0xc] - (0xff < sVar7);
(*pauVar18)[0xd] = uRam00833c36;
(*pauVar18)[0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar21[0xe] - (0xff < sVar8);
(*pauVar18)[0xf] = uRam00833c37;
auVar59 = psraw(auVar59,5);
auVar21 = paddsw(auVar40,auVar19 | _DAT_00833be0);
auVar59 = paddsw(auVar59,_DAT_00833c20);
sVar1 = auVar59._0_2_;
sVar2 = auVar59._2_2_;
sVar3 = auVar59._4_2_;
sVar4 = auVar59._6_2_;
sVar5 = auVar59._8_2_;
sVar6 = auVar59._10_2_;
sVar7 = auVar59._12_2_;
sVar8 = auVar59._14_2_;
pauVar18[1][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar59[0] - (0xff < sVar1);
pauVar18[1][1] = (undefined1)DAT_00833c30;
pauVar18[1][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar59[2] - (0xff < sVar2);
pauVar18[1][3] = DAT_00833c30._1_1_;
pauVar18[1][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar59[4] - (0xff < sVar3);
pauVar18[1][5] = DAT_00833c30._2_1_;
pauVar18[1][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar59[6] - (0xff < sVar4);
pauVar18[1][7] = DAT_00833c30._3_1_;
pauVar18[1][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar59[8] - (0xff < sVar5);
pauVar18[1][9] = uRam00833c34;
pauVar18[1][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar59[10] - (0xff < sVar6);
pauVar18[1][0xb] = uRam00833c35;
pauVar18[1][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar59[0xc] - (0xff < sVar7);
pauVar18[1][0xd] = uRam00833c36;
pauVar18[1][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar59[0xe] - (0xff < sVar8);
pauVar18[1][0xf] = uRam00833c37;
auVar21 = psraw(auVar21,5);
auVar59 = psubsw(auVar40,auVar19 | _DAT_00833be0);
auVar19 = pshufhw(auVar21,auVar21,0x1b);
auVar21 = paddsw(pauVar18[3],auVar29);
auVar40 = psubsw(auVar29,pauVar18[3]);
auVar59 = psraw(auVar59,5);
auVar19 = paddsw(auVar19,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
pauVar18[2][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
pauVar18[2][1] = (undefined1)DAT_00833c30;
pauVar18[2][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
pauVar18[2][3] = DAT_00833c30._1_1_;
pauVar18[2][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
pauVar18[2][5] = DAT_00833c30._2_1_;
pauVar18[2][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
pauVar18[2][7] = DAT_00833c30._3_1_;
pauVar18[2][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
pauVar18[2][9] = uRam00833c34;
pauVar18[2][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
pauVar18[2][0xb] = uRam00833c35;
pauVar18[2][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
pauVar18[2][0xd] = uRam00833c36;
pauVar18[2][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
pauVar18[2][0xf] = uRam00833c37;
auVar29 = psraw(auVar21,5);
auVar21 = psubsw(auVar41,pauVar18[7]);
auVar19 = psraw(auVar40,5);
auVar40 = paddsw(auVar29,_DAT_00833c20);
sVar1 = auVar40._0_2_;
sVar2 = auVar40._2_2_;
sVar3 = auVar40._4_2_;
sVar4 = auVar40._6_2_;
sVar5 = auVar40._8_2_;
sVar6 = auVar40._10_2_;
sVar7 = auVar40._12_2_;
sVar8 = auVar40._14_2_;
pauVar18[3][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar40[0] - (0xff < sVar1);
pauVar18[3][1] = (undefined1)DAT_00833c30;
pauVar18[3][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar40[2] - (0xff < sVar2);
pauVar18[3][3] = DAT_00833c30._1_1_;
pauVar18[3][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar40[4] - (0xff < sVar3);
pauVar18[3][5] = DAT_00833c30._2_1_;
pauVar18[3][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar40[6] - (0xff < sVar4);
pauVar18[3][7] = DAT_00833c30._3_1_;
pauVar18[3][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar40[8] - (0xff < sVar5);
pauVar18[3][9] = uRam00833c34;
pauVar18[3][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar40[10] - (0xff < sVar6);
pauVar18[3][0xb] = uRam00833c35;
pauVar18[3][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar40[0xc] - (0xff < sVar7);
pauVar18[3][0xd] = uRam00833c36;
pauVar18[3][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar40[0xe] - (0xff < sVar8);
pauVar18[3][0xf] = uRam00833c37;
auVar40 = psubsw(auVar50,auVar36);
auVar29 = pshufhw(auVar59,auVar59,0x1b);
auVar19 = paddsw(auVar19,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
pauVar18[4][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
pauVar18[4][1] = (undefined1)DAT_00833c30;
pauVar18[4][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
pauVar18[4][3] = DAT_00833c30._1_1_;
pauVar18[4][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
pauVar18[4][5] = DAT_00833c30._2_1_;
pauVar18[4][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
pauVar18[4][7] = DAT_00833c30._3_1_;
pauVar18[4][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
pauVar18[4][9] = uRam00833c34;
pauVar18[4][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
pauVar18[4][0xb] = uRam00833c35;
pauVar18[4][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
pauVar18[4][0xd] = uRam00833c36;
pauVar18[4][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
pauVar18[4][0xf] = uRam00833c37;
auVar19 = psraw(auVar40,5);
auVar40 = paddsw(auVar29,_DAT_00833c20);
sVar1 = auVar40._0_2_;
sVar2 = auVar40._2_2_;
sVar3 = auVar40._4_2_;
sVar4 = auVar40._6_2_;
sVar5 = auVar40._8_2_;
sVar6 = auVar40._10_2_;
sVar7 = auVar40._12_2_;
sVar8 = auVar40._14_2_;
pauVar18[5][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar40[0] - (0xff < sVar1);
pauVar18[5][1] = (undefined1)DAT_00833c30;
pauVar18[5][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar40[2] - (0xff < sVar2);
pauVar18[5][3] = DAT_00833c30._1_1_;
pauVar18[5][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar40[4] - (0xff < sVar3);
pauVar18[5][5] = DAT_00833c30._2_1_;
pauVar18[5][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar40[6] - (0xff < sVar4);
pauVar18[5][7] = DAT_00833c30._3_1_;
pauVar18[5][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar40[8] - (0xff < sVar5);
pauVar18[5][9] = uRam00833c34;
pauVar18[5][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar40[10] - (0xff < sVar6);
pauVar18[5][0xb] = uRam00833c35;
pauVar18[5][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar40[0xc] - (0xff < sVar7);
pauVar18[5][0xd] = uRam00833c36;
pauVar18[5][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar40[0xe] - (0xff < sVar8);
pauVar18[5][0xf] = uRam00833c37;
auVar40 = psraw(auVar21,5);
auVar19 = paddsw(auVar19,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
pauVar18[6][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
pauVar18[6][1] = (undefined1)DAT_00833c30;
pauVar18[6][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
pauVar18[6][3] = DAT_00833c30._1_1_;
pauVar18[6][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
pauVar18[6][5] = DAT_00833c30._2_1_;
pauVar18[6][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
pauVar18[6][7] = DAT_00833c30._3_1_;
pauVar18[6][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
pauVar18[6][9] = uRam00833c34;
pauVar18[6][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
pauVar18[6][0xb] = uRam00833c35;
pauVar18[6][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
pauVar18[6][0xd] = uRam00833c36;
pauVar18[6][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
pauVar18[6][0xf] = uRam00833c37;
auVar19 = paddsw(auVar40,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
pauVar18[7][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
pauVar18[7][1] = (undefined1)DAT_00833c30;
pauVar18[7][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
pauVar18[7][3] = DAT_00833c30._1_1_;
pauVar18[7][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
pauVar18[7][5] = DAT_00833c30._2_1_;
pauVar18[7][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
pauVar18[7][7] = DAT_00833c30._3_1_;
pauVar18[7][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
pauVar18[7][9] = uRam00833c34;
pauVar18[7][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
pauVar18[7][0xb] = uRam00833c35;
pauVar18[7][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
pauVar18[7][0xd] = uRam00833c36;
pauVar18[7][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
pauVar18[7][0xf] = uRam00833c37;
return;
}
auVar19 = pmulhw(param_7,_DAT_00833c60);
auVar40 = pmulhw(_DAT_00833c60,param_5);
auVar36 = pmulhw(param_9,_DAT_00833c40);
auVar19 = paddsw(auVar19,param_7);
auVar41 = pmulhw(_DAT_00833c40,param_3);
auVar40 = paddsw(auVar40,param_5);
auVar19 = paddsw(auVar19,param_5);
auVar21 = psubsw(param_7,auVar40);
auVar59 = pmulhw(param_8,_DAT_00833c50);
auVar29 = pmulhw(_DAT_00833c50,param_4);
auVar50 = psubsw(auVar41,param_9);
auVar36 = paddsw(auVar36,param_3);
auVar40 = paddsw(auVar19,auVar36);
auVar40 = paddsw(auVar40,_DAT_00833be0);
auVar41 = psubsw(auVar36,auVar19);
auVar61 = paddsw(auVar59,param_4);
auVar36 = psubsw(auVar29,param_8);
auVar29 = psubsw(auVar50,auVar21);
auVar19 = pshufhw(auVar40,auVar40,0x1b);
auVar40 = paddsw(auVar29,_DAT_00833be0);
auVar21 = paddsw(auVar50,auVar21);
auVar50 = paddsw(auVar41,auVar40);
auVar59 = pshufhw(auVar21,auVar21,0x1b);
auVar29 = pmulhw(_DAT_00833c70,auVar50);
auVar21 = psubsw(auVar41,auVar40);
auVar9._4_4_ = param_1;
auVar9._0_4_ = unaff_retaddr;
auVar9._8_8_ = param_2;
auVar40 = pmulhw(_DAT_00833c70,auVar21);
auVar29 = paddsw(auVar50,auVar29);
auVar50 = paddsw(param_6,auVar9);
auVar60 = psubsw(auVar9,param_6);
auVar40 = paddsw(auVar40,auVar21);
auVar41 = pshufhw(auVar29 | _DAT_00833be0,auVar29 | _DAT_00833be0,0x1b);
auVar40 = auVar40 | _DAT_00833be0;
auVar21 = paddsw(auVar50,auVar61);
auVar21 = paddsw(auVar21,_DAT_00833c00);
auVar29 = psubsw(auVar50,auVar61);
auVar61 = paddsw(auVar60,auVar36);
auVar50 = pshufhw(auVar21,auVar21,0x1b);
auVar61 = paddsw(auVar61,_DAT_00833c00);
auVar21 = paddsw(auVar19,auVar50);
auVar62 = psraw(auVar21,5);
auVar21 = psubsw(auVar60,auVar36);
auVar60 = pshufhw(auVar61,auVar61,0x1b);
auVar29 = paddsw(auVar29,_DAT_00833c10);
auVar21 = paddsw(auVar21,_DAT_00833c10);
auVar61 = paddsw(auVar60,auVar41);
auVar36 = pshufhw(auVar29,auVar29,0x1b);
auVar29 = paddsw(auVar62,_DAT_00833c20);
sVar1 = auVar29._0_2_;
sVar2 = auVar29._2_2_;
sVar3 = auVar29._4_2_;
sVar4 = auVar29._6_2_;
sVar5 = auVar29._8_2_;
sVar6 = auVar29._10_2_;
sVar7 = auVar29._12_2_;
sVar8 = auVar29._14_2_;
(*param_1)[0] = (0 < sVar1) * (sVar1 < 0x100) * auVar29[0] - (0xff < sVar1);
(*param_1)[1] = uVar10;
(*param_1)[2] = (0 < sVar2) * (sVar2 < 0x100) * auVar29[2] - (0xff < sVar2);
(*param_1)[3] = uVar11;
(*param_1)[4] = (0 < sVar3) * (sVar3 < 0x100) * auVar29[4] - (0xff < sVar3);
(*param_1)[5] = uVar12;
(*param_1)[6] = (0 < sVar4) * (sVar4 < 0x100) * auVar29[6] - (0xff < sVar4);
(*param_1)[7] = uVar13;
(*param_1)[8] = (0 < sVar5) * (sVar5 < 0x100) * auVar29[8] - (0xff < sVar5);
(*param_1)[9] = uVar14;
(*param_1)[10] = (0 < sVar6) * (sVar6 < 0x100) * auVar29[10] - (0xff < sVar6);
(*param_1)[0xb] = uVar15;
(*param_1)[0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar29[0xc] - (0xff < sVar7);
(*param_1)[0xd] = uVar16;
(*param_1)[0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar29[0xe] - (0xff < sVar8);
(*param_1)[0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar61 = psraw(auVar61,5);
auVar29 = paddsw(auVar21,auVar40);
auVar61 = paddsw(auVar61,_DAT_00833c20);
sVar1 = auVar61._0_2_;
sVar2 = auVar61._2_2_;
sVar3 = auVar61._4_2_;
sVar4 = auVar61._6_2_;
sVar5 = auVar61._8_2_;
sVar6 = auVar61._10_2_;
sVar7 = auVar61._12_2_;
sVar8 = auVar61._14_2_;
param_1[1][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar61[0] - (0xff < sVar1);
param_1[1][1] = uVar10;
param_1[1][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar61[2] - (0xff < sVar2);
param_1[1][3] = uVar11;
param_1[1][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar61[4] - (0xff < sVar3);
param_1[1][5] = uVar12;
param_1[1][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar61[6] - (0xff < sVar4);
param_1[1][7] = uVar13;
param_1[1][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar61[8] - (0xff < sVar5);
param_1[1][9] = uVar14;
param_1[1][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar61[10] - (0xff < sVar6);
param_1[1][0xb] = uVar15;
param_1[1][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar61[0xc] - (0xff < sVar7);
param_1[1][0xd] = uVar16;
param_1[1][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar61[0xe] - (0xff < sVar8);
param_1[1][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar29 = psraw(auVar29,5);
auVar61 = psubsw(auVar21,auVar40);
auVar40 = pshufhw(auVar29,auVar29,0x1b);
auVar29 = paddsw(auVar59,auVar36);
auVar21 = psubsw(auVar36,auVar59);
auVar36 = psraw(auVar61,5);
auVar40 = paddsw(auVar40,_DAT_00833c20);
sVar1 = auVar40._0_2_;
sVar2 = auVar40._2_2_;
sVar3 = auVar40._4_2_;
sVar4 = auVar40._6_2_;
sVar5 = auVar40._8_2_;
sVar6 = auVar40._10_2_;
sVar7 = auVar40._12_2_;
sVar8 = auVar40._14_2_;
param_1[2][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar40[0] - (0xff < sVar1);
param_1[2][1] = uVar10;
param_1[2][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar40[2] - (0xff < sVar2);
param_1[2][3] = uVar11;
param_1[2][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar40[4] - (0xff < sVar3);
param_1[2][5] = uVar12;
param_1[2][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar40[6] - (0xff < sVar4);
param_1[2][7] = uVar13;
param_1[2][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar40[8] - (0xff < sVar5);
param_1[2][9] = uVar14;
param_1[2][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar40[10] - (0xff < sVar6);
param_1[2][0xb] = uVar15;
param_1[2][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar40[0xc] - (0xff < sVar7);
param_1[2][0xd] = uVar16;
param_1[2][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar40[0xe] - (0xff < sVar8);
param_1[2][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar40 = psraw(auVar29,5);
auVar29 = psubsw(auVar50,auVar19);
auVar19 = psraw(auVar21,5);
auVar40 = paddsw(auVar40,_DAT_00833c20);
sVar1 = auVar40._0_2_;
sVar2 = auVar40._2_2_;
sVar3 = auVar40._4_2_;
sVar4 = auVar40._6_2_;
sVar5 = auVar40._8_2_;
sVar6 = auVar40._10_2_;
sVar7 = auVar40._12_2_;
sVar8 = auVar40._14_2_;
param_1[3][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar40[0] - (0xff < sVar1);
param_1[3][1] = uVar10;
param_1[3][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar40[2] - (0xff < sVar2);
param_1[3][3] = uVar11;
param_1[3][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar40[4] - (0xff < sVar3);
param_1[3][5] = uVar12;
param_1[3][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar40[6] - (0xff < sVar4);
param_1[3][7] = uVar13;
param_1[3][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar40[8] - (0xff < sVar5);
param_1[3][9] = uVar14;
param_1[3][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar40[10] - (0xff < sVar6);
param_1[3][0xb] = uVar15;
param_1[3][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar40[0xc] - (0xff < sVar7);
param_1[3][0xd] = uVar16;
param_1[3][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar40[0xe] - (0xff < sVar8);
param_1[3][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar40 = psubsw(auVar60,auVar41);
auVar21 = pshufhw(auVar36,auVar36,0x1b);
auVar19 = paddsw(auVar19,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
param_1[4][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
param_1[4][1] = uVar10;
param_1[4][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
param_1[4][3] = uVar11;
param_1[4][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
param_1[4][5] = uVar12;
param_1[4][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
param_1[4][7] = uVar13;
param_1[4][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
param_1[4][9] = uVar14;
param_1[4][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
param_1[4][0xb] = uVar15;
param_1[4][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
param_1[4][0xd] = uVar16;
param_1[4][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
param_1[4][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar19 = psraw(auVar40,5);
auVar40 = paddsw(auVar21,_DAT_00833c20);
sVar1 = auVar40._0_2_;
sVar2 = auVar40._2_2_;
sVar3 = auVar40._4_2_;
sVar4 = auVar40._6_2_;
sVar5 = auVar40._8_2_;
sVar6 = auVar40._10_2_;
sVar7 = auVar40._12_2_;
sVar8 = auVar40._14_2_;
param_1[5][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar40[0] - (0xff < sVar1);
param_1[5][1] = uVar10;
param_1[5][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar40[2] - (0xff < sVar2);
param_1[5][3] = uVar11;
param_1[5][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar40[4] - (0xff < sVar3);
param_1[5][5] = uVar12;
param_1[5][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar40[6] - (0xff < sVar4);
param_1[5][7] = uVar13;
param_1[5][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar40[8] - (0xff < sVar5);
param_1[5][9] = uVar14;
param_1[5][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar40[10] - (0xff < sVar6);
param_1[5][0xb] = uVar15;
param_1[5][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar40[0xc] - (0xff < sVar7);
param_1[5][0xd] = uVar16;
param_1[5][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar40[0xe] - (0xff < sVar8);
param_1[5][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar40 = psraw(auVar29,5);
auVar19 = paddsw(auVar19,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
param_1[6][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
param_1[6][1] = uVar10;
param_1[6][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
param_1[6][3] = uVar11;
param_1[6][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
param_1[6][5] = uVar12;
param_1[6][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
param_1[6][7] = uVar13;
param_1[6][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
param_1[6][9] = uVar14;
param_1[6][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
param_1[6][0xb] = uVar15;
param_1[6][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
param_1[6][0xd] = uVar16;
param_1[6][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
param_1[6][0xf] = uVar17;
uVar17 = uRam00833c37;
uVar16 = uRam00833c36;
uVar15 = uRam00833c35;
uVar14 = uRam00833c34;
uVar13 = DAT_00833c30._3_1_;
uVar12 = DAT_00833c30._2_1_;
uVar11 = DAT_00833c30._1_1_;
uVar10 = (undefined1)DAT_00833c30;
auVar19 = paddsw(auVar40,_DAT_00833c20);
sVar1 = auVar19._0_2_;
sVar2 = auVar19._2_2_;
sVar3 = auVar19._4_2_;
sVar4 = auVar19._6_2_;
sVar5 = auVar19._8_2_;
sVar6 = auVar19._10_2_;
sVar7 = auVar19._12_2_;
sVar8 = auVar19._14_2_;
param_1[7][0] = (0 < sVar1) * (sVar1 < 0x100) * auVar19[0] - (0xff < sVar1);
param_1[7][1] = uVar10;
param_1[7][2] = (0 < sVar2) * (sVar2 < 0x100) * auVar19[2] - (0xff < sVar2);
param_1[7][3] = uVar11;
param_1[7][4] = (0 < sVar3) * (sVar3 < 0x100) * auVar19[4] - (0xff < sVar3);
param_1[7][5] = uVar12;
param_1[7][6] = (0 < sVar4) * (sVar4 < 0x100) * auVar19[6] - (0xff < sVar4);
param_1[7][7] = uVar13;
param_1[7][8] = (0 < sVar5) * (sVar5 < 0x100) * auVar19[8] - (0xff < sVar5);
param_1[7][9] = uVar14;
param_1[7][10] = (0 < sVar6) * (sVar6 < 0x100) * auVar19[10] - (0xff < sVar6);
param_1[7][0xb] = uVar15;
param_1[7][0xc] = (0 < sVar7) * (sVar7 < 0x100) * auVar19[0xc] - (0xff < sVar7);
param_1[7][0xd] = uVar16;
param_1[7][0xe] = (0 < sVar8) * (sVar8 < 0x100) * auVar19[0xe] - (0xff < sVar8);
param_1[7][0xf] = uVar17;
return;
}
// --- FUN_00654b10 at 0x00654B10 (size: 123) ---
longlong __fastcall
FUN_00654b10(undefined4 param_1,uint param_2,longlong *param_3,int param_4,int param_5)
{
bool bVar1;
char cVar2;
char *pcVar3;
char *pcVar4;
int iVar5;
int iVar6;
longlong lVar7;
pcVar4 = *(char **)(param_3 + 2);
if (*(int *)((int)param_3 + 0xc) != 0) {
lVar7 = *param_3;
pcVar3 = pcVar4;
iVar5 = *(int *)((int)param_3 + 0xc);
do {
cVar2 = (char)((ulonglong)lVar7 >> 0x38);
*pcVar3 = cVar2;
pcVar4 = pcVar3 + 1;
if (cVar2 == -1) {
*pcVar4 = '\0';
*(int *)((int)param_3 + 0x1c) = *(int *)((int)param_3 + 0x1c) + 1;
pcVar4 = pcVar3 + 2;
}
*(int *)((int)param_3 + 0x1c) = *(int *)((int)param_3 + 0x1c) + 1;
lVar7 = lVar7 << 8;
iVar6 = iVar5 + -8;
bVar1 = 7 < iVar5;
pcVar3 = pcVar4;
iVar5 = iVar6;
} while (iVar6 != 0 && bVar1);
*(undefined4 *)((int)param_3 + 0xc) = 0;
*param_3 = 0;
}
iVar5 = 0;
if (param_4 == 0) {
*(char **)(param_3 + 2) = pcVar4;
}
else {
do {
pcVar3 = (char *)(iVar5 + param_4);
iVar5 = iVar5 + 1;
*pcVar4 = *pcVar3;
pcVar4 = pcVar4 + 1;
} while (iVar5 != param_5);
}
*(char **)(param_3 + 2) = pcVar4;
return (ulonglong)param_2 << 0x20;
}
// --- FUN_00654b90 at 0x00654B90 (size: 627) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00654b90(undefined4 param_1,undefined4 param_2,uint param_3,int param_4,ulonglong *param_5)
{
uint uVar1;
undefined4 uVar2;
uint uVar3;
uint *puVar4;
uint *puVar5;
char cVar6;
char cVar8;
char cVar9;
byte bVar10;
undefined8 uVar7;
ulonglong uVar11;
ulonglong uVar12;
param_4 = param_4 + *(int *)((int)param_5 + 0xc);
*(int *)((int)param_5 + 0xc) = param_4;
uVar2 = 0;
uVar12 = *param_5 | (ulonglong)param_3 << (ulonglong)(0x40 - param_4);
if (0x20 < param_4) {
uVar2 = 0xffffffe4;
puVar4 = *(uint **)(param_5 + 2);
if (3 < (uint)((int)param_5[3] - (int)*(uint **)(param_5 + 2))) {
do {
while( true ) {
*(int *)((int)param_5 + 0x1c) = *(int *)((int)param_5 + 0x1c) + 4;
cVar6 = (char)(uVar12 >> 0x20);
cVar8 = (char)(uVar12 >> 0x28);
cVar9 = (char)(uVar12 >> 0x30);
bVar10 = (byte)(uVar12 >> 0x38);
puVar5 = puVar4 + 1;
uVar3 = CONCAT13(-(bVar10 == 0xff),
CONCAT12(-(cVar9 == -1),CONCAT11(-(cVar8 == -1),-(cVar6 == -1))));
if (uVar3 == 0) {
param_4 = param_4 + -0x20;
uVar7 = CONCAT44((int)CONCAT11(cVar9,bVar10),(int)CONCAT11(cVar6,cVar8));
uVar7 = packssdw(uVar7,uVar7);
uVar12 = uVar12 << 0x20;
*puVar4 = CONCAT22((short)uVar7,(short)((ulonglong)uVar7 >> 0x10));
goto LAB_00654df1;
}
uVar3 = uVar3 >> 8;
if (0xfeffff < uVar3) break;
uVar1 = (uint)(uVar12 >> 0x20);
if (uVar3 < 0xff00) {
if (uVar3 == 0) {
uVar7 = CONCAT44((int)CONCAT11(cVar9,bVar10),(int)CONCAT11(cVar6,cVar8));
uVar7 = packssdw(uVar7,uVar7);
uVar12 = (uVar12 << 0x20) >> 8;
*puVar4 = CONCAT22((short)uVar7,(short)((ulonglong)uVar7 >> 0x10));
goto joined_r0x00654ca0;
}
param_4 = param_4 + -0x18;
uVar12 = uVar12 << 0x18;
*puVar4 = (uint)((ulonglong)(DAT_00833f98 << 0x18) >> 0x10) | (uint)bVar10 |
uVar1 >> 8 & (uint)DAT_00833f98;
}
else if (uVar3 == 0xffff) {
uVar12 = (uVar12 << 0x18) >> 8;
param_4 = param_4 + -0x10;
*puVar4 = (uint)bVar10 | (uint)_DAT_00833fa8;
}
else {
uVar12 = uVar12 << 0x18;
param_4 = param_4 + -0x18;
*puVar4 = (uint)bVar10 | (uVar1 >> 8) << 0x18 | (uint)DAT_00833f98;
}
joined_r0x00654ca0:
puVar4 = puVar5;
if (param_4 < 0x20) goto LAB_00654df1;
}
if (uVar3 == 0xff0000) {
uVar12 = uVar12 << 0x18;
*puVar4 = (uint)CONCAT11(cVar8,cVar9) << 0x10 | (uint)_DAT_00833f90;
joined_r0x00654ca0:
param_4 = param_4 + -0x18;
goto joined_r0x00654ca0;
}
if (uVar3 == 0xffff00) {
uVar12 = uVar12 << 0x10;
param_4 = param_4 + -0x10;
*puVar4 = (uint)DAT_00833fa0;
goto joined_r0x00654ca0;
}
uVar11 = uVar12 >> 0x30;
param_4 = param_4 + -0x10;
uVar12 = (uVar12 << 0x18) >> 8;
*puVar4 = (uint)(uVar11 << 0x10) | (uint)_DAT_00833f90;
puVar4 = puVar5;
} while (0x1f < param_4);
LAB_00654df1:
uVar2 = 0;
*(uint **)(param_5 + 2) = puVar5;
*(int *)((int)param_5 + 0xc) = param_4;
}
}
*param_5 = uVar12;
return CONCAT44(param_2,uVar2);
}
// --- FUN_00654e10 at 0x00654E10 (size: 646) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00654e10(undefined4 param_1,undefined4 param_2,uint param_3,int param_4,ulonglong *param_5)
{
uint uVar1;
byte bVar2;
int iVar3;
uint uVar4;
ulonglong *puVar5;
ulonglong *puVar6;
char cVar7;
char cVar9;
char cVar10;
char cVar11;
ulonglong extraout_MM0;
undefined8 uVar8;
char cVar12;
char extraout_MM1_Ba;
char cVar13;
char extraout_MM1_Bb;
char cVar14;
char extraout_MM1_Bc;
char cVar15;
char extraout_MM1_Bd;
undefined1 uVar16;
undefined1 uVar17;
ulonglong uVar18;
ulonglong uVar19;
param_4 = param_4 + *(int *)((int)param_5 + 0xc);
cVar12 = -1;
cVar13 = -1;
cVar14 = -1;
cVar15 = -1;
*(int *)((int)param_5 + 0xc) = param_4;
uVar18 = *param_5 | (ulonglong)param_3 << (ulonglong)(0x40 - param_4);
if (0x20 < param_4) {
puVar5 = *(ulonglong **)(param_5 + 2);
uVar19 = uVar18;
if ((int)param_5[3] - (int)*(ulonglong **)(param_5 + 2) < 0x17) {
iVar3 = FUN_00622a10(param_5);
uVar18 = uVar19;
if (iVar3 != 0) goto LAB_0065508c;
*(ulonglong **)(param_5 + 3) = param_5 + 0x208;
puVar5 = param_5 + 8;
uVar18 = extraout_MM0;
cVar12 = extraout_MM1_Ba;
cVar13 = extraout_MM1_Bb;
cVar14 = extraout_MM1_Bc;
cVar15 = extraout_MM1_Bd;
}
do {
while( true ) {
*(int *)((int)param_5 + 0x1c) = *(int *)((int)param_5 + 0x1c) + 4;
cVar7 = (char)(uVar18 >> 0x20);
cVar9 = (char)(uVar18 >> 0x28);
cVar10 = (char)(uVar18 >> 0x30);
cVar11 = (char)(uVar18 >> 0x38);
puVar6 = (ulonglong *)((int)puVar5 + 4);
uVar4 = CONCAT13(-(cVar15 == cVar11),
CONCAT12(-(cVar14 == cVar10),
CONCAT11(-(cVar13 == cVar9),-(cVar12 == cVar7))));
if (uVar4 == 0) {
param_4 = param_4 + -0x20;
uVar8 = CONCAT44((int)CONCAT11(cVar10,cVar11),(int)CONCAT11(cVar7,cVar9));
uVar8 = packssdw(uVar8,uVar8);
uVar18 = uVar19 << 0x20;
*(uint *)puVar5 = CONCAT22((short)uVar8,(short)((ulonglong)uVar8 >> 0x10));
goto LAB_00655084;
}
uVar4 = uVar4 >> 8;
uVar16 = (undefined1)(uVar19 >> 0x30);
uVar17 = (undefined1)(uVar19 >> 0x28);
if (0xfeffff < uVar4) break;
uVar1 = (uint)(uVar19 >> 0x20);
bVar2 = (byte)(uVar19 >> 0x38);
if (uVar4 < 0xff00) {
if (uVar4 == 0) {
uVar8 = CONCAT44((int)CONCAT11(uVar16,bVar2),
(int)CONCAT11((char)(uVar19 >> 0x20),uVar17));
uVar8 = packssdw(uVar8,uVar8);
uVar18 = (uVar19 << 0x20) >> 8;
*(uint *)puVar5 = CONCAT22((short)uVar8,(short)((ulonglong)uVar8 >> 0x10));
goto joined_r0x00654f33;
}
param_4 = param_4 + -0x18;
uVar18 = uVar19 << 0x18;
*(uint *)puVar5 =
(uint)((ulonglong)(DAT_00833f98 << 0x18) >> 0x10) | (uint)bVar2 |
uVar1 >> 8 & (uint)DAT_00833f98;
}
else if (uVar4 == 0xffff) {
uVar18 = (uVar19 << 0x18) >> 8;
param_4 = param_4 + -0x10;
*(uint *)puVar5 = (uint)bVar2 | (uint)_DAT_00833fa8;
}
else {
uVar18 = uVar19 << 0x18;
param_4 = param_4 + -0x18;
*(uint *)puVar5 = (uint)bVar2 | (uVar1 >> 8) << 0x18 | (uint)DAT_00833f98;
}
joined_r0x00654f33:
cVar15 = -1;
cVar14 = -1;
cVar13 = -1;
cVar12 = -1;
puVar5 = puVar6;
uVar19 = uVar18;
if (param_4 < 0x20) goto LAB_00655084;
}
if (uVar4 == 0xff0000) {
uVar18 = uVar19 << 0x18;
*(uint *)puVar5 = (uint)CONCAT11(uVar17,uVar16) << 0x10 | (uint)_DAT_00833f90;
joined_r0x00654f33:
param_4 = param_4 + -0x18;
goto joined_r0x00654f33;
}
if (uVar4 == 0xffff00) {
uVar18 = uVar19 << 0x10;
param_4 = param_4 + -0x10;
*(int *)puVar5 = (int)DAT_00833fa0;
goto joined_r0x00654f33;
}
param_4 = param_4 + -0x10;
uVar18 = (uVar19 << 0x18) >> 8;
*(uint *)puVar5 = (uint)((uVar19 >> 0x30) << 0x10) | (uint)_DAT_00833f90;
cVar12 = -1;
cVar13 = -1;
cVar14 = -1;
cVar15 = -1;
puVar5 = puVar6;
uVar19 = uVar18;
} while (0x1f < param_4);
LAB_00655084:
*(ulonglong **)(param_5 + 2) = puVar6;
*(int *)((int)param_5 + 0xc) = param_4;
}
iVar3 = 0;
LAB_0065508c:
*param_5 = uVar18;
return CONCAT44(param_2,iVar3);
}
// --- FUN_006550a0 at 0x006550A0 (size: 707) ---
undefined8 __fastcall
FUN_006550a0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
{
int iVar1;
int iVar2;
undefined4 in_EAX;
int iVar3;
ulonglong uVar4;
undefined8 uVar5;
undefined2 uVar6;
undefined8 uVar8;
undefined8 uVar9;
undefined8 uVar10;
undefined8 uVar11;
undefined8 uVar12;
undefined8 uVar13;
undefined8 uVar14;
ulonglong uVar7;
iVar3 = 8;
do {
uVar5 = *param_3;
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar5 = pmaddwd(uVar4,DAT_00833fb0);
uVar8 = pmaddwd(uVar7,DAT_00833fb0);
uVar9 = pmaddwd(uVar4,DAT_00833fb8);
uVar10 = pmaddwd(uVar7,DAT_00833fb8);
uVar11 = pmaddwd(uVar4,DAT_00833fc0);
iVar2 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar12 = pmaddwd(uVar7,DAT_00833fc0);
uVar5 = CONCAT44(((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20)) - iVar2 >> 8,
((int)uVar5 + (int)((ulonglong)uVar5 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar8 = packssdw(uVar5,uVar5);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) + (int)uVar11 + iVar1 >> 8,
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9 + (int)DAT_00833fe8 >> 8);
uVar10 = CONCAT44((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12 + iVar1 >> 8,
(int)((ulonglong)uVar10 >> 0x20) + (int)uVar10 + (int)DAT_00833fe8 >> 8);
uVar9 = packssdw(uVar5,uVar5);
uVar10 = packssdw(uVar10,uVar10);
uVar5 = *(undefined8 *)((int)param_3 + 6);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar12 = pmaddwd(uVar4,DAT_00833fb0);
uVar13 = pmaddwd(uVar7,DAT_00833fb0);
uVar5 = pmaddwd(uVar4,DAT_00833fb8);
uVar11 = pmaddwd(uVar7,DAT_00833fb8);
uVar12 = CONCAT44(((int)((ulonglong)uVar13 >> 0x20) + (int)uVar13) - iVar2 >> 8,
((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12) - (int)DAT_00833fe0 >> 8);
uVar12 = packssdw(uVar12,uVar12);
uVar13 = pmaddwd(uVar4,DAT_00833fc0);
uVar14 = pmaddwd(uVar7,DAT_00833fc0);
*param_5 = CONCAT44((int)uVar12,(int)uVar8);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar1 >> 8,
(int)uVar5 + (int)((ulonglong)uVar5 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar8 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar1 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar5 = packssdw(uVar5,uVar5);
uVar8 = packssdw(uVar8,uVar8);
*param_6 = CONCAT44(CONCAT22((short)uVar8,(short)uVar5),CONCAT22((short)uVar10,(short)uVar9));
*param_7 = CONCAT44(CONCAT22((short)((ulonglong)uVar8 >> 0x10),(short)((ulonglong)uVar5 >> 0x10)
),
CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar9 >> 0x10)));
uVar5 = *(undefined8 *)((int)param_3 + 0xc);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar5 = pmaddwd(uVar4,DAT_00833fb0);
uVar8 = pmaddwd(uVar7,DAT_00833fb0);
uVar9 = pmaddwd(uVar4,DAT_00833fb8);
uVar10 = pmaddwd(uVar7,DAT_00833fb8);
uVar11 = pmaddwd(uVar4,DAT_00833fc0);
iVar2 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar12 = pmaddwd(uVar7,DAT_00833fc0);
uVar5 = CONCAT44(((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20)) - iVar2 >> 8,
((int)uVar5 + (int)((ulonglong)uVar5 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar8 = packssdw(uVar5,uVar5);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar9 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) + (int)uVar11 + iVar1 >> 8,
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9 + (int)DAT_00833fe8 >> 8);
uVar5 = CONCAT44((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12 + iVar1 >> 8,
(int)((ulonglong)uVar10 >> 0x20) + (int)uVar10 + (int)DAT_00833fe8 >> 8);
uVar10 = packssdw(uVar9,uVar9);
uVar9 = packssdw(uVar5,uVar5);
uVar5 = *(undefined8 *)((int)param_3 + 0x12);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar12 = pmaddwd(uVar4,DAT_00833fb0);
uVar13 = pmaddwd(uVar7,DAT_00833fb0);
uVar5 = pmaddwd(uVar4,DAT_00833fb8);
uVar11 = pmaddwd(uVar7,DAT_00833fb8);
uVar12 = CONCAT44(((int)((ulonglong)uVar13 >> 0x20) + (int)uVar13) - iVar2 >> 8,
((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12) - (int)DAT_00833fe0 >> 8);
uVar12 = packssdw(uVar12,uVar12);
uVar13 = pmaddwd(uVar4,DAT_00833fc0);
uVar14 = pmaddwd(uVar7,DAT_00833fc0);
param_5[1] = CONCAT44((int)uVar12,(int)uVar8);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar1 >> 8,
(int)uVar5 + (int)((ulonglong)uVar5 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar8 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar1 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar5 = packssdw(uVar5,uVar5);
uVar8 = packssdw(uVar8,uVar8);
param_5 = param_5 + 2;
param_6[1] = CONCAT44(CONCAT22((short)uVar8,(short)uVar5),CONCAT22((short)uVar9,(short)uVar10));
param_7[1] = CONCAT44(CONCAT22((short)((ulonglong)uVar8 >> 0x10),
(short)((ulonglong)uVar5 >> 0x10)),
CONCAT22((short)((ulonglong)uVar9 >> 0x10),
(short)((ulonglong)uVar10 >> 0x10)));
param_6 = param_6 + 2;
param_7 = param_7 + 2;
param_3 = (undefined8 *)((int)param_3 + param_4);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00655370 at 0x00655370 (size: 707) ---
undefined8 __fastcall
FUN_00655370(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
{
int iVar1;
int iVar2;
undefined4 in_EAX;
int iVar3;
ulonglong uVar4;
undefined8 uVar5;
undefined2 uVar6;
undefined8 uVar8;
undefined8 uVar9;
undefined8 uVar10;
undefined8 uVar11;
undefined8 uVar12;
undefined8 uVar13;
undefined8 uVar14;
ulonglong uVar7;
iVar3 = 8;
do {
uVar5 = *param_3;
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar5 = pmaddwd(uVar4,DAT_00833fc8);
uVar8 = pmaddwd(uVar7,DAT_00833fc8);
uVar9 = pmaddwd(uVar4,DAT_00833fd0);
uVar10 = pmaddwd(uVar7,DAT_00833fd0);
uVar11 = pmaddwd(uVar4,DAT_00833fd8);
iVar2 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar12 = pmaddwd(uVar7,DAT_00833fd8);
uVar5 = CONCAT44(((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20)) - iVar2 >> 8,
((int)uVar5 + (int)((ulonglong)uVar5 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar8 = packssdw(uVar5,uVar5);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) + (int)uVar11 + iVar1 >> 8,
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9 + (int)DAT_00833fe8 >> 8);
uVar10 = CONCAT44((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12 + iVar1 >> 8,
(int)((ulonglong)uVar10 >> 0x20) + (int)uVar10 + (int)DAT_00833fe8 >> 8);
uVar9 = packssdw(uVar5,uVar5);
uVar10 = packssdw(uVar10,uVar10);
uVar5 = *(undefined8 *)((int)param_3 + 6);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar12 = pmaddwd(uVar4,DAT_00833fc8);
uVar13 = pmaddwd(uVar7,DAT_00833fc8);
uVar5 = pmaddwd(uVar4,DAT_00833fd0);
uVar11 = pmaddwd(uVar7,DAT_00833fd0);
uVar12 = CONCAT44(((int)((ulonglong)uVar13 >> 0x20) + (int)uVar13) - iVar2 >> 8,
((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12) - (int)DAT_00833fe0 >> 8);
uVar12 = packssdw(uVar12,uVar12);
uVar13 = pmaddwd(uVar4,DAT_00833fd8);
uVar14 = pmaddwd(uVar7,DAT_00833fd8);
*param_5 = CONCAT44((int)uVar12,(int)uVar8);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar1 >> 8,
(int)uVar5 + (int)((ulonglong)uVar5 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar8 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar1 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar5 = packssdw(uVar5,uVar5);
uVar8 = packssdw(uVar8,uVar8);
*param_6 = CONCAT44(CONCAT22((short)uVar8,(short)uVar5),CONCAT22((short)uVar10,(short)uVar9));
*param_7 = CONCAT44(CONCAT22((short)((ulonglong)uVar8 >> 0x10),(short)((ulonglong)uVar5 >> 0x10)
),
CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar9 >> 0x10)));
uVar5 = *(undefined8 *)((int)param_3 + 0xc);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar5 = pmaddwd(uVar4,DAT_00833fc8);
uVar8 = pmaddwd(uVar7,DAT_00833fc8);
uVar9 = pmaddwd(uVar4,DAT_00833fd0);
uVar10 = pmaddwd(uVar7,DAT_00833fd0);
uVar11 = pmaddwd(uVar4,DAT_00833fd8);
iVar2 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar12 = pmaddwd(uVar7,DAT_00833fd8);
uVar5 = CONCAT44(((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20)) - iVar2 >> 8,
((int)uVar5 + (int)((ulonglong)uVar5 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar8 = packssdw(uVar5,uVar5);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar9 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) + (int)uVar11 + iVar1 >> 8,
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9 + (int)DAT_00833fe8 >> 8);
uVar5 = CONCAT44((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12 + iVar1 >> 8,
(int)((ulonglong)uVar10 >> 0x20) + (int)uVar10 + (int)DAT_00833fe8 >> 8);
uVar10 = packssdw(uVar9,uVar9);
uVar9 = packssdw(uVar5,uVar5);
uVar5 = *(undefined8 *)((int)param_3 + 0x12);
uVar4 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar5 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar5 >> 8)),(ushort)(byte)uVar5);
uVar6 = (undefined2)((ulonglong)uVar5 >> 0x18);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar5
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar5 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar5 >> 0x20),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar12 = pmaddwd(uVar4,DAT_00833fc8);
uVar13 = pmaddwd(uVar7,DAT_00833fc8);
uVar5 = pmaddwd(uVar4,DAT_00833fd0);
uVar11 = pmaddwd(uVar7,DAT_00833fd0);
uVar12 = CONCAT44(((int)((ulonglong)uVar13 >> 0x20) + (int)uVar13) - iVar2 >> 8,
((int)((ulonglong)uVar12 >> 0x20) + (int)uVar12) - (int)DAT_00833fe0 >> 8);
uVar12 = packssdw(uVar12,uVar12);
uVar13 = pmaddwd(uVar4,DAT_00833fd8);
uVar14 = pmaddwd(uVar7,DAT_00833fd8);
param_5[1] = CONCAT44((int)uVar12,(int)uVar8);
iVar1 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar5 = CONCAT44((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar1 >> 8,
(int)uVar5 + (int)((ulonglong)uVar5 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar8 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar1 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + (int)DAT_00833fe8 >> 8);
uVar5 = packssdw(uVar5,uVar5);
uVar8 = packssdw(uVar8,uVar8);
param_5 = param_5 + 2;
param_6[1] = CONCAT44(CONCAT22((short)uVar8,(short)uVar5),CONCAT22((short)uVar9,(short)uVar10));
param_7[1] = CONCAT44(CONCAT22((short)((ulonglong)uVar8 >> 0x10),
(short)((ulonglong)uVar5 >> 0x10)),
CONCAT22((short)((ulonglong)uVar9 >> 0x10),
(short)((ulonglong)uVar10 >> 0x10)));
param_6 = param_6 + 2;
param_7 = param_7 + 2;
param_3 = (undefined8 *)((int)param_3 + param_4);
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00655640 at 0x00655640 (size: 828) ---
undefined8 __fastcall
FUN_00655640(undefined4 param_1,undefined4 param_2,ulonglong *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
{
ulonglong uVar1;
int iVar2;
undefined4 in_EAX;
int iVar3;
undefined8 uVar4;
ulonglong uVar5;
undefined2 uVar6;
ulonglong uVar7;
undefined8 uVar8;
ulonglong uVar9;
undefined8 uVar10;
undefined8 uVar11;
int iVar12;
undefined8 uVar13;
undefined8 uVar14;
iVar3 = 8;
do {
uVar4 = DAT_00834008;
uVar1 = *param_3;
uVar5 = param_3[1];
uVar7 = uVar1 & DAT_00834010;
uVar9 = uVar5 & DAT_00834010;
iVar12 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar8 = CONCAT44((uint)(byte)(uVar7 >> 0x38) - iVar12,(int)(uVar7 >> 0x18) - (int)DAT_00833fe8);
uVar10 = CONCAT44((uint)(byte)(uVar9 >> 0x38) - iVar12,(int)(uVar9 >> 0x18) - (int)DAT_00833fe8)
;
uVar8 = packssdw(uVar8,uVar8);
uVar10 = packssdw(uVar10,uVar10);
param_5[0x30] = CONCAT44((int)uVar10,(int)uVar8);
uVar10 = DAT_00833fc0;
uVar8 = DAT_00833fb8;
uVar13 = psubusb(uVar4,uVar1);
uVar4 = psubusb(uVar4,uVar5);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar13
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar13 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar13 >> 8),(short)uVar13)) >> 0x10
),(short)uVar13) & 0xffff00ff00ff00ff;
uVar6 = (undefined2)((ulonglong)uVar13 >> 0x20);
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar13
>> 0x38) << 0x30)
>> 0x28),
(char)((ulonglong)uVar13 >> 0x30)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar13 >> 0x28),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar1 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar4 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar4 >> 8)),(ushort)(byte)uVar4);
uVar6 = (undefined2)((ulonglong)uVar4 >> 0x20);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4
>> 0x38) << 0x30)
>> 0x28),
(char)((ulonglong)uVar4 >> 0x30)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar4 >> 0x28),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar14 = pmaddwd(uVar9,DAT_00833fb0);
uVar13 = pmaddwd(uVar5,DAT_00833fb0);
uVar4 = pmaddwd(uVar1,DAT_00833fb0);
uVar11 = pmaddwd(uVar7,DAT_00833fb0);
iVar12 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar13 = CONCAT44(((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20)) - iVar12 >> 8,
((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar4 = CONCAT44(((int)uVar11 + (int)((ulonglong)uVar11 >> 0x20)) - iVar12 >> 8,
((int)uVar4 + (int)((ulonglong)uVar4 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar13 = packssdw(uVar13,uVar13);
uVar4 = packssdw(uVar4,uVar4);
*param_5 = CONCAT44((int)uVar4,(int)uVar13);
uVar4 = pmaddwd(uVar9,uVar8);
uVar13 = pmaddwd(uVar5,uVar8);
uVar11 = pmaddwd(uVar9,uVar10);
uVar14 = pmaddwd(uVar5,uVar10);
iVar12 = (int)DAT_00833fe8;
iVar2 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar4 = CONCAT44((int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + iVar2 >> 8,
(int)uVar4 + (int)((ulonglong)uVar4 >> 0x20) + iVar12 >> 8);
uVar13 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar2 >> 8,
(int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar12 >> 8);
uVar4 = packssdw(uVar4,uVar4);
uVar13 = packssdw(uVar13,uVar13);
uVar11 = pmaddwd(uVar1,uVar8);
uVar14 = pmaddwd(uVar7,uVar8);
uVar8 = pmaddwd(uVar1,uVar10);
uVar10 = pmaddwd(uVar7,uVar10);
uVar8 = CONCAT44((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20) + iVar2 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + iVar12 >> 8);
uVar10 = CONCAT44((int)uVar10 + (int)((ulonglong)uVar10 >> 0x20) + iVar2 >> 8,
(int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar12 >> 8);
uVar8 = packssdw(uVar8,uVar8);
uVar10 = packssdw(uVar10,uVar10);
*param_6 = CONCAT44(CONCAT22((short)uVar10,(short)uVar8),CONCAT22((short)uVar13,(short)uVar4));
*param_7 = CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar8 >> 0x10)),
CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar4 >> 0x10)));
uVar4 = DAT_00834008;
uVar1 = param_3[2];
uVar5 = param_3[3];
uVar7 = uVar1 & DAT_00834010;
uVar9 = uVar5 & DAT_00834010;
iVar12 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar8 = CONCAT44((uint)(byte)(uVar7 >> 0x38) - iVar12,(int)(uVar7 >> 0x18) - (int)DAT_00833fe8);
uVar10 = CONCAT44((uint)(byte)(uVar9 >> 0x38) - iVar12,(int)(uVar9 >> 0x18) - (int)DAT_00833fe8)
;
uVar8 = packssdw(uVar8,uVar8);
uVar10 = packssdw(uVar10,uVar10);
param_5[0x31] = CONCAT44((int)uVar10,(int)uVar8);
uVar10 = DAT_00833fc0;
uVar8 = DAT_00833fb8;
uVar13 = psubusb(uVar4,uVar1);
uVar4 = psubusb(uVar4,uVar5);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar13
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar13 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar13 >> 8),(short)uVar13)) >> 0x10
),(short)uVar13) & 0xffff00ff00ff00ff;
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar4 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar4 >> 8),(short)uVar4)) >> 0x10),
(short)uVar4) & 0xffff00ff00ff00ff;
uVar1 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar13 >>
0x38) << 0x30) >> 0x28),
(char)((ulonglong)uVar13 >> 0x30)) << 0x20) >>
0x18),(char)((ulonglong)uVar13 >> 0x28)),
(ushort)(byte)((ulonglong)uVar13 >> 0x20));
uVar6 = (undefined2)((ulonglong)uVar4 >> 0x20);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4
>> 0x38) << 0x30)
>> 0x28),
(char)((ulonglong)uVar4 >> 0x30)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar4 >> 0x28),uVar6)) >> 0x10),
uVar6) & 0xffffffff00ff00ff;
uVar14 = pmaddwd(uVar9,DAT_00833fb0);
uVar13 = pmaddwd(uVar1,DAT_00833fb0);
uVar4 = pmaddwd(uVar5,DAT_00833fb0);
uVar11 = pmaddwd(uVar7,DAT_00833fb0);
iVar12 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar13 = CONCAT44(((int)uVar13 + (int)((ulonglong)uVar13 >> 0x20)) - iVar12 >> 8,
((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar4 = CONCAT44(((int)uVar11 + (int)((ulonglong)uVar11 >> 0x20)) - iVar12 >> 8,
((int)uVar4 + (int)((ulonglong)uVar4 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar13 = packssdw(uVar13,uVar13);
uVar4 = packssdw(uVar4,uVar4);
param_5[1] = CONCAT44((int)uVar4,(int)uVar13);
uVar4 = pmaddwd(uVar9,uVar8);
uVar13 = pmaddwd(uVar1,uVar8);
uVar11 = pmaddwd(uVar9,uVar10);
uVar14 = pmaddwd(uVar1,uVar10);
iVar12 = (int)DAT_00833fe8;
iVar2 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar4 = CONCAT44((int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + iVar2 >> 8,
(int)uVar4 + (int)((ulonglong)uVar4 >> 0x20) + iVar12 >> 8);
uVar13 = CONCAT44((int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar2 >> 8,
(int)uVar13 + (int)((ulonglong)uVar13 >> 0x20) + iVar12 >> 8);
uVar4 = packssdw(uVar4,uVar4);
uVar13 = packssdw(uVar13,uVar13);
uVar11 = pmaddwd(uVar5,uVar8);
uVar14 = pmaddwd(uVar7,uVar8);
uVar8 = pmaddwd(uVar5,uVar10);
uVar10 = pmaddwd(uVar7,uVar10);
uVar8 = CONCAT44((int)uVar8 + (int)((ulonglong)uVar8 >> 0x20) + iVar2 >> 8,
(int)uVar11 + (int)((ulonglong)uVar11 >> 0x20) + iVar12 >> 8);
uVar10 = CONCAT44((int)uVar10 + (int)((ulonglong)uVar10 >> 0x20) + iVar2 >> 8,
(int)uVar14 + (int)((ulonglong)uVar14 >> 0x20) + iVar12 >> 8);
uVar8 = packssdw(uVar8,uVar8);
uVar10 = packssdw(uVar10,uVar10);
param_5 = param_5 + 2;
param_3 = (ulonglong *)((int)param_3 + param_4);
param_6[1] = CONCAT44(CONCAT22((short)uVar10,(short)uVar8),CONCAT22((short)uVar13,(short)uVar4))
;
param_7[1] = CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar8 >> 0x10)),
CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar4 >> 0x10)));
param_6 = param_6 + 2;
param_7 = param_7 + 2;
iVar3 = iVar3 + -1;
} while (iVar3 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00655980 at 0x00655980 (size: 966) ---
undefined8 __fastcall
FUN_00655980(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
{
int iVar1;
ushort uVar2;
ushort uVar3;
ushort uVar4;
ushort uVar5;
undefined7 uVar6;
undefined7 uVar7;
uint3 uVar8;
undefined5 uVar9;
uint3 uVar10;
uint3 uVar11;
undefined5 uVar12;
uint3 uVar13;
undefined4 in_EAX;
int iVar14;
byte bVar16;
undefined8 uVar15;
undefined8 uVar17;
ushort uVar18;
undefined8 uVar19;
undefined8 uVar20;
ushort uVar21;
undefined8 uVar22;
undefined8 uVar23;
undefined8 uVar24;
undefined8 uVar25;
undefined8 uVar26;
undefined8 uVar27;
iVar14 = 8;
do {
uVar17 = *param_3;
uVar15 = *(undefined8 *)((int)param_3 + 6);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar18 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar18));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar21 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar21));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fb0);
uVar19 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar20 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fb0);
uVar24 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar18 & 0xff) + (uVar21 & 0xff))));
uVar22 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar22 + (int)((ulonglong)uVar22 >> 0x20)) - iVar1 >> 8,
((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar23 = pmaddwd(uVar20,DAT_00833fb8);
uVar15 = packssdw(uVar15,uVar15);
uVar25 = pmaddwd(uVar24,DAT_00833fb8);
uVar19 = pmaddwd(uVar20,DAT_00833fc0);
uVar22 = pmaddwd(uVar24,DAT_00833fc0);
*param_5 = CONCAT44((int)uVar15,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = *(undefined8 *)((int)param_3 + 0xc);
uVar15 = *(undefined8 *)((int)param_3 + 0x12);
uVar22 = CONCAT44((int)((ulonglong)uVar22 >> 0x20) + (int)uVar22 + iVar1 >> 9,
(int)((ulonglong)uVar25 >> 0x20) + (int)uVar25 + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) + (int)uVar19 + iVar1 >> 9,
(int)((ulonglong)uVar23 >> 0x20) + (int)uVar23 + (int)DAT_00833ff0 >> 9);
uVar19 = packssdw(uVar19,uVar19);
uVar22 = packssdw(uVar22,uVar22);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar21 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar21));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar18 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar18));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fb0);
uVar20 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar24 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fb0);
uVar26 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar21 & 0xff) + (uVar18 & 0xff))));
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - iVar1 >> 8,
((int)uVar20 + (int)((ulonglong)uVar20 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar25 = pmaddwd(uVar24,DAT_00833fb8);
uVar20 = packssdw(uVar15,uVar15);
uVar27 = pmaddwd(uVar26,DAT_00833fb8);
uVar15 = pmaddwd(uVar24,DAT_00833fc0);
uVar23 = pmaddwd(uVar26,DAT_00833fc0);
param_5[1] = CONCAT44((int)uVar20,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = CONCAT44((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20) + iVar1 >> 9,
(int)uVar25 + (int)((ulonglong)uVar25 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar15 = CONCAT44((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + iVar1 >> 9,
(int)uVar27 + (int)((ulonglong)uVar27 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar17 = packssdw(uVar17,uVar17);
uVar15 = packssdw(uVar15,uVar15);
*param_6 = CONCAT44(CONCAT22((short)uVar15,(short)uVar17),CONCAT22((short)uVar22,(short)uVar19))
;
*param_7 = CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)((ulonglong)uVar22 >> 0x10),
(short)((ulonglong)uVar19 >> 0x10)));
uVar17 = *(undefined8 *)((int)param_3 + 0x1e);
uVar15 = param_3[3];
bVar16 = (byte)((ulonglong)uVar15 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar15 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar15 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar17 >> 0x10));
uVar18 = (ushort)uVar17;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar17 >> 8),uVar18));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar15 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar15 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar17 >> 0x28));
uVar21 = (ushort)((ulonglong)uVar17 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar17 >> 0x20),uVar21));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar15),DAT_00833fb0);
uVar19 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar20 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar15 + (ushort)bVar16)));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fb0);
uVar24 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar18 & 0xff) + (uVar21 & 0xff))));
uVar22 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - iVar1 >> 8,
((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar22 + (int)((ulonglong)uVar22 >> 0x20)) - iVar1 >> 8,
((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar23 = pmaddwd(uVar20,DAT_00833fb8);
uVar15 = packssdw(uVar15,uVar15);
uVar25 = pmaddwd(uVar24,DAT_00833fb8);
uVar19 = pmaddwd(uVar20,DAT_00833fc0);
uVar22 = pmaddwd(uVar24,DAT_00833fc0);
param_5[0x10] = CONCAT44((int)uVar15,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = *(undefined8 *)((int)param_3 + 0x24);
uVar15 = *(undefined8 *)((int)param_3 + 0x2a);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) + (int)uVar19 + iVar1 >> 9,
(int)((ulonglong)uVar23 >> 0x20) + (int)uVar23 + (int)DAT_00833ff0 >> 9);
uVar22 = CONCAT44((int)((ulonglong)uVar22 >> 0x20) + (int)uVar22 + iVar1 >> 9,
(int)((ulonglong)uVar25 >> 0x20) + (int)uVar25 + (int)DAT_00833ff0 >> 9);
uVar19 = packssdw(uVar19,uVar19);
uVar22 = packssdw(uVar22,uVar22);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar21 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar21));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar18 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar18));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fb0);
uVar20 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar24 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fb0);
uVar26 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar21 & 0xff) + (uVar18 & 0xff))));
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - iVar1 >> 8,
((int)uVar20 + (int)((ulonglong)uVar20 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar25 = pmaddwd(uVar24,DAT_00833fb8);
uVar20 = packssdw(uVar15,uVar15);
uVar27 = pmaddwd(uVar26,DAT_00833fb8);
uVar15 = pmaddwd(uVar24,DAT_00833fc0);
uVar23 = pmaddwd(uVar26,DAT_00833fc0);
param_3 = (undefined8 *)((int)param_3 + param_4);
param_5[0x11] = CONCAT44((int)uVar20,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = CONCAT44((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20) + iVar1 >> 9,
(int)uVar25 + (int)((ulonglong)uVar25 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar15 = CONCAT44((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + iVar1 >> 9,
(int)uVar27 + (int)((ulonglong)uVar27 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar17 = packssdw(uVar17,uVar17);
uVar15 = packssdw(uVar15,uVar15);
param_5 = param_5 + 2;
param_6[1] = CONCAT44(CONCAT22((short)uVar15,(short)uVar17),
CONCAT22((short)uVar22,(short)uVar19));
param_7[1] = CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)((ulonglong)uVar22 >> 0x10),
(short)((ulonglong)uVar19 >> 0x10)));
iVar14 = iVar14 + -1;
param_6 = param_6 + 2;
param_7 = param_7 + 2;
} while (iVar14 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00655d50 at 0x00655D50 (size: 966) ---
undefined8 __fastcall
FUN_00655d50(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
{
int iVar1;
ushort uVar2;
ushort uVar3;
ushort uVar4;
ushort uVar5;
undefined7 uVar6;
undefined7 uVar7;
uint3 uVar8;
undefined5 uVar9;
uint3 uVar10;
uint3 uVar11;
undefined5 uVar12;
uint3 uVar13;
undefined4 in_EAX;
int iVar14;
byte bVar16;
undefined8 uVar15;
undefined8 uVar17;
ushort uVar18;
undefined8 uVar19;
undefined8 uVar20;
ushort uVar21;
undefined8 uVar22;
undefined8 uVar23;
undefined8 uVar24;
undefined8 uVar25;
undefined8 uVar26;
undefined8 uVar27;
iVar14 = 8;
do {
uVar17 = *param_3;
uVar15 = *(undefined8 *)((int)param_3 + 6);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar18 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar18));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar21 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar21));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fc8);
uVar19 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar20 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fc8);
uVar24 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar18 & 0xff) + (uVar21 & 0xff))));
uVar22 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fc8);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar22 + (int)((ulonglong)uVar22 >> 0x20)) - iVar1 >> 8,
((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar23 = pmaddwd(uVar20,DAT_00833fd0);
uVar15 = packssdw(uVar15,uVar15);
uVar25 = pmaddwd(uVar24,DAT_00833fd0);
uVar19 = pmaddwd(uVar20,DAT_00833fd8);
uVar22 = pmaddwd(uVar24,DAT_00833fd8);
*param_5 = CONCAT44((int)uVar15,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = *(undefined8 *)((int)param_3 + 0xc);
uVar15 = *(undefined8 *)((int)param_3 + 0x12);
uVar22 = CONCAT44((int)((ulonglong)uVar22 >> 0x20) + (int)uVar22 + iVar1 >> 9,
(int)((ulonglong)uVar25 >> 0x20) + (int)uVar25 + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) + (int)uVar19 + iVar1 >> 9,
(int)((ulonglong)uVar23 >> 0x20) + (int)uVar23 + (int)DAT_00833ff0 >> 9);
uVar19 = packssdw(uVar19,uVar19);
uVar22 = packssdw(uVar22,uVar22);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar21 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar21));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar18 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar18));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fc8);
uVar20 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar24 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fc8);
uVar26 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar21 & 0xff) + (uVar18 & 0xff))));
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fc8);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - iVar1 >> 8,
((int)uVar20 + (int)((ulonglong)uVar20 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar25 = pmaddwd(uVar24,DAT_00833fd0);
uVar20 = packssdw(uVar15,uVar15);
uVar27 = pmaddwd(uVar26,DAT_00833fd0);
uVar15 = pmaddwd(uVar24,DAT_00833fd8);
uVar23 = pmaddwd(uVar26,DAT_00833fd8);
param_5[1] = CONCAT44((int)uVar20,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = CONCAT44((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20) + iVar1 >> 9,
(int)uVar25 + (int)((ulonglong)uVar25 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar15 = CONCAT44((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + iVar1 >> 9,
(int)uVar27 + (int)((ulonglong)uVar27 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar17 = packssdw(uVar17,uVar17);
uVar15 = packssdw(uVar15,uVar15);
*param_6 = CONCAT44(CONCAT22((short)uVar15,(short)uVar17),CONCAT22((short)uVar22,(short)uVar19))
;
*param_7 = CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)((ulonglong)uVar22 >> 0x10),
(short)((ulonglong)uVar19 >> 0x10)));
uVar17 = *(undefined8 *)((int)param_3 + 0x1e);
uVar15 = param_3[3];
bVar16 = (byte)((ulonglong)uVar15 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar15 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar15 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar17 >> 0x10));
uVar18 = (ushort)uVar17;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar17 >> 8),uVar18));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar15 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar15 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar17 >> 0x28));
uVar21 = (ushort)((ulonglong)uVar17 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar17 >> 0x20),uVar21));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar15),DAT_00833fc8);
uVar19 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar20 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar15 + (ushort)bVar16)));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fc8);
uVar24 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar18 & 0xff) + (uVar21 & 0xff))));
uVar22 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fc8);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - iVar1 >> 8,
((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar22 + (int)((ulonglong)uVar22 >> 0x20)) - iVar1 >> 8,
((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar23 = pmaddwd(uVar20,DAT_00833fd0);
uVar15 = packssdw(uVar15,uVar15);
uVar25 = pmaddwd(uVar24,DAT_00833fd0);
uVar19 = pmaddwd(uVar20,DAT_00833fd8);
uVar22 = pmaddwd(uVar24,DAT_00833fd8);
param_5[0x10] = CONCAT44((int)uVar15,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = *(undefined8 *)((int)param_3 + 0x24);
uVar15 = *(undefined8 *)((int)param_3 + 0x2a);
uVar22 = CONCAT44((int)((ulonglong)uVar22 >> 0x20) + (int)uVar22 + iVar1 >> 9,
(int)((ulonglong)uVar25 >> 0x20) + (int)uVar25 + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) + (int)uVar19 + iVar1 >> 9,
(int)((ulonglong)uVar23 >> 0x20) + (int)uVar23 + (int)DAT_00833ff0 >> 9);
uVar19 = packssdw(uVar19,uVar19);
uVar22 = packssdw(uVar22,uVar22);
bVar16 = (byte)((ulonglong)uVar17 >> 0x18);
uVar5 = (ushort)(((uint7)bVar16 << 0x30) >> 0x28);
uVar8 = CONCAT21(uVar5,(char)((ulonglong)uVar17 >> 0x10));
uVar9 = CONCAT41((int)(((uint7)uVar8 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar15 >> 0x10));
uVar21 = (ushort)uVar15;
uVar7 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 8),uVar21));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar17 >> 0x30) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar17 >> 0x28));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar17 >> 0x20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar15 >> 0x30) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar15 >> 0x28));
uVar18 = (ushort)((ulonglong)uVar15 >> 0x18);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar15 >> 0x20),uVar18));
uVar15 = pmaddwd((ulonglong)CONCAT52(uVar9,(ushort)(byte)uVar17),DAT_00833fc8);
uVar20 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar21) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar24 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar8 + (short)uVar11,
CONCAT22((short)uVar9 + (short)uVar12,
(ushort)(byte)uVar17 + (ushort)bVar16)));
uVar17 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)bVar16),DAT_00833fc8);
uVar26 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar7 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar21 & 0xff) + (uVar18 & 0xff))));
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar18) & 0xffffffffffff00ff,
DAT_00833fc8);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar17 = CONCAT44(((int)uVar17 + (int)((ulonglong)uVar17 >> 0x20)) - iVar1 >> 8,
((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar15 = CONCAT44(((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - iVar1 >> 8,
((int)uVar20 + (int)((ulonglong)uVar20 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar17 = packssdw(uVar17,uVar17);
uVar25 = pmaddwd(uVar24,DAT_00833fd0);
uVar20 = packssdw(uVar15,uVar15);
uVar27 = pmaddwd(uVar26,DAT_00833fd0);
uVar15 = pmaddwd(uVar24,DAT_00833fd8);
uVar23 = pmaddwd(uVar26,DAT_00833fd8);
param_3 = (undefined8 *)((int)param_3 + param_4);
param_5[0x11] = CONCAT44((int)uVar20,(int)uVar17);
iVar1 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar17 = CONCAT44((int)uVar15 + (int)((ulonglong)uVar15 >> 0x20) + iVar1 >> 9,
(int)uVar25 + (int)((ulonglong)uVar25 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar15 = CONCAT44((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + iVar1 >> 9,
(int)uVar27 + (int)((ulonglong)uVar27 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar17 = packssdw(uVar17,uVar17);
uVar15 = packssdw(uVar15,uVar15);
param_5 = param_5 + 2;
param_6[1] = CONCAT44(CONCAT22((short)uVar15,(short)uVar17),
CONCAT22((short)uVar22,(short)uVar19));
param_7[1] = CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)((ulonglong)uVar22 >> 0x10),
(short)((ulonglong)uVar19 >> 0x10)));
iVar14 = iVar14 + -1;
param_6 = param_6 + 2;
param_7 = param_7 + 2;
} while (iVar14 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00656120 at 0x00656120 (size: 1279) ---
undefined8 __fastcall
FUN_00656120(undefined4 param_1,undefined4 param_2,ulonglong *param_3,int param_4,
undefined8 *param_5,undefined4 *param_6,undefined4 *param_7,undefined8 *param_8)
{
ulonglong uVar1;
ushort uVar2;
ushort uVar3;
ushort uVar4;
ushort uVar5;
undefined7 uVar6;
undefined7 uVar7;
undefined7 uVar8;
uint3 uVar9;
uint3 uVar10;
uint3 uVar11;
undefined5 uVar12;
uint3 uVar13;
undefined4 in_EAX;
int iVar14;
ushort uVar15;
undefined8 uVar16;
ushort uVar17;
ulonglong uVar18;
undefined8 uVar19;
ushort uVar20;
ulonglong uVar21;
ulonglong uVar22;
undefined8 uVar23;
undefined8 uVar24;
undefined8 uVar25;
int iVar26;
int iVar27;
ushort uVar28;
undefined8 uVar29;
undefined8 uVar30;
undefined8 uVar31;
iVar14 = 8;
do {
uVar16 = DAT_00834008;
uVar1 = param_3[1];
uVar18 = *param_3 & DAT_00834010;
uVar22 = uVar1 & DAT_00834010;
iVar26 = (int)((ulonglong)DAT_00833fe8 >> 0x20);
uVar19 = CONCAT44((uint)(byte)(uVar18 >> 0x38) - iVar26,
(int)(uVar18 >> 0x18) - (int)DAT_00833fe8);
uVar23 = CONCAT44((uint)(byte)(uVar22 >> 0x38) - iVar26,
(int)(uVar22 >> 0x18) - (int)DAT_00833fe8);
uVar19 = packssdw(uVar19,uVar19);
uVar23 = packssdw(uVar23,uVar23);
uVar29 = psubusb(DAT_00834008,*param_3);
*param_8 = CONCAT44((int)uVar23,(int)uVar19);
uVar16 = psubusb(uVar16,uVar1);
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar29 >> 0x18) << 0x30) >> 0x28);
uVar9 = CONCAT21(uVar2,(char)((ulonglong)uVar29 >> 0x10));
uVar28 = (ushort)uVar29;
uVar7 = CONCAT43((int)(((uint7)uVar9 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar29 >> 8),uVar28));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar16 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar3,(char)((ulonglong)uVar16 >> 0x10));
uVar15 = (ushort)uVar16;
uVar8 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar16 >> 8),uVar15));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar29 >> 0x38) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar4,(char)((ulonglong)uVar29 >> 0x30));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar29 >> 0x28));
uVar17 = (ushort)(byte)((ulonglong)uVar29 >> 0x20);
uVar5 = (ushort)(((uint7)(byte)((ulonglong)uVar16 >> 0x38) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar5,(char)((ulonglong)uVar16 >> 0x30));
uVar20 = (ushort)((ulonglong)uVar16 >> 0x20);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar16 >> 0x28),uVar20));
uVar30 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar28) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar16 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar8 >> 0x10),uVar15) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar23 = pmaddwd((ulonglong)CONCAT52(uVar12,uVar17),DAT_00833fb0);
uVar24 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar20) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar19 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar9 + (short)uVar11,
CONCAT22((short)((uint7)uVar7 >> 0x10) + (short)uVar12,
(uVar28 & 0xff) + uVar17)));
uVar29 = CONCAT26((uVar3 >> 8) + (uVar5 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar8 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar15 & 0xff) + (uVar20 & 0xff))));
iVar26 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar16 = CONCAT44(((int)uVar24 + (int)((ulonglong)uVar24 >> 0x20)) - iVar26 >> 8,
((int)uVar16 + (int)((ulonglong)uVar16 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar25 = CONCAT44(((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - iVar26 >> 8,
((int)uVar30 + (int)((ulonglong)uVar30 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar24 = pmaddwd(uVar19,DAT_00833fc0);
uVar19 = pmaddwd(uVar19,DAT_00833fb8);
uVar30 = pmaddwd(uVar29,DAT_00833fc0);
uVar23 = pmaddwd(uVar29,DAT_00833fb8);
uVar29 = packssdw(uVar25,uVar25);
uVar16 = packssdw(uVar16,uVar16);
*param_5 = CONCAT44((int)uVar16,(int)uVar29);
uVar22 = DAT_00834010;
uVar16 = DAT_00833fe8;
iVar26 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar19 = CONCAT44((int)uVar24 + (int)((ulonglong)uVar24 >> 0x20) + iVar26 >> 9,
(int)uVar19 + (int)((ulonglong)uVar19 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar23 = CONCAT44((int)uVar30 + (int)((ulonglong)uVar30 >> 0x20) + iVar26 >> 9,
(int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar19 = packssdw(uVar19,uVar19);
uVar1 = param_3[2];
uVar23 = packssdw(uVar23,uVar23);
uVar18 = param_3[3];
*param_6 = CONCAT22((short)uVar23,(short)uVar19);
uVar21 = uVar18 & uVar22;
*param_7 = CONCAT22((short)((ulonglong)uVar23 >> 0x10),(short)((ulonglong)uVar19 >> 0x10));
uVar23 = DAT_00834008;
uVar22 = uVar1 & uVar22;
iVar26 = (int)uVar16;
iVar27 = (int)((ulonglong)uVar16 >> 0x20);
uVar16 = CONCAT44((uint)(byte)(uVar21 >> 0x38) - iVar27,(int)(uVar21 >> 0x18) - iVar26);
uVar19 = CONCAT44((uint)(byte)(uVar22 >> 0x38) - iVar27,(int)(uVar22 >> 0x18) - iVar26);
uVar16 = packssdw(uVar16,uVar16);
uVar19 = packssdw(uVar19,uVar19);
param_8[1] = CONCAT44((int)uVar16,(int)uVar19);
uVar19 = DAT_00833fc0;
uVar16 = DAT_00833fb8;
uVar29 = psubusb(uVar23,uVar1);
uVar23 = psubusb(uVar23,uVar18);
uVar5 = (ushort)(((uint7)(byte)((ulonglong)uVar29 >> 0x18) << 0x30) >> 0x28);
uVar9 = CONCAT21(uVar5,(char)((ulonglong)uVar29 >> 0x10));
uVar12 = CONCAT41((int)(((uint7)uVar9 << 0x20) >> 0x18),(char)((ulonglong)uVar29 >> 8));
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar2,(char)((ulonglong)uVar23 >> 0x10));
uVar15 = (ushort)uVar23;
uVar8 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 8),uVar15));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar29 >> 0x38) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar3,(char)((ulonglong)uVar29 >> 0x30));
uVar20 = (ushort)((ulonglong)uVar29 >> 0x20);
uVar6 = CONCAT43((int)(((uint7)uVar11 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar29 >> 0x28),uVar20));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x38) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar4,(char)((ulonglong)uVar23 >> 0x30));
uVar17 = (ushort)((ulonglong)uVar23 >> 0x20);
uVar7 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 0x28),uVar17));
uVar24 = CONCAT26((uVar5 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar9 + (short)uVar11,
CONCAT22((short)uVar12 + (short)((uint7)uVar6 >> 0x10),
(ushort)(byte)uVar29 + (uVar20 & 0xff))));
uVar25 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar8 >> 0x10) +
(short)((uint7)uVar7 >> 0x10),
(uVar15 & 0xff) + (uVar17 & 0xff))));
uVar29 = pmaddwd((ulonglong)CONCAT52(uVar12,(ushort)(byte)uVar29),DAT_00833fb0);
uVar31 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar20) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar8 >> 0x10),uVar15) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar30 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar17) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar26 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar29 = CONCAT44(((int)uVar31 + (int)((ulonglong)uVar31 >> 0x20)) - iVar26 >> 8,
((int)uVar29 + (int)((ulonglong)uVar29 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar23 = CONCAT44(((int)uVar30 + (int)((ulonglong)uVar30 >> 0x20)) - iVar26 >> 8,
((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar29 = packssdw(uVar29,uVar29);
uVar23 = packssdw(uVar23,uVar23);
param_5[1] = CONCAT44((int)uVar23,(int)uVar29);
uVar22 = DAT_00834010;
uVar23 = DAT_00833fe8;
uVar29 = pmaddwd(uVar24,uVar16);
uVar30 = pmaddwd(uVar25,uVar16);
uVar16 = pmaddwd(uVar24,uVar19);
uVar19 = pmaddwd(uVar25,uVar19);
iVar26 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar16 = CONCAT44((int)uVar16 + (int)((ulonglong)uVar16 >> 0x20) + iVar26 >> 9,
(int)uVar29 + (int)((ulonglong)uVar29 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20) + iVar26 >> 9,
(int)uVar30 + (int)((ulonglong)uVar30 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar16 = packssdw(uVar16,uVar16);
uVar19 = packssdw(uVar19,uVar19);
param_6[1] = CONCAT22((short)uVar19,(short)uVar16);
param_7[1] = CONCAT22((short)((ulonglong)uVar19 >> 0x10),(short)((ulonglong)uVar16 >> 0x10));
uVar29 = DAT_00834008;
uVar1 = param_3[4];
uVar18 = param_3[5];
uVar21 = uVar1 & uVar22;
uVar22 = uVar18 & uVar22;
iVar26 = (int)uVar23;
iVar27 = (int)((ulonglong)uVar23 >> 0x20);
uVar16 = CONCAT44((uint)(byte)(uVar21 >> 0x38) - iVar27,(int)(uVar21 >> 0x18) - iVar26);
uVar19 = CONCAT44((uint)(byte)(uVar22 >> 0x38) - iVar27,(int)(uVar22 >> 0x18) - iVar26);
uVar16 = packssdw(uVar16,uVar16);
uVar19 = packssdw(uVar19,uVar19);
param_8[0x10] = CONCAT44((int)uVar19,(int)uVar16);
uVar19 = DAT_00833fc0;
uVar16 = DAT_00833fb8;
uVar24 = psubusb(uVar29,uVar1);
uVar23 = psubusb(uVar29,uVar18);
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar24 >> 0x18) << 0x30) >> 0x28);
uVar9 = CONCAT21(uVar2,(char)((ulonglong)uVar24 >> 0x10));
uVar28 = (ushort)uVar24;
uVar7 = CONCAT43((int)(((uint7)uVar9 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar24 >> 8),uVar28));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar3,(char)((ulonglong)uVar23 >> 0x10));
uVar15 = (ushort)uVar23;
uVar8 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 8),uVar15));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar24 >> 0x38) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar4,(char)((ulonglong)uVar24 >> 0x30));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar24 >> 0x28));
uVar17 = (ushort)(byte)((ulonglong)uVar24 >> 0x20);
uVar5 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x38) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar5,(char)((ulonglong)uVar23 >> 0x30));
uVar20 = (ushort)((ulonglong)uVar23 >> 0x20);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 0x28),uVar20));
uVar29 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar9 + (short)uVar11,
CONCAT22((short)((uint7)uVar7 >> 0x10) + (short)uVar12,
(uVar28 & 0xff) + uVar17)));
uVar30 = CONCAT26((uVar3 >> 8) + (uVar5 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar8 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar15 & 0xff) + (uVar20 & 0xff))));
uVar31 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar28) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar24 = pmaddwd((ulonglong)CONCAT52(uVar12,uVar17),DAT_00833fb0);
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar8 >> 0x10),uVar15) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar25 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar20) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar26 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar24 = CONCAT44(((int)uVar24 + (int)((ulonglong)uVar24 >> 0x20)) - iVar26 >> 8,
((int)uVar31 + (int)((ulonglong)uVar31 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar23 = CONCAT44(((int)uVar25 + (int)((ulonglong)uVar25 >> 0x20)) - iVar26 >> 8,
((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar24 = packssdw(uVar24,uVar24);
uVar23 = packssdw(uVar23,uVar23);
param_5[0x10] = CONCAT44((int)uVar23,(int)uVar24);
uVar22 = DAT_00834010;
uVar23 = DAT_00833fe8;
uVar24 = pmaddwd(uVar29,uVar16);
uVar25 = pmaddwd(uVar30,uVar16);
uVar16 = pmaddwd(uVar29,uVar19);
uVar19 = pmaddwd(uVar30,uVar19);
iVar26 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar16 = CONCAT44((int)uVar16 + (int)((ulonglong)uVar16 >> 0x20) + iVar26 >> 9,
(int)uVar24 + (int)((ulonglong)uVar24 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20) + iVar26 >> 9,
(int)uVar25 + (int)((ulonglong)uVar25 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar16 = packssdw(uVar16,uVar16);
uVar19 = packssdw(uVar19,uVar19);
uVar1 = param_3[6];
uVar18 = param_3[7];
param_6[2] = CONCAT22((short)uVar19,(short)uVar16);
param_7[2] = CONCAT22((short)((ulonglong)uVar19 >> 0x10),(short)((ulonglong)uVar16 >> 0x10));
uVar29 = DAT_00834008;
uVar21 = uVar18 & uVar22;
uVar22 = uVar1 & uVar22;
iVar26 = (int)uVar23;
iVar27 = (int)((ulonglong)uVar23 >> 0x20);
uVar19 = CONCAT44((uint)(byte)(uVar21 >> 0x38) - iVar27,(int)(uVar21 >> 0x18) - iVar26);
uVar16 = CONCAT44((uint)(byte)(uVar22 >> 0x38) - iVar27,(int)(uVar22 >> 0x18) - iVar26);
uVar19 = packssdw(uVar19,uVar19);
uVar16 = packssdw(uVar16,uVar16);
param_8[0x11] = CONCAT44((int)uVar19,(int)uVar16);
uVar19 = DAT_00833fc0;
uVar16 = DAT_00833fb8;
uVar24 = psubusb(uVar29,uVar1);
uVar23 = psubusb(uVar29,uVar18);
uVar2 = (ushort)(((uint7)(byte)((ulonglong)uVar24 >> 0x18) << 0x30) >> 0x28);
uVar9 = CONCAT21(uVar2,(char)((ulonglong)uVar24 >> 0x10));
uVar28 = (ushort)uVar24;
uVar7 = CONCAT43((int)(((uint7)uVar9 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar24 >> 8),uVar28));
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x18) << 0x30) >> 0x28);
uVar10 = CONCAT21(uVar3,(char)((ulonglong)uVar23 >> 0x10));
uVar15 = (ushort)uVar23;
uVar8 = CONCAT43((int)(((uint7)uVar10 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 8),uVar15));
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar24 >> 0x38) << 0x30) >> 0x28);
uVar11 = CONCAT21(uVar4,(char)((ulonglong)uVar24 >> 0x30));
uVar12 = CONCAT41((int)(((uint7)uVar11 << 0x20) >> 0x18),(char)((ulonglong)uVar24 >> 0x28));
uVar17 = (ushort)(byte)((ulonglong)uVar24 >> 0x20);
uVar5 = (ushort)(((uint7)(byte)((ulonglong)uVar23 >> 0x38) << 0x30) >> 0x28);
uVar13 = CONCAT21(uVar5,(char)((ulonglong)uVar23 >> 0x30));
uVar20 = (ushort)((ulonglong)uVar23 >> 0x20);
uVar6 = CONCAT43((int)(((uint7)uVar13 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar23 >> 0x28),uVar20));
uVar24 = CONCAT26((uVar2 >> 8) + (uVar4 >> 8),
CONCAT24((short)uVar9 + (short)uVar11,
CONCAT22((short)((uint7)uVar7 >> 0x10) + (short)uVar12,
(uVar28 & 0xff) + uVar17)));
uVar25 = CONCAT26((uVar3 >> 8) + (uVar5 >> 8),
CONCAT24((short)uVar10 + (short)uVar13,
CONCAT22((short)((uint7)uVar8 >> 0x10) +
(short)((uint7)uVar6 >> 0x10),
(uVar15 & 0xff) + (uVar20 & 0xff))));
uVar31 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar7 >> 0x10),uVar28) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar29 = pmaddwd((ulonglong)CONCAT52(uVar12,uVar17),DAT_00833fb0);
uVar23 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar8 >> 0x10),uVar15) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar30 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar6 >> 0x10),uVar20) & 0xffffffffffff00ff,
DAT_00833fb0);
iVar26 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar29 = CONCAT44(((int)uVar29 + (int)((ulonglong)uVar29 >> 0x20)) - iVar26 >> 8,
((int)uVar31 + (int)((ulonglong)uVar31 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar23 = CONCAT44(((int)uVar30 + (int)((ulonglong)uVar30 >> 0x20)) - iVar26 >> 8,
((int)uVar23 + (int)((ulonglong)uVar23 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar29 = packssdw(uVar29,uVar29);
uVar23 = packssdw(uVar23,uVar23);
param_5[0x11] = CONCAT44((int)uVar23,(int)uVar29);
uVar23 = pmaddwd(uVar24,uVar16);
uVar29 = pmaddwd(uVar25,uVar16);
uVar16 = pmaddwd(uVar24,uVar19);
uVar19 = pmaddwd(uVar25,uVar19);
iVar26 = (int)((ulonglong)DAT_00833ff0 >> 0x20);
uVar16 = CONCAT44((int)uVar16 + (int)((ulonglong)uVar16 >> 0x20) + iVar26 >> 9,
(int)uVar23 + (int)((ulonglong)uVar23 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar19 = CONCAT44((int)uVar19 + (int)((ulonglong)uVar19 >> 0x20) + iVar26 >> 9,
(int)uVar29 + (int)((ulonglong)uVar29 >> 0x20) + (int)DAT_00833ff0 >> 9);
uVar16 = packssdw(uVar16,uVar16);
param_5 = param_5 + 2;
uVar19 = packssdw(uVar19,uVar19);
param_6[3] = CONCAT22((short)uVar19,(short)uVar16);
param_8 = param_8 + 2;
param_3 = (ulonglong *)((int)param_3 + param_4);
param_7[3] = CONCAT22((short)((ulonglong)uVar19 >> 0x10),(short)((ulonglong)uVar16 >> 0x10));
iVar14 = iVar14 + -1;
param_6 = param_6 + 4;
param_7 = param_7 + 4;
} while (iVar14 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00656620 at 0x00656620 (size: 1562) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00656620(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6)
{
int iVar1;
int iVar2;
ushort uVar3;
bool bVar4;
ushort uVar5;
ushort uVar6;
ushort uVar7;
ushort uVar8;
ushort uVar9;
undefined7 uVar10;
ushort uVar11;
ushort uVar12;
undefined7 uVar13;
uint5 uVar14;
uint5 uVar15;
undefined7 uVar16;
undefined7 uVar17;
uint3 uVar18;
undefined5 uVar19;
uint3 uVar20;
undefined5 uVar21;
undefined6 uVar22;
undefined4 uVar23;
short sVar24;
uint3 uVar25;
uint3 uVar26;
uint3 uVar27;
uint3 uVar28;
undefined5 uVar29;
uint3 uVar30;
undefined5 uVar31;
uint3 uVar32;
undefined6 uVar33;
undefined4 uVar34;
undefined4 in_EAX;
int iVar35;
undefined8 *puVar36;
undefined8 *puVar37;
ushort uVar38;
ushort uVar39;
byte bVar43;
undefined8 uVar40;
ulonglong uVar41;
byte bVar44;
ulonglong uVar42;
undefined2 uVar45;
short sVar46;
ushort uVar47;
short sVar48;
ushort uVar49;
short sVar50;
undefined8 uVar51;
undefined8 uVar52;
ulonglong uVar53;
ulonglong uVar54;
ushort uVar55;
undefined8 uVar56;
ushort uVar57;
undefined8 uVar58;
byte bVar59;
undefined8 uVar60;
undefined8 uVar61;
undefined8 uVar62;
undefined8 local_24;
undefined8 local_1c;
undefined8 local_14;
undefined8 local_c;
iVar35 = 3;
bVar4 = true;
uVar60 = *param_3;
local_c = 0;
local_14 = 0;
local_1c = 0;
uVar42 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar60 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar60 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar60 >> 8)),(ushort)(byte)uVar60);
local_24 = 0;
uVar45 = (undefined2)((ulonglong)uVar60 >> 0x18);
uVar54 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar60
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar60 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x20),uVar45)) >> 0x10),
uVar45) & 0xffffffff00ff00ff;
uVar60 = DAT_00833fb0;
do {
do {
puVar37 = param_5;
puVar36 = param_6;
local_c = CONCAT26((short)(uVar42 >> 0x30) + (short)((ulonglong)local_c >> 0x30) +
(short)(uVar54 >> 0x30),
CONCAT24((short)(uVar42 >> 0x20) + (short)((ulonglong)local_c >> 0x20) +
(short)(uVar54 >> 0x20),
CONCAT22((short)(uVar42 >> 0x10) +
(short)((ulonglong)local_c >> 0x10) +
(short)(uVar54 >> 0x10),
(short)uVar42 + (short)local_c + (short)uVar54)));
uVar40 = pmaddwd(uVar42,uVar60);
uVar52 = param_3[1];
uVar51 = pmaddwd(uVar54,uVar60);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
bVar44 = (byte)((ulonglong)uVar52 >> 0x20);
uVar18 = CONCAT21((short)(((uint7)bVar44 << 0x30) >> 0x28),(char)((ulonglong)uVar52 >> 0x18));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar52 >> 0x10));
bVar43 = (byte)((ulonglong)uVar52 >> 8);
uVar51 = CONCAT44(((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - iVar1 >> 8,
((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = param_3[2];
uVar51 = packssdw(uVar51,uVar51);
uVar3 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar38 = (ushort)(((uint7)bVar43 << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar38,(char)uVar52);
uVar21 = CONCAT41((int)(((uint7)uVar20 << 0x20) >> 0x18),(char)((ulonglong)*param_3 >> 0x38));
uVar52 = param_3[1];
local_14 = CONCAT26((short)((ulonglong)local_14 >> 0x30) + (ushort)bVar44 + (uVar38 >> 8),
CONCAT24((short)((ulonglong)local_14 >> 0x20) + (short)uVar18 +
(short)uVar20,
CONCAT22((short)((ulonglong)local_14 >> 0x10) + (short)uVar19 +
(short)uVar21,
(short)local_14 + (ushort)bVar43 + (uVar3 & 0xff))));
uVar56 = pmaddwd((ulonglong)(CONCAT52(uVar21,uVar3) & 0xffffffffff00ff),uVar60);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar52 >> 0x38) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar52 >> 0x30));
uVar21 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar52 >> 0x28));
uVar38 = (ushort)(byte)((ulonglong)uVar52 >> 0x20);
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar19,(ushort)bVar43),uVar60);
sVar24 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar40 >> 0x10));
uVar23 = CONCAT31(CONCAT21(sVar24,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar40 >> 8));
uVar22 = CONCAT51(CONCAT41(uVar23,(char)((uint)DAT_00834040 >> 8)),(char)uVar40);
sVar46 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
local_1c = CONCAT26((short)((ulonglong)local_1c >> 0x30) + (uVar3 >> 8) + sVar24,
CONCAT24((short)((ulonglong)local_1c >> 0x20) + (short)uVar18 +
(short)uVar23,
CONCAT22((short)((ulonglong)local_1c >> 0x10) + (short)uVar21 +
(short)uVar22,(short)local_1c + uVar38 + sVar46)));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar1 >> 8,
((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar60 = packssdw(uVar60,uVar60);
uVar58 = pmaddwd((ulonglong)CONCAT52(uVar21,uVar38),DAT_00833fb0);
uVar52 = param_3[2];
uVar56 = pmaddwd(CONCAT62(uVar22,sVar46),DAT_00833fb0);
*puVar37 = CONCAT44((int)uVar60,(int)uVar51);
uVar60 = DAT_00833fb0;
uVar40 = param_3[2];
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar52 >> 0x28) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar52 >> 0x20));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar52 >> 0x18));
uVar47 = (ushort)(byte)((ulonglong)uVar52 >> 0x10);
uVar52 = CONCAT44(((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - iVar1 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar43 = (byte)((ulonglong)uVar40 >> 0x38);
uVar38 = (ushort)((ulonglong)uVar40 >> 0x28);
uVar14 = CONCAT23((short)(((uint5)bVar43 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar40 >> 0x30),uVar38));
uVar51 = pmaddwd((ulonglong)CONCAT52(uVar19,uVar47),DAT_00833fb0);
uVar56 = packssdw(uVar52,uVar52);
local_24 = CONCAT26((short)((ulonglong)local_24 >> 0x30) + (uVar3 >> 8),
CONCAT24((short)((ulonglong)local_24 >> 0x20) + (short)uVar18 +
(ushort)bVar43,
CONCAT22((short)((ulonglong)local_24 >> 0x10) + (short)uVar19 +
(short)(uVar14 >> 0x10),
(short)local_24 + uVar47 + (uVar38 & 0xff))));
uVar52 = *(undefined8 *)(param_4 + (int)param_3);
uVar40 = pmaddwd((ulonglong)CONCAT52(uVar14 >> 0x10,uVar38) & 0xffffffff00ff,DAT_00833fb0);
param_3 = (undefined8 *)((int)param_3 + param_4);
uVar40 = CONCAT44(((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - iVar1 >> 8,
((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = packssdw(uVar40,uVar40);
uVar42 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar52 >>
0x18) << 0x30) >> 0x28
),(char)((ulonglong)uVar52 >> 0x10))
<< 0x20) >> 0x18),(char)((ulonglong)uVar52 >> 8)),
(ushort)(byte)uVar52);
puVar37[1] = CONCAT44((int)uVar40,(int)uVar56);
uVar40 = DAT_00833fb0;
uVar45 = (undefined2)((ulonglong)uVar52 >> 0x18);
uVar54 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)
uVar52 >> 0x30
) << 0x30) >>
0x28),
(char)((ulonglong)uVar52 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar52 >> 0x20),uVar45)) >> 0x10)
,uVar45) & 0xffffffff00ff00ff;
param_5 = puVar37 + 2;
bVar4 = (bool)(bVar4 ^ 1);
param_6 = puVar36;
} while (!bVar4);
uVar60 = pmaddwd(local_c,DAT_00833fb8);
uVar52 = pmaddwd(local_c,DAT_00833fc0);
uVar56 = pmaddwd(local_14,DAT_00833fb8);
uVar61 = pmaddwd(local_1c,DAT_00833fb8);
uVar58 = pmaddwd(local_14,DAT_00833fc0);
iVar1 = (int)DAT_00833ff8;
iVar2 = (int)((ulonglong)DAT_00833ff8 >> 0x20);
uVar51 = pmaddwd(local_1c,DAT_00833fc0);
uVar41 = CONCAT44((int)uVar52 + (int)((ulonglong)uVar52 >> 0x20) + iVar2 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar1 >> 10) & _DAT_00834020
| (CONCAT44((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20) + iVar2 >> 10,
(int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar1 >> 10) &
_DAT_00834020) << 0x10;
uVar60 = pmaddwd(local_24,DAT_00833fb8);
uVar56 = pmaddwd(local_24,DAT_00833fc0);
local_c = 0;
local_14 = 0;
local_1c = 0;
local_24 = 0;
uVar52 = *param_3;
uVar53 = (CONCAT44((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar2 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar1 >> 10) & _DAT_00834020
) << 0x10 |
CONCAT44((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20) + iVar2 >> 10,
(int)uVar61 + (int)((ulonglong)uVar61 >> 0x20) + iVar1 >> 10) & _DAT_00834020;
uVar38 = (ushort)(((uint7)(byte)((ulonglong)uVar52 >> 0x18) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar38,(char)((ulonglong)uVar52 >> 0x10));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar52 >> 8));
uVar42 = (ulonglong)CONCAT52(uVar19,(ushort)(byte)uVar52);
*puVar36 = CONCAT44((int)uVar53,(int)uVar41);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar52 >> 0x30) << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar3,(char)((ulonglong)uVar52 >> 0x28));
uVar47 = (ushort)((ulonglong)uVar52 >> 0x18);
uVar10 = CONCAT43((int)(((uint7)uVar20 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar52 >> 0x20),uVar47));
uVar54 = (ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar47) & 0xffffffffffff00ff;
puVar36[0x10] = CONCAT44((int)(uVar53 >> 0x20),(int)(uVar41 >> 0x20));
iVar35 = iVar35 + -1;
param_6 = puVar36 + 2;
uVar60 = uVar40;
} while (iVar35 != 0);
uVar51 = pmaddwd(uVar42,uVar40);
uVar60 = param_3[1];
uVar56 = pmaddwd(uVar54,uVar40);
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar6 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x20) << 0x30) >> 0x28);
uVar25 = CONCAT21(uVar6,(char)((ulonglong)uVar60 >> 0x18));
uVar21 = CONCAT41((int)(((uint7)uVar25 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x10));
bVar44 = (byte)((ulonglong)uVar60 >> 8);
uVar56 = CONCAT44(((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - iVar35 >> 8,
((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar51 = param_3[2];
uVar56 = packssdw(uVar56,uVar56);
uVar5 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar7 = (ushort)(((uint7)bVar44 << 0x30) >> 0x28);
uVar26 = CONCAT21(uVar7,(char)uVar60);
uVar17 = CONCAT43((int)(((uint7)uVar26 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)*param_3 >> 0x38),uVar5));
uVar60 = param_3[1];
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar17 >> 0x10),uVar5) & 0xffffffffffff00ff,
uVar40);
uVar8 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x38) << 0x30) >> 0x28);
uVar27 = CONCAT21(uVar8,(char)((ulonglong)uVar60 >> 0x30));
uVar57 = (ushort)((ulonglong)uVar60 >> 0x20);
uVar16 = CONCAT43((int)(((uint7)uVar27 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x28),uVar57));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar21,(ushort)bVar44),uVar40);
sVar24 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar51 >> 0x10));
uVar23 = CONCAT31(CONCAT21(sVar24,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar51 >> 8));
uVar22 = CONCAT51(CONCAT41(uVar23,(char)((uint)DAT_00834040 >> 8)),(char)uVar51);
sVar48 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = packssdw(uVar60,uVar60);
uVar61 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar16 >> 0x10),uVar57) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar60 = param_3[2];
uVar58 = pmaddwd(CONCAT62(uVar22,sVar48),DAT_00833fb0);
*param_5 = CONCAT44((int)uVar40,(int)uVar56);
uVar51 = DAT_00833fb0;
uVar40 = param_3[2];
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar11 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x28) << 0x30) >> 0x28);
uVar28 = CONCAT21(uVar11,(char)((ulonglong)uVar60 >> 0x20));
uVar29 = CONCAT41((int)(((uint7)uVar28 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x18));
uVar55 = (ushort)(byte)((ulonglong)uVar60 >> 0x10);
uVar60 = CONCAT44(((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - iVar35 >> 8,
((int)uVar61 + (int)((ulonglong)uVar61 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar43 = (byte)((ulonglong)uVar40 >> 0x38);
uVar39 = (ushort)((ulonglong)uVar40 >> 0x28);
uVar14 = CONCAT23((short)(((uint5)bVar43 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar40 >> 0x30),uVar39));
uVar56 = pmaddwd((ulonglong)CONCAT52(uVar29,uVar55),DAT_00833fb0);
uVar58 = packssdw(uVar60,uVar60);
uVar60 = *(undefined8 *)(param_4 + (int)param_3);
uVar40 = pmaddwd((ulonglong)CONCAT52(uVar14 >> 0x10,uVar39) & 0xffffffff00ff,DAT_00833fb0);
param_3 = (undefined8 *)((int)param_3 + param_4);
uVar40 = CONCAT44(((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - iVar35 >> 8,
((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = packssdw(uVar40,uVar40);
uVar12 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x18) << 0x30) >> 0x28);
uVar30 = CONCAT21(uVar12,(char)((ulonglong)uVar60 >> 0x10));
uVar31 = CONCAT41((int)(((uint7)uVar30 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 8));
puVar37[3] = CONCAT44((int)uVar40,(int)uVar58);
uVar9 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x30) << 0x30) >> 0x28);
uVar32 = CONCAT21(uVar9,(char)((ulonglong)uVar60 >> 0x28));
uVar49 = (ushort)((ulonglong)uVar60 >> 0x18);
uVar13 = CONCAT43((int)(((uint7)uVar32 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x20),uVar49));
uVar61 = CONCAT26((uVar12 >> 8) + (uVar38 >> 8) + (uVar3 >> 8) + (uVar9 >> 8),
CONCAT24((short)uVar30 + (short)uVar18 + (short)uVar20 + (short)uVar32,
CONCAT22((short)uVar31 + (short)uVar19 + (short)((uint7)uVar10 >> 0x10)
+ (short)((uint7)uVar13 >> 0x10),
(ushort)(byte)uVar60 + (ushort)(byte)uVar52 + (uVar47 & 0xff)
+ (uVar49 & 0xff))));
uVar52 = pmaddwd((ulonglong)CONCAT52(uVar31,(ushort)(byte)uVar60),uVar51);
uVar60 = param_3[1];
uVar40 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar13 >> 0x10),uVar49) & 0xffffffffffff00ff,
uVar51);
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar38 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x20) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar38,(char)((ulonglong)uVar60 >> 0x18));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x10));
bVar59 = (byte)((ulonglong)uVar60 >> 8);
uVar40 = CONCAT44(((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - iVar35 >> 8,
((int)uVar52 + (int)((ulonglong)uVar52 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar52 = param_3[2];
uVar40 = packssdw(uVar40,uVar40);
uVar3 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar47 = (ushort)(((uint7)bVar59 << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar47,(char)uVar60);
uVar10 = CONCAT43((int)(((uint7)uVar20 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)*param_3 >> 0x38),uVar3));
uVar60 = param_3[1];
uVar56 = CONCAT26((uVar6 >> 8) + (uVar7 >> 8) + (uVar38 >> 8) + (uVar47 >> 8),
CONCAT24((short)uVar25 + (short)uVar26 + (short)uVar18 + (short)uVar20,
CONCAT22((short)uVar21 + (short)((uint7)uVar17 >> 0x10) + (short)uVar19
+ (short)((uint7)uVar10 >> 0x10),
(ushort)bVar44 + (uVar5 & 0xff) + (ushort)bVar59 +
(uVar3 & 0xff))));
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar3) & 0xffffffffffff00ff,
uVar51);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x38) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar60 >> 0x30));
uVar38 = (ushort)((ulonglong)uVar60 >> 0x20);
uVar10 = CONCAT43((int)(((uint7)uVar18 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x28),uVar38));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar19,(ushort)bVar59),uVar51);
sVar46 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar52 >> 0x10));
uVar34 = CONCAT31(CONCAT21(sVar46,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar52 >> 8));
uVar33 = CONCAT51(CONCAT41(uVar34,(char)((uint)DAT_00834040 >> 8)),(char)uVar52);
sVar50 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
uVar62 = CONCAT26((uVar8 >> 8) + sVar24 + (uVar3 >> 8) + sVar46,
CONCAT24((short)uVar27 + (short)uVar23 + (short)uVar18 + (short)uVar34,
CONCAT22((short)((uint7)uVar16 >> 0x10) + (short)uVar22 +
(short)((uint7)uVar10 >> 0x10) + (short)uVar33,
(uVar57 & 0xff) + sVar48 + (uVar38 & 0xff) + sVar50)));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar52 = packssdw(uVar60,uVar60);
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar38) & 0xffffffffffff00ff,
DAT_00833fb0);
uVar60 = param_3[2];
uVar51 = pmaddwd(CONCAT62(uVar33,sVar50),DAT_00833fb0);
puVar37[4] = CONCAT44((int)uVar52,(int)uVar40);
uVar52 = param_3[2];
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x28) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar60 >> 0x20));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x18));
uVar47 = (ushort)(byte)((ulonglong)uVar60 >> 0x10);
uVar60 = CONCAT44(((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar44 = (byte)((ulonglong)uVar52 >> 0x38);
uVar38 = (ushort)((ulonglong)uVar52 >> 0x28);
uVar15 = CONCAT23((short)(((uint5)bVar44 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar52 >> 0x30),uVar38));
uVar52 = pmaddwd((ulonglong)CONCAT52(uVar19,uVar47),DAT_00833fb0);
uVar40 = packssdw(uVar60,uVar60);
uVar58 = CONCAT26((uVar11 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar28 + (ushort)bVar43 + (short)uVar18 + (ushort)bVar44,
CONCAT22((short)uVar29 + (short)(uVar14 >> 0x10) + (short)uVar19 +
(short)(uVar15 >> 0x10),
uVar55 + (uVar39 & 0xff) + uVar47 + (uVar38 & 0xff))));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar15 >> 0x10,uVar38) & 0xffffffff00ff,DAT_00833fb0);
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar52 + (int)((ulonglong)uVar52 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar60 = packssdw(uVar60,uVar60);
puVar37[5] = CONCAT44((int)uVar60,(int)uVar40);
uVar60 = pmaddwd(uVar61,DAT_00833fb8);
uVar52 = pmaddwd(uVar61,DAT_00833fc0);
uVar51 = pmaddwd(uVar56,DAT_00833fb8);
uVar61 = pmaddwd(uVar62,DAT_00833fb8);
uVar56 = pmaddwd(uVar56,DAT_00833fc0);
iVar35 = (int)DAT_00833ff8;
iVar1 = (int)((ulonglong)DAT_00833ff8 >> 0x20);
uVar40 = pmaddwd(uVar62,DAT_00833fc0);
uVar42 = CONCAT44((int)uVar52 + (int)((ulonglong)uVar52 >> 0x20) + iVar1 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar35 >> 10) & _DAT_00834020 |
(CONCAT44((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar1 >> 10,
(int)uVar51 + (int)((ulonglong)uVar51 >> 0x20) + iVar35 >> 10) & _DAT_00834020)
<< 0x10;
uVar60 = pmaddwd(uVar58,DAT_00833fb8);
uVar52 = pmaddwd(uVar58,DAT_00833fc0);
uVar54 = (CONCAT44((int)uVar52 + (int)((ulonglong)uVar52 >> 0x20) + iVar1 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar35 >> 10) & _DAT_00834020)
<< 0x10 | CONCAT44((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20) + iVar1 >> 10,
(int)uVar61 + (int)((ulonglong)uVar61 >> 0x20) + iVar35 >> 10) &
_DAT_00834020;
puVar36[2] = CONCAT44((int)uVar54,(int)uVar42);
puVar36[0x12] = CONCAT44((int)(uVar54 >> 0x20),(int)(uVar42 >> 0x20));
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00656c40 at 0x00656C40 (size: 1561) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00656c40(undefined4 param_1,undefined4 param_2,undefined8 *param_3,int param_4,
undefined8 *param_5,undefined8 *param_6)
{
int iVar1;
int iVar2;
ushort uVar3;
bool bVar4;
ushort uVar5;
ushort uVar6;
ushort uVar7;
ushort uVar8;
ushort uVar9;
undefined7 uVar10;
ushort uVar11;
ushort uVar12;
undefined7 uVar13;
uint5 uVar14;
uint5 uVar15;
undefined7 uVar16;
undefined7 uVar17;
uint3 uVar18;
undefined5 uVar19;
uint3 uVar20;
undefined5 uVar21;
undefined6 uVar22;
undefined4 uVar23;
short sVar24;
uint3 uVar25;
uint3 uVar26;
uint3 uVar27;
uint3 uVar28;
undefined5 uVar29;
uint3 uVar30;
undefined5 uVar31;
uint3 uVar32;
undefined6 uVar33;
undefined4 uVar34;
undefined4 in_EAX;
int iVar35;
undefined8 *puVar36;
undefined8 *puVar37;
ushort uVar38;
ushort uVar39;
byte bVar43;
undefined8 uVar40;
ulonglong uVar41;
byte bVar44;
ulonglong uVar42;
undefined2 uVar45;
short sVar46;
ushort uVar47;
short sVar48;
ushort uVar49;
short sVar50;
undefined8 uVar51;
ulonglong uVar52;
ulonglong uVar53;
ushort uVar54;
undefined8 uVar55;
undefined8 uVar56;
ushort uVar57;
undefined8 uVar58;
byte bVar59;
undefined8 uVar60;
undefined8 uVar61;
undefined8 uVar62;
undefined8 local_24;
undefined8 local_1c;
undefined8 local_14;
undefined8 local_c;
iVar35 = 3;
bVar4 = true;
uVar60 = *param_3;
local_c = 0;
local_14 = 0;
local_1c = 0;
uVar42 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar60 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar60 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar60 >> 8)),(ushort)(byte)uVar60);
local_24 = 0;
uVar45 = (undefined2)((ulonglong)uVar60 >> 0x18);
uVar53 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar60
>> 0x30) << 0x30)
>> 0x28),
(char)((ulonglong)uVar60 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x20),uVar45)) >> 0x10),
uVar45) & 0xffffffff00ff00ff;
uVar60 = DAT_00833fc8;
do {
while( true ) {
puVar37 = param_5;
puVar36 = param_6;
local_c = CONCAT26((short)(uVar42 >> 0x30) + (short)((ulonglong)local_c >> 0x30) +
(short)(uVar53 >> 0x30),
CONCAT24((short)(uVar42 >> 0x20) + (short)((ulonglong)local_c >> 0x20) +
(short)(uVar53 >> 0x20),
CONCAT22((short)(uVar42 >> 0x10) +
(short)((ulonglong)local_c >> 0x10) +
(short)(uVar53 >> 0x10),
(short)uVar42 + (short)local_c + (short)uVar53)));
uVar40 = pmaddwd(uVar42,uVar60);
uVar56 = param_3[1];
uVar51 = pmaddwd(uVar53,uVar60);
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
bVar44 = (byte)((ulonglong)uVar56 >> 0x20);
uVar18 = CONCAT21((short)(((uint7)bVar44 << 0x30) >> 0x28),(char)((ulonglong)uVar56 >> 0x18));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar56 >> 0x10));
bVar43 = (byte)((ulonglong)uVar56 >> 8);
uVar51 = CONCAT44(((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - iVar1 >> 8,
((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = param_3[2];
uVar51 = packssdw(uVar51,uVar51);
uVar3 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar38 = (ushort)(((uint7)bVar43 << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar38,(char)uVar56);
uVar21 = CONCAT41((int)(((uint7)uVar20 << 0x20) >> 0x18),(char)((ulonglong)*param_3 >> 0x38));
uVar56 = param_3[1];
local_14 = CONCAT26((short)((ulonglong)local_14 >> 0x30) + (ushort)bVar44 + (uVar38 >> 8),
CONCAT24((short)((ulonglong)local_14 >> 0x20) + (short)uVar18 +
(short)uVar20,
CONCAT22((short)((ulonglong)local_14 >> 0x10) + (short)uVar19 +
(short)uVar21,
(short)local_14 + (ushort)bVar43 + (uVar3 & 0xff))));
uVar55 = pmaddwd((ulonglong)(CONCAT52(uVar21,uVar3) & 0xffffffffff00ff),uVar60);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar56 >> 0x38) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar56 >> 0x30));
uVar21 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar56 >> 0x28));
uVar38 = (ushort)(byte)((ulonglong)uVar56 >> 0x20);
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar19,(ushort)bVar43),uVar60);
sVar24 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar40 >> 0x10));
uVar23 = CONCAT31(CONCAT21(sVar24,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar40 >> 8));
uVar22 = CONCAT51(CONCAT41(uVar23,(char)((uint)DAT_00834040 >> 8)),(char)uVar40);
sVar46 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
local_1c = CONCAT26((short)((ulonglong)local_1c >> 0x30) + (uVar3 >> 8) + sVar24,
CONCAT24((short)((ulonglong)local_1c >> 0x20) + (short)uVar18 +
(short)uVar23,
CONCAT22((short)((ulonglong)local_1c >> 0x10) + (short)uVar21 +
(short)uVar22,(short)local_1c + uVar38 + sVar46)));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar1 >> 8,
((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar56 = packssdw(uVar60,uVar60);
uVar58 = pmaddwd((ulonglong)CONCAT52(uVar21,uVar38),DAT_00833fc8);
uVar60 = param_3[2];
uVar55 = pmaddwd(CONCAT62(uVar22,sVar46),DAT_00833fc8);
*puVar37 = CONCAT44((int)uVar56,(int)uVar51);
uVar40 = DAT_00833fc8;
uVar56 = param_3[2];
iVar1 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x28) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar60 >> 0x20));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x18));
uVar47 = (ushort)(byte)((ulonglong)uVar60 >> 0x10);
uVar60 = CONCAT44(((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20)) - iVar1 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar43 = (byte)((ulonglong)uVar56 >> 0x38);
uVar38 = (ushort)((ulonglong)uVar56 >> 0x28);
uVar14 = CONCAT23((short)(((uint5)bVar43 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar56 >> 0x30),uVar38));
uVar51 = pmaddwd((ulonglong)CONCAT52(uVar19,uVar47),DAT_00833fc8);
uVar55 = packssdw(uVar60,uVar60);
local_24 = CONCAT26((short)((ulonglong)local_24 >> 0x30) + (uVar3 >> 8),
CONCAT24((short)((ulonglong)local_24 >> 0x20) + (short)uVar18 +
(ushort)bVar43,
CONCAT22((short)((ulonglong)local_24 >> 0x10) + (short)uVar19 +
(short)(uVar14 >> 0x10),
(short)local_24 + uVar47 + (uVar38 & 0xff))));
uVar56 = *(undefined8 *)(param_4 + (int)param_3);
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar14 >> 0x10,uVar38) & 0xffffffff00ff,DAT_00833fc8);
param_3 = (undefined8 *)((int)param_3 + param_4);
param_5 = puVar37 + 2;
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar1 >> 8,
((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar4 = (bool)(bVar4 ^ 1);
uVar60 = packssdw(uVar60,uVar60);
uVar42 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar56 >>
0x18) << 0x30) >> 0x28
),(char)((ulonglong)uVar56 >> 0x10))
<< 0x20) >> 0x18),(char)((ulonglong)uVar56 >> 8)),
(ushort)(byte)uVar56);
puVar37[1] = CONCAT44((int)uVar60,(int)uVar55);
uVar60 = DAT_00833fc8;
if (bVar4) break;
uVar45 = (undefined2)((ulonglong)uVar56 >> 0x18);
uVar53 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)
uVar56 >> 0x30
) << 0x30) >>
0x28),
(char)((ulonglong)uVar56 >> 0x28)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar56 >> 0x20),uVar45)) >> 0x10)
,uVar45) & 0xffffffff00ff00ff;
param_6 = puVar36;
uVar60 = uVar40;
}
uVar56 = pmaddwd(local_c,DAT_00833fd0);
uVar40 = pmaddwd(local_c,DAT_00833fd8);
uVar55 = pmaddwd(local_14,DAT_00833fd0);
uVar61 = pmaddwd(local_1c,DAT_00833fd0);
uVar58 = pmaddwd(local_14,DAT_00833fd8);
iVar1 = (int)DAT_00833ff8;
iVar2 = (int)((ulonglong)DAT_00833ff8 >> 0x20);
uVar51 = pmaddwd(local_1c,DAT_00833fd8);
uVar41 = CONCAT44((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20) + iVar2 >> 10,
(int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar1 >> 10) & _DAT_00834020
| (CONCAT44((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20) + iVar2 >> 10,
(int)uVar55 + (int)((ulonglong)uVar55 >> 0x20) + iVar1 >> 10) &
_DAT_00834020) << 0x10;
uVar40 = pmaddwd(local_24,DAT_00833fd0);
uVar55 = pmaddwd(local_24,DAT_00833fd8);
local_c = 0;
local_14 = 0;
local_1c = 0;
local_24 = 0;
uVar56 = *param_3;
uVar52 = (CONCAT44((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20) + iVar2 >> 10,
(int)uVar40 + (int)((ulonglong)uVar40 >> 0x20) + iVar1 >> 10) & _DAT_00834020
) << 0x10 |
CONCAT44((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20) + iVar2 >> 10,
(int)uVar61 + (int)((ulonglong)uVar61 >> 0x20) + iVar1 >> 10) & _DAT_00834020;
uVar38 = (ushort)(((uint7)(byte)((ulonglong)uVar56 >> 0x18) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar38,(char)((ulonglong)uVar56 >> 0x10));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar56 >> 8));
uVar42 = (ulonglong)CONCAT52(uVar19,(ushort)(byte)uVar56);
*puVar36 = CONCAT44((int)uVar52,(int)uVar41);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar56 >> 0x30) << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar3,(char)((ulonglong)uVar56 >> 0x28));
uVar47 = (ushort)((ulonglong)uVar56 >> 0x18);
uVar10 = CONCAT43((int)(((uint7)uVar20 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar56 >> 0x20),uVar47));
uVar53 = (ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar47) & 0xffffffffffff00ff;
puVar36[0x10] = CONCAT44((int)(uVar52 >> 0x20),(int)(uVar41 >> 0x20));
iVar35 = iVar35 + -1;
param_6 = puVar36 + 2;
} while (iVar35 != 0);
uVar51 = pmaddwd(uVar42,uVar60);
uVar40 = param_3[1];
uVar55 = pmaddwd(uVar53,uVar60);
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar6 = (ushort)(((uint7)(byte)((ulonglong)uVar40 >> 0x20) << 0x30) >> 0x28);
uVar25 = CONCAT21(uVar6,(char)((ulonglong)uVar40 >> 0x18));
uVar21 = CONCAT41((int)(((uint7)uVar25 << 0x20) >> 0x18),(char)((ulonglong)uVar40 >> 0x10));
bVar44 = (byte)((ulonglong)uVar40 >> 8);
uVar55 = CONCAT44(((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20)) - iVar35 >> 8,
((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar51 = param_3[2];
uVar55 = packssdw(uVar55,uVar55);
uVar5 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar7 = (ushort)(((uint7)bVar44 << 0x30) >> 0x28);
uVar26 = CONCAT21(uVar7,(char)uVar40);
uVar17 = CONCAT43((int)(((uint7)uVar26 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)*param_3 >> 0x38),uVar5));
uVar40 = param_3[1];
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar17 >> 0x10),uVar5) & 0xffffffffffff00ff,
uVar60);
uVar8 = (ushort)(((uint7)(byte)((ulonglong)uVar40 >> 0x38) << 0x30) >> 0x28);
uVar27 = CONCAT21(uVar8,(char)((ulonglong)uVar40 >> 0x30));
uVar57 = (ushort)((ulonglong)uVar40 >> 0x20);
uVar16 = CONCAT43((int)(((uint7)uVar27 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar40 >> 0x28),uVar57));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar21,(ushort)bVar44),uVar60);
sVar24 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar51 >> 0x10));
uVar23 = CONCAT31(CONCAT21(sVar24,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar51 >> 8));
uVar22 = CONCAT51(CONCAT41(uVar23,(char)((uint)DAT_00834040 >> 8)),(char)uVar51);
sVar48 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = packssdw(uVar60,uVar60);
uVar61 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar16 >> 0x10),uVar57) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar60 = param_3[2];
uVar58 = pmaddwd(CONCAT62(uVar22,sVar48),DAT_00833fc8);
*param_5 = CONCAT44((int)uVar40,(int)uVar55);
uVar51 = DAT_00833fc8;
uVar40 = param_3[2];
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar11 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x28) << 0x30) >> 0x28);
uVar28 = CONCAT21(uVar11,(char)((ulonglong)uVar60 >> 0x20));
uVar29 = CONCAT41((int)(((uint7)uVar28 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x18));
uVar54 = (ushort)(byte)((ulonglong)uVar60 >> 0x10);
uVar60 = CONCAT44(((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - iVar35 >> 8,
((int)uVar61 + (int)((ulonglong)uVar61 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar43 = (byte)((ulonglong)uVar40 >> 0x38);
uVar39 = (ushort)((ulonglong)uVar40 >> 0x28);
uVar14 = CONCAT23((short)(((uint5)bVar43 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar40 >> 0x30),uVar39));
uVar55 = pmaddwd((ulonglong)CONCAT52(uVar29,uVar54),DAT_00833fc8);
uVar58 = packssdw(uVar60,uVar60);
uVar60 = *(undefined8 *)(param_4 + (int)param_3);
uVar40 = pmaddwd((ulonglong)CONCAT52(uVar14 >> 0x10,uVar39) & 0xffffffff00ff,DAT_00833fc8);
param_3 = (undefined8 *)((int)param_3 + param_4);
uVar40 = CONCAT44(((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - iVar35 >> 8,
((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar40 = packssdw(uVar40,uVar40);
uVar12 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x18) << 0x30) >> 0x28);
uVar30 = CONCAT21(uVar12,(char)((ulonglong)uVar60 >> 0x10));
uVar31 = CONCAT41((int)(((uint7)uVar30 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 8));
puVar37[3] = CONCAT44((int)uVar40,(int)uVar58);
uVar9 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x30) << 0x30) >> 0x28);
uVar32 = CONCAT21(uVar9,(char)((ulonglong)uVar60 >> 0x28));
uVar49 = (ushort)((ulonglong)uVar60 >> 0x18);
uVar13 = CONCAT43((int)(((uint7)uVar32 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x20),uVar49));
uVar61 = CONCAT26((uVar12 >> 8) + (uVar38 >> 8) + (uVar3 >> 8) + (uVar9 >> 8),
CONCAT24((short)uVar30 + (short)uVar18 + (short)uVar20 + (short)uVar32,
CONCAT22((short)uVar31 + (short)uVar19 + (short)((uint7)uVar10 >> 0x10)
+ (short)((uint7)uVar13 >> 0x10),
(ushort)(byte)uVar60 + (ushort)(byte)uVar56 + (uVar47 & 0xff)
+ (uVar49 & 0xff))));
uVar56 = pmaddwd((ulonglong)CONCAT52(uVar31,(ushort)(byte)uVar60),uVar51);
uVar60 = param_3[1];
uVar40 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar13 >> 0x10),uVar49) & 0xffffffffffff00ff,
uVar51);
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar38 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x20) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar38,(char)((ulonglong)uVar60 >> 0x18));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x10));
bVar59 = (byte)((ulonglong)uVar60 >> 8);
uVar40 = CONCAT44(((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20)) - iVar35 >> 8,
((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar56 = param_3[2];
uVar40 = packssdw(uVar40,uVar40);
uVar3 = (ushort)((ulonglong)*param_3 >> 0x30);
uVar47 = (ushort)(((uint7)bVar59 << 0x30) >> 0x28);
uVar20 = CONCAT21(uVar47,(char)uVar60);
uVar10 = CONCAT43((int)(((uint7)uVar20 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)*param_3 >> 0x38),uVar3));
uVar60 = param_3[1];
uVar55 = CONCAT26((uVar6 >> 8) + (uVar7 >> 8) + (uVar38 >> 8) + (uVar47 >> 8),
CONCAT24((short)uVar25 + (short)uVar26 + (short)uVar18 + (short)uVar20,
CONCAT22((short)uVar21 + (short)((uint7)uVar17 >> 0x10) + (short)uVar19
+ (short)((uint7)uVar10 >> 0x10),
(ushort)bVar44 + (uVar5 & 0xff) + (ushort)bVar59 +
(uVar3 & 0xff))));
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar3) & 0xffffffffffff00ff,
uVar51);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x38) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar60 >> 0x30));
uVar38 = (ushort)((ulonglong)uVar60 >> 0x20);
uVar10 = CONCAT43((int)(((uint7)uVar18 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar60 >> 0x28),uVar38));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar19,(ushort)bVar59),uVar51);
sVar46 = CONCAT11((char)((uint)DAT_00834040 >> 0x18),(char)((ulonglong)uVar56 >> 0x10));
uVar34 = CONCAT31(CONCAT21(sVar46,(char)((uint)DAT_00834040 >> 0x10)),
(char)((ulonglong)uVar56 >> 8));
uVar33 = CONCAT51(CONCAT41(uVar34,(char)((uint)DAT_00834040 >> 8)),(char)uVar56);
sVar50 = CONCAT11((char)DAT_00834040,(char)((ulonglong)param_3[1] >> 0x38));
uVar62 = CONCAT26((uVar8 >> 8) + sVar24 + (uVar3 >> 8) + sVar46,
CONCAT24((short)uVar27 + (short)uVar23 + (short)uVar18 + (short)uVar34,
CONCAT22((short)((uint7)uVar16 >> 0x10) + (short)uVar22 +
(short)((uint7)uVar10 >> 0x10) + (short)uVar33,
(uVar57 & 0xff) + sVar48 + (uVar38 & 0xff) + sVar50)));
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar56 = packssdw(uVar60,uVar60);
uVar58 = pmaddwd((ulonglong)CONCAT52((int5)((uint7)uVar10 >> 0x10),uVar38) & 0xffffffffffff00ff,
DAT_00833fc8);
uVar60 = param_3[2];
uVar51 = pmaddwd(CONCAT62(uVar33,sVar50),DAT_00833fc8);
puVar37[4] = CONCAT44((int)uVar56,(int)uVar40);
uVar56 = param_3[2];
iVar35 = (int)((ulonglong)DAT_00833fe0 >> 0x20);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar60 >> 0x28) << 0x30) >> 0x28);
uVar18 = CONCAT21(uVar3,(char)((ulonglong)uVar60 >> 0x20));
uVar19 = CONCAT41((int)(((uint7)uVar18 << 0x20) >> 0x18),(char)((ulonglong)uVar60 >> 0x18));
uVar47 = (ushort)(byte)((ulonglong)uVar60 >> 0x10);
uVar60 = CONCAT44(((int)uVar51 + (int)((ulonglong)uVar51 >> 0x20)) - iVar35 >> 8,
((int)uVar58 + (int)((ulonglong)uVar58 >> 0x20)) - (int)DAT_00833fe0 >> 8);
bVar44 = (byte)((ulonglong)uVar56 >> 0x38);
uVar38 = (ushort)((ulonglong)uVar56 >> 0x28);
uVar15 = CONCAT23((short)(((uint5)bVar44 << 0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar56 >> 0x30),uVar38));
uVar56 = pmaddwd((ulonglong)CONCAT52(uVar19,uVar47),DAT_00833fc8);
uVar40 = packssdw(uVar60,uVar60);
uVar58 = CONCAT26((uVar11 >> 8) + (uVar3 >> 8),
CONCAT24((short)uVar28 + (ushort)bVar43 + (short)uVar18 + (ushort)bVar44,
CONCAT22((short)uVar29 + (short)(uVar14 >> 0x10) + (short)uVar19 +
(short)(uVar15 >> 0x10),
uVar54 + (uVar39 & 0xff) + uVar47 + (uVar38 & 0xff))));
uVar60 = pmaddwd((ulonglong)CONCAT52(uVar15 >> 0x10,uVar38) & 0xffffffff00ff,DAT_00833fc8);
uVar60 = CONCAT44(((int)uVar60 + (int)((ulonglong)uVar60 >> 0x20)) - iVar35 >> 8,
((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20)) - (int)DAT_00833fe0 >> 8);
uVar60 = packssdw(uVar60,uVar60);
puVar37[5] = CONCAT44((int)uVar60,(int)uVar40);
uVar60 = pmaddwd(uVar61,DAT_00833fd0);
uVar56 = pmaddwd(uVar61,DAT_00833fd8);
uVar51 = pmaddwd(uVar55,DAT_00833fd0);
uVar61 = pmaddwd(uVar62,DAT_00833fd0);
uVar55 = pmaddwd(uVar55,DAT_00833fd8);
iVar35 = (int)DAT_00833ff8;
iVar1 = (int)((ulonglong)DAT_00833ff8 >> 0x20);
uVar40 = pmaddwd(uVar62,DAT_00833fd8);
uVar42 = CONCAT44((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar1 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar35 >> 10) & _DAT_00834020 |
(CONCAT44((int)uVar55 + (int)((ulonglong)uVar55 >> 0x20) + iVar1 >> 10,
(int)uVar51 + (int)((ulonglong)uVar51 >> 0x20) + iVar35 >> 10) & _DAT_00834020)
<< 0x10;
uVar60 = pmaddwd(uVar58,DAT_00833fd0);
uVar56 = pmaddwd(uVar58,DAT_00833fd8);
uVar53 = (CONCAT44((int)uVar56 + (int)((ulonglong)uVar56 >> 0x20) + iVar1 >> 10,
(int)uVar60 + (int)((ulonglong)uVar60 >> 0x20) + iVar35 >> 10) & _DAT_00834020)
<< 0x10 | CONCAT44((int)uVar40 + (int)((ulonglong)uVar40 >> 0x20) + iVar1 >> 10,
(int)uVar61 + (int)((ulonglong)uVar61 >> 0x20) + iVar35 >> 10) &
_DAT_00834020;
puVar36[2] = CONCAT44((int)uVar53,(int)uVar42);
puVar36[0x12] = CONCAT44((int)(uVar53 >> 0x20),(int)(uVar42 >> 0x20));
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00657260 at 0x00657260 (size: 975) ---
undefined8 __fastcall
FUN_00657260(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined8 *param_5,
undefined8 *param_6,undefined4 param_7,undefined8 *param_8)
{
int iVar1;
undefined4 in_EAX;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
undefined8 uVar7;
ulonglong uVar8;
undefined8 uVar9;
ulonglong uVar10;
undefined8 uVar11;
undefined8 uVar12;
undefined8 local_120;
undefined8 local_118;
undefined8 local_110;
undefined8 local_108;
undefined8 local_100;
undefined8 local_f8;
undefined8 local_f0;
undefined8 local_e8;
int local_e0 [16];
int local_a0 [16];
undefined8 local_60;
undefined8 local_58;
undefined8 local_50;
undefined8 local_48;
undefined8 local_40;
undefined8 local_38;
undefined8 local_30;
undefined8 local_28;
iVar4 = 0;
iVar2 = 8;
iVar3 = 0;
iVar5 = 4;
while( true ) {
while( true ) {
uVar11 = DAT_00834068;
uVar8 = *(ulonglong *)(iVar4 + param_3) & DAT_00834050;
iVar6 = (int)((ulonglong)DAT_00834060 >> 0x20);
uVar9 = CONCAT44((uint)(byte)(uVar8 >> 0x38) - iVar6,(int)(uVar8 >> 0x18) - (int)DAT_00834060)
;
uVar9 = packssdw(uVar9,uVar9);
uVar12 = psubusb(DAT_00834048,*(ulonglong *)(iVar4 + param_3));
*(int *)((int)&local_60 + iVar3) = (int)uVar9;
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar12 >>
0x18) << 0x30) >> 0x28)
,(char)((ulonglong)uVar12 >> 0x10)) << 0x20)
>> 0x18),(char)((ulonglong)uVar12 >> 8)),(ushort)(byte)uVar12);
uVar7 = pmaddwd(DAT_00834070,uVar8);
uVar10 = (ulonglong)
CONCAT16((char)((ulonglong)uVar12 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar12 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar12 >> 0x28),
(ushort)(byte)((ulonglong)uVar12 >> 0x20))));
uVar9 = pmaddwd(DAT_00834070,uVar10);
iVar1 = (int)((ulonglong)DAT_00834058 >> 0x20);
uVar9 = CONCAT44(((int)((ulonglong)uVar9 >> 0x20) + (int)uVar9) - iVar1 >> 8,
((int)((ulonglong)uVar7 >> 0x20) + (int)uVar7) - (int)DAT_00834058 >> 8);
uVar9 = packssdw(uVar9,uVar9);
*(int *)((int)&local_120 + iVar3) = (int)uVar9;
uVar7 = pmaddwd(DAT_00834078,uVar8);
uVar9 = pmaddwd(DAT_00834078,uVar10);
*(int *)((int)local_e0 + iVar3) =
(int)((ulonglong)uVar7 >> 0x20) + (int)uVar7 +
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9;
uVar7 = pmaddwd(DAT_00834080,uVar8);
uVar9 = pmaddwd(DAT_00834080,uVar10);
*(int *)((int)local_a0 + iVar3) =
(int)((ulonglong)uVar7 >> 0x20) + (int)uVar7 +
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9;
iVar2 = iVar2 + -1;
if (iVar2 == 0) break;
iVar4 = iVar4 + 8;
iVar3 = iVar3 + 4;
}
iVar4 = 0;
iVar2 = 8;
while( true ) {
uVar8 = *(ulonglong *)(iVar4 + param_3 + param_4);
uVar10 = uVar8 & DAT_00834050;
uVar9 = CONCAT44((uint)(byte)(uVar10 >> 0x38) - iVar6,
(int)(uVar10 >> 0x18) - (int)DAT_00834060);
uVar9 = packssdw(uVar9,uVar9);
uVar12 = psubusb(DAT_00834048,uVar8);
*(int *)((int)&local_60 + iVar3 + 4) = (int)uVar9;
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar12 >>
0x18) << 0x30) >> 0x28)
,(char)((ulonglong)uVar12 >> 0x10)) << 0x20)
>> 0x18),(char)((ulonglong)uVar12 >> 8)),(ushort)(byte)uVar12);
uVar7 = pmaddwd(DAT_00834070,uVar8);
uVar10 = (ulonglong)
CONCAT16((char)((ulonglong)uVar12 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar12 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar12 >> 0x28),
(ushort)(byte)((ulonglong)uVar12 >> 0x20))));
uVar9 = pmaddwd(DAT_00834070,uVar10);
uVar9 = CONCAT44(((int)((ulonglong)uVar9 >> 0x20) + (int)uVar9) - iVar1 >> 8,
((int)((ulonglong)uVar7 >> 0x20) + (int)uVar7) - (int)DAT_00834058 >> 8);
uVar9 = packssdw(uVar9,uVar9);
*(int *)((int)&local_120 + iVar3 + 4) = (int)uVar9;
uVar7 = pmaddwd(DAT_00834078,uVar8);
uVar9 = pmaddwd(DAT_00834078,uVar10);
*(int *)((int)local_e0 + iVar3 + 4) =
(int)((ulonglong)uVar7 >> 0x20) + (int)uVar7 +
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9;
uVar7 = pmaddwd(DAT_00834080,uVar8);
uVar9 = pmaddwd(DAT_00834080,uVar10);
*(int *)((int)local_a0 + iVar3 + 4) =
(int)((ulonglong)uVar7 >> 0x20) + (int)uVar7 +
(int)((ulonglong)uVar9 >> 0x20) + (int)uVar9;
iVar2 = iVar2 + -1;
if (iVar2 == 0) break;
iVar4 = iVar4 + 8;
iVar3 = iVar3 + 4;
}
*param_5 = local_120;
param_5[1] = local_118;
param_5[0x10] = local_110;
param_5[0x11] = local_108;
param_5[2] = local_100;
param_5[3] = local_f8;
param_5[0x12] = local_f0;
param_5[0x13] = local_e8;
iVar3 = (int)uVar11;
iVar2 = (int)((ulonglong)uVar11 >> 0x20);
uVar11 = packssdw(CONCAT44(SUB84(local_e0._32_8_,4) + SUB84(local_e0._0_8_,4) + iVar2 >> 10,
(int)local_e0._32_8_ + (int)local_e0._0_8_ + iVar3 >> 10),
CONCAT44(SUB84(local_e0._8_8_,4) + SUB84(local_e0._40_8_,4) + iVar2 >> 10,
(int)local_e0._8_8_ + (int)local_e0._40_8_ + iVar3 >> 10));
*param_6 = uVar11;
uVar11 = packssdw(CONCAT44(SUB84(local_e0._48_8_,4) + SUB84(local_e0._16_8_,4) + iVar2 >> 10,
(int)local_e0._48_8_ + (int)local_e0._16_8_ + iVar3 >> 10),
CONCAT44(SUB84(local_e0._24_8_,4) + SUB84(local_e0._56_8_,4) + iVar2 >> 10,
(int)local_e0._24_8_ + (int)local_e0._56_8_ + iVar3 >> 10));
param_6[1] = uVar11;
uVar11 = packssdw(CONCAT44(SUB84(local_a0._32_8_,4) + SUB84(local_a0._0_8_,4) + iVar2 >> 10,
(int)local_a0._32_8_ + (int)local_a0._0_8_ + iVar3 >> 10),
CONCAT44(SUB84(local_a0._8_8_,4) + SUB84(local_a0._40_8_,4) + iVar2 >> 10,
(int)local_a0._8_8_ + (int)local_a0._40_8_ + iVar3 >> 10));
param_6[0x10] = uVar11;
uVar11 = packssdw(CONCAT44(SUB84(local_a0._48_8_,4) + SUB84(local_a0._16_8_,4) + iVar2 >> 10,
(int)local_a0._48_8_ + (int)local_a0._16_8_ + iVar3 >> 10),
CONCAT44(SUB84(local_a0._24_8_,4) + SUB84(local_a0._56_8_,4) + iVar2 >> 10,
(int)local_a0._24_8_ + (int)local_a0._56_8_ + iVar3 >> 10));
param_6[0x11] = uVar11;
*param_8 = local_60;
param_8[1] = local_58;
param_8[0x10] = local_50;
param_8[0x11] = local_48;
param_8[2] = local_40;
param_8[3] = local_38;
param_8[0x12] = local_30;
param_8[0x13] = local_28;
iVar5 = iVar5 + -1;
if (iVar5 == 0) break;
iVar4 = 0;
iVar3 = 0;
iVar2 = 8;
param_3 = param_3 + param_4 + param_4;
param_5 = param_5 + 4;
param_6 = param_6 + 2;
param_8 = param_8 + 4;
}
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00657630 at 0x00657630 (size: 323) ---
undefined4
FUN_00657630(undefined8 *param_1,int param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5)
{
undefined8 uVar1;
undefined8 uVar2;
ushort uVar3;
undefined8 uVar4;
undefined4 in_EAX;
int iVar5;
ulonglong uVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
uVar4 = DAT_00834000;
iVar5 = 8;
do {
uVar1 = *param_1;
uVar2 = param_1[1];
uVar6 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar2
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar2 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar2 >> 8),(short)uVar2)) >> 0x10),
(short)uVar2) & 0xffff00ff00ff00ff;
sVar7 = (short)uVar4;
sVar8 = (short)((ulonglong)uVar4 >> 0x10);
sVar9 = (short)((ulonglong)uVar4 >> 0x20);
sVar10 = (short)((ulonglong)uVar4 >> 0x30);
*param_3 = CONCAT26((ushort)(byte)((ulonglong)uVar1 >> 0x30) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar1 >> 0x20) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x10) - sVar8,
(ushort)(byte)uVar1 - sVar7)));
param_3[1] = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x30) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar2 >> 0x20) - sVar9,
CONCAT22((short)(uVar6 >> 0x20) - sVar8,(short)uVar6 - sVar7)));
*param_4 = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x28) - sVar10,
CONCAT24((short)(uVar6 >> 0x10) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x28) - sVar8,
(ushort)(byte)((ulonglong)uVar1 >> 8) - sVar7)));
*param_5 = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x38) - sVar10,
CONCAT24((short)(uVar6 >> 0x30) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x38) - sVar8,
(ushort)(byte)((ulonglong)uVar1 >> 0x18) - sVar7)));
uVar1 = param_1[2];
uVar2 = param_1[3];
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar1 >> 0x18) << 0x30) >> 0x28);
uVar6 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar2
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar2 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar2 >> 8),(short)uVar2)) >> 0x10),
(short)uVar2) & 0xffff00ff00ff00ff;
param_3[0x10] =
CONCAT26((ushort)(byte)((ulonglong)uVar1 >> 0x30) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar1 >> 0x20) - sVar9,
CONCAT22((short)CONCAT21(uVar3,(char)((ulonglong)uVar1 >> 0x10)) - sVar8,
(ushort)(byte)uVar1 - sVar7)));
param_3[0x11] =
CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x30) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar2 >> 0x20) - sVar9,
CONCAT22((short)(uVar6 >> 0x20) - sVar8,(short)uVar6 - sVar7)));
param_4[1] = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x28) - sVar10,
CONCAT24((short)(uVar6 >> 0x10) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x28) - sVar8,
(ushort)(byte)((ulonglong)uVar1 >> 8) - sVar7)));
param_5[1] = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x38) - sVar10,
CONCAT24((short)(uVar6 >> 0x30) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x38) - sVar8,
(uVar3 >> 8) - sVar7)));
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_1 = (undefined8 *)((int)param_1 + param_2);
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
return in_EAX;
}
// --- FUN_00657780 at 0x00657780 (size: 273) ---
undefined4
FUN_00657780(undefined8 *param_1,int param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5)
{
undefined8 uVar1;
undefined4 in_EAX;
int iVar2;
ulonglong uVar3;
undefined8 uVar4;
ulonglong uVar5;
undefined8 uVar6;
ulonglong uVar7;
undefined8 uVar8;
ulonglong uVar9;
undefined8 uVar10;
undefined8 uVar11;
undefined8 uVar12;
short sVar13;
short sVar14;
short sVar15;
short sVar16;
uVar1 = DAT_00834000;
iVar2 = 8;
do {
uVar4 = *param_1;
uVar6 = param_1[1];
uVar3 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar4 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar4 >> 8)),(ushort)(byte)uVar4);
uVar7 = (ulonglong)
CONCAT16((char)((ulonglong)uVar4 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar4 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar4 >> 0x28),
(ushort)(byte)((ulonglong)uVar4 >> 0x20))));
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar6
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar6 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar6 >> 8),(short)uVar6)) >> 0x10),
(short)uVar6) & 0xffff00ff00ff00ff;
uVar9 = (ulonglong)
CONCAT16((char)((ulonglong)uVar6 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar6 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar6 >> 0x28),
(ushort)(byte)((ulonglong)uVar6 >> 0x20))));
uVar4 = pshufw(uVar3,uVar3,0xd8);
uVar8 = pshufw(uVar7,uVar7,0xd8);
uVar6 = pshufw(uVar5,uVar5,0xd8);
uVar10 = pshufw(uVar9,uVar9,0xd8);
uVar11 = CONCAT44((int)((ulonglong)uVar8 >> 0x20),(int)((ulonglong)uVar4 >> 0x20));
uVar12 = CONCAT44((int)((ulonglong)uVar10 >> 0x20),(int)((ulonglong)uVar6 >> 0x20));
sVar13 = (short)uVar1;
sVar14 = (short)((ulonglong)uVar1 >> 0x10);
sVar15 = (short)((ulonglong)uVar1 >> 0x20);
sVar16 = (short)((ulonglong)uVar1 >> 0x30);
*param_3 = CONCAT26((short)((ulonglong)uVar8 >> 0x10) - sVar16,
CONCAT24((short)uVar8 - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x10) - sVar14,
(short)uVar4 - sVar13)));
param_3[1] = CONCAT26((short)((ulonglong)uVar10 >> 0x10) - sVar16,
CONCAT24((short)uVar10 - sVar15,
CONCAT22((short)((ulonglong)uVar6 >> 0x10) - sVar14,
(short)uVar6 - sVar13)));
uVar4 = pshufw(uVar11,uVar11,0xd8);
uVar6 = pshufw(uVar12,uVar12,0xd8);
*param_4 = CONCAT26((short)((ulonglong)uVar6 >> 0x10) - sVar16,
CONCAT24((short)uVar6 - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x10) - sVar14,
(short)uVar4 - sVar13)));
*param_5 = CONCAT26((short)((ulonglong)uVar6 >> 0x30) - sVar16,
CONCAT24((short)((ulonglong)uVar6 >> 0x20) - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x30) - sVar14,
(short)((ulonglong)uVar4 >> 0x20) - sVar13)));
uVar4 = param_1[2];
uVar6 = param_1[3];
uVar3 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar4 >> 0x18
) << 0x30) >> 0x28),
(char)((ulonglong)uVar4 >> 0x10)) << 0x20) >>
0x18),(char)((ulonglong)uVar4 >> 8)),(ushort)(byte)uVar4);
uVar7 = (ulonglong)
CONCAT16((char)((ulonglong)uVar4 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar4 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar4 >> 0x28),
(ushort)(byte)((ulonglong)uVar4 >> 0x20))));
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((ulonglong)uVar6
>> 0x18) << 0x30)
>> 0x28),
(char)((ulonglong)uVar6 >> 0x10)) <<
0x20) >> 0x18),
CONCAT12((char)((ulonglong)uVar6 >> 8),(short)uVar6)) >> 0x10),
(short)uVar6) & 0xffff00ff00ff00ff;
uVar9 = (ulonglong)
CONCAT16((char)((ulonglong)uVar6 >> 0x38),
(uint6)CONCAT14((char)((ulonglong)uVar6 >> 0x30),
(uint)CONCAT12((char)((ulonglong)uVar6 >> 0x28),
(ushort)(byte)((ulonglong)uVar6 >> 0x20))));
uVar4 = pshufw(uVar3,uVar3,0xd8);
uVar8 = pshufw(uVar7,uVar7,0xd8);
uVar6 = pshufw(uVar5,uVar5,0xd8);
uVar10 = pshufw(uVar9,uVar9,0xd8);
uVar11 = CONCAT44((int)((ulonglong)uVar8 >> 0x20),(int)((ulonglong)uVar4 >> 0x20));
uVar12 = CONCAT44((int)((ulonglong)uVar10 >> 0x20),(int)((ulonglong)uVar6 >> 0x20));
param_3[0x10] =
CONCAT26((short)((ulonglong)uVar8 >> 0x10) - sVar16,
CONCAT24((short)uVar8 - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x10) - sVar14,(short)uVar4 - sVar13
)));
param_3[0x11] =
CONCAT26((short)((ulonglong)uVar10 >> 0x10) - sVar16,
CONCAT24((short)uVar10 - sVar15,
CONCAT22((short)((ulonglong)uVar6 >> 0x10) - sVar14,(short)uVar6 - sVar13
)));
uVar4 = pshufw(uVar11,uVar11,0xd8);
uVar6 = pshufw(uVar12,uVar12,0xd8);
param_4[1] = CONCAT26((short)((ulonglong)uVar6 >> 0x10) - sVar16,
CONCAT24((short)uVar6 - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x10) - sVar14,
(short)uVar4 - sVar13)));
param_5[1] = CONCAT26((short)((ulonglong)uVar6 >> 0x30) - sVar16,
CONCAT24((short)((ulonglong)uVar6 >> 0x20) - sVar15,
CONCAT22((short)((ulonglong)uVar4 >> 0x30) - sVar14,
(short)((ulonglong)uVar4 >> 0x20) - sVar13)));
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_1 = (undefined8 *)((int)param_1 + param_2);
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
return in_EAX;
}
// --- FUN_006578a0 at 0x006578A0 (size: 99) ---
void FUN_006578a0(undefined8 *param_1,int param_2,undefined8 *param_3)
{
undefined8 uVar1;
undefined8 uVar2;
ushort uVar3;
ushort uVar4;
undefined8 uVar5;
int iVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
uVar5 = DAT_00834000;
iVar6 = 4;
do {
uVar1 = *param_1;
uVar2 = *(undefined8 *)(param_2 + (int)param_1);
uVar4 = (ushort)(((uint7)(byte)((ulonglong)uVar1 >> 0x18) << 0x30) >> 0x28);
uVar3 = (ushort)(((uint7)(byte)((ulonglong)uVar2 >> 0x18) << 0x30) >> 0x28);
sVar7 = (short)uVar5;
sVar8 = (short)((ulonglong)uVar5 >> 0x10);
sVar9 = (short)((ulonglong)uVar5 >> 0x20);
sVar10 = (short)((ulonglong)uVar5 >> 0x30);
*param_3 = CONCAT26((uVar4 >> 8) - sVar10,
CONCAT24((short)CONCAT21(uVar4,(char)((ulonglong)uVar1 >> 0x10)) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 8) - sVar8,
(ushort)(byte)uVar1 - sVar7)));
param_3[1] = CONCAT26((ushort)(byte)((ulonglong)uVar1 >> 0x38) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar1 >> 0x30) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 0x28) - sVar8,
(ushort)(byte)((ulonglong)uVar1 >> 0x20) - sVar7)));
param_3[2] = CONCAT26((uVar3 >> 8) - sVar10,
CONCAT24((short)CONCAT21(uVar3,(char)((ulonglong)uVar2 >> 0x10)) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar2 >> 8) - sVar8,
((ushort)uVar2 & 0xff) - sVar7)));
param_3[3] = CONCAT26((ushort)(byte)((ulonglong)uVar2 >> 0x38) - sVar10,
CONCAT24((ushort)(byte)((ulonglong)uVar2 >> 0x30) - sVar9,
CONCAT22((ushort)(byte)((ulonglong)uVar2 >> 0x28) - sVar8,
(ushort)(byte)((ulonglong)uVar2 >> 0x20) - sVar7)));
param_1 = (undefined8 *)((int)param_1 + param_2 * 2);
param_3 = param_3 + 4;
iVar6 = iVar6 + -1;
} while (iVar6 != 0);
return;
}
// --- FUN_00657910 at 0x00657910 (size: 65) ---
void FUN_00657910(undefined8 *param_1,undefined8 *param_2,int param_3)
{
undefined8 uVar1;
undefined8 uVar2;
undefined8 uVar3;
undefined8 uVar4;
short sVar5;
short sVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
short sVar12;
short sVar13;
short sVar14;
short sVar15;
short sVar16;
short sVar17;
short sVar18;
short sVar19;
short sVar20;
int iVar21;
iVar21 = 4;
do {
uVar1 = *param_1;
uVar2 = param_1[1];
uVar3 = param_1[2];
uVar4 = param_1[3];
sVar5 = (short)uVar1;
sVar7 = (short)((ulonglong)uVar1 >> 0x10);
sVar9 = (short)((ulonglong)uVar1 >> 0x20);
sVar11 = (short)((ulonglong)uVar1 >> 0x30);
sVar13 = (short)uVar2;
sVar15 = (short)((ulonglong)uVar2 >> 0x10);
sVar17 = (short)((ulonglong)uVar2 >> 0x20);
sVar19 = (short)((ulonglong)uVar2 >> 0x30);
sVar6 = (short)uVar3;
sVar8 = (short)((ulonglong)uVar3 >> 0x10);
sVar10 = (short)((ulonglong)uVar3 >> 0x20);
sVar12 = (short)((ulonglong)uVar3 >> 0x30);
sVar14 = (short)uVar4;
sVar16 = (short)((ulonglong)uVar4 >> 0x10);
sVar18 = (short)((ulonglong)uVar4 >> 0x20);
sVar20 = (short)((ulonglong)uVar4 >> 0x30);
*param_2 = CONCAT17((0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar2 >> 0x30) -
(0xff < sVar19),
CONCAT16((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar2 >> 0x20)
- (0xff < sVar17),
CONCAT15((0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar2 >> 0x10) - (0xff < sVar15),
CONCAT14((0 < sVar13) * (sVar13 < 0x100) * (char)uVar2 -
(0xff < sVar13),
CONCAT13((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar1 >> 0x30) -
(0xff < sVar11),
CONCAT12((0 < sVar9) * (sVar9 < 0x100) *
(char)((ulonglong)uVar1 >> 0x20
) - (0xff < sVar9),
CONCAT11((0 < sVar7) *
(sVar7 < 0x100) *
(char)((ulonglong)
uVar1 >> 0x10)
- (0xff < sVar7),
(0 < sVar5) *
(sVar5 < 0x100) *
(char)uVar1 -
(0xff < sVar5))))))));
*(ulonglong *)(param_3 + (int)param_2) =
CONCAT17((0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar4 >> 0x30) -
(0xff < sVar20),
CONCAT16((0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar4 >> 0x20) -
(0xff < sVar18),
CONCAT15((0 < sVar16) * (sVar16 < 0x100) *
(char)((ulonglong)uVar4 >> 0x10) - (0xff < sVar16),
CONCAT14((0 < sVar14) * (sVar14 < 0x100) * (char)uVar4 -
(0xff < sVar14),
CONCAT13((0 < sVar12) * (sVar12 < 0x100) *
(char)((ulonglong)uVar3 >> 0x30) -
(0xff < sVar12),
CONCAT12((0 < sVar10) * (sVar10 < 0x100) *
(char)((ulonglong)uVar3 >> 0x20) -
(0xff < sVar10),
CONCAT11((0 < sVar8) *
(sVar8 < 0x100) *
(char)((ulonglong)uVar3 >>
0x10) - (0xff < sVar8)
,(0 < sVar6) *
(sVar6 < 0x100) *
(char)uVar3 -
(0xff < sVar6))))))));
param_2 = (undefined8 *)((int)param_2 + param_3 * 2);
param_1 = param_1 + 4;
iVar21 = iVar21 + -1;
} while (iVar21 != 0);
return;
}
// --- FUN_00657960 at 0x00657960 (size: 556) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00657960(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
bool bVar1;
char cVar2;
int iVar3;
int iVar4;
undefined4 in_EAX;
int iVar5;
short sVar6;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
short sVar12;
short sVar13;
ulonglong uVar7;
short sVar14;
short sVar18;
short sVar19;
undefined8 uVar15;
undefined8 uVar16;
short sVar20;
ulonglong uVar17;
short sVar21;
undefined8 uVar22;
ulonglong uVar23;
short sVar24;
undefined2 uVar25;
short sVar26;
short sVar29;
short sVar30;
short sVar31;
short sVar32;
undefined8 uVar27;
undefined8 uVar28;
short sVar33;
short sVar34;
undefined8 uVar35;
ulonglong uVar36;
undefined8 uVar37;
undefined8 uVar38;
undefined8 uVar39;
ulonglong uVar40;
undefined8 uVar41;
ulonglong uVar42;
ulonglong uVar43;
iVar5 = 7;
do {
uVar15 = psllw(*param_5,4);
uVar22 = psllw(param_5[1],4);
uVar27 = psllw(*param_4,4);
uVar35 = psllw(param_4[1],4);
uVar16 = pmulhw(uVar15,DAT_00834090);
uVar37 = pmulhw(DAT_00834090,uVar22);
uVar28 = pmulhw(uVar27,DAT_00834098);
sVar9 = (short)DAT_008340c0;
sVar11 = (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar13 = (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar21 = (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar39 = pmulhw(DAT_00834098,uVar35);
sVar26 = (short)DAT_008340b8;
sVar30 = (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar32 = (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar34 = (short)((ulonglong)DAT_008340b8 >> 0x30);
uVar38 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar27 >> 0x10),
(short)((ulonglong)uVar15 >> 0x10)),
CONCAT22((short)uVar27,(short)uVar15)),DAT_008340a0);
uVar15 = pmaddwd(CONCAT26((short)((ulonglong)uVar27 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x30),
CONCAT22((short)((ulonglong)uVar27 >> 0x20),
(short)((ulonglong)uVar15 >> 0x20)))),DAT_008340a0);
uVar41 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar35 >> 0x10),
(short)((ulonglong)uVar22 >> 0x10)),
CONCAT22((short)uVar35,(short)uVar22)),DAT_008340a0);
iVar3 = (int)DAT_008340c8;
iVar4 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar22 = pmaddwd(CONCAT26((short)((ulonglong)uVar35 >> 0x30),
CONCAT24((short)((ulonglong)uVar22 >> 0x30),
CONCAT22((short)((ulonglong)uVar35 >> 0x20),
(short)((ulonglong)uVar22 >> 0x20)))),DAT_008340a0);
uVar27 = packssdw(CONCAT44((int)((ulonglong)uVar38 >> 0x20) - iVar4 >> 0xc,
(int)uVar38 - iVar3 >> 0xc),
CONCAT44((int)((ulonglong)uVar15 >> 0x20) - iVar4 >> 0xc,
(int)uVar15 - iVar3 >> 0xc));
param_5 = param_5 + 2;
uVar22 = packssdw(CONCAT44((int)((ulonglong)uVar41 >> 0x20) - iVar4 >> 0xc,
(int)uVar41 - iVar3 >> 0xc),
CONCAT44((int)((ulonglong)uVar22 >> 0x20) - iVar4 >> 0xc,
(int)uVar22 - iVar3 >> 0xc));
uVar15 = *param_3;
sVar6 = (short)uVar15;
sVar14 = ((short)uVar16 - sVar9) + sVar6;
sVar8 = (short)((ulonglong)uVar15 >> 0x10);
sVar18 = ((short)((ulonglong)uVar16 >> 0x10) - sVar11) + sVar8;
sVar10 = (short)((ulonglong)uVar15 >> 0x20);
sVar19 = ((short)((ulonglong)uVar16 >> 0x20) - sVar13) + sVar10;
sVar12 = (short)((ulonglong)uVar15 >> 0x30);
sVar20 = ((short)((ulonglong)uVar16 >> 0x30) - sVar21) + sVar12;
sVar24 = ((short)uVar28 - sVar26) + sVar6;
sVar29 = ((short)((ulonglong)uVar28 >> 0x10) - sVar30) + sVar8;
sVar31 = ((short)((ulonglong)uVar28 >> 0x20) - sVar32) + sVar10;
sVar33 = ((short)((ulonglong)uVar28 >> 0x30) - sVar34) + sVar12;
sVar6 = sVar6 - (short)uVar27;
sVar8 = sVar8 - (short)((ulonglong)uVar27 >> 0x10);
sVar10 = sVar10 - (short)((ulonglong)uVar27 >> 0x20);
sVar12 = sVar12 - (short)((ulonglong)uVar27 >> 0x30);
cVar2 = (0 < sVar29) * (sVar29 < 0x100) * (char)sVar29 - (0xff < sVar29);
uVar25 = CONCAT11(cVar2,(0 < sVar24) * (sVar24 < 0x100) * (char)sVar24 - (0xff < sVar24));
param_4 = param_4 + 2;
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar33) *
(sVar33 < 0x100)
* (char)sVar33 -
(0xff < sVar33))
<< 0x30) >> 0x28),
(0 < sVar31) * (sVar31 < 0x100) *
(char)sVar31 - (0xff < sVar31)) << 0x20)
>> 0x18),CONCAT12(cVar2,uVar25)) >> 0x10),uVar25) &
0xffffffff00ff00ff;
uVar17 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar20) *
(sVar20 < 0x100) *
(char)sVar20 -
(0xff < sVar20)) << 0x30
) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) * (char)sVar19
- (0xff < sVar19)) << 0x20) >> 0x18),
(0 < sVar18) * (sVar18 < 0x100) * (char)sVar18 - (0xff < sVar18)),
(ushort)(byte)((0 < sVar14) * (sVar14 < 0x100) * (char)sVar14 -
(0xff < sVar14))) |
(ulonglong)
CONCAT16((0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12),
(uint6)CONCAT14((0 < sVar10) * (sVar10 < 0x100) * (char)sVar10 -
(0xff < sVar10),
(uint)CONCAT12((0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 -
(0xff < sVar8),
(ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)sVar6 - (0xff < sVar6)))))
<< 8;
uVar42 = ~DAT_008340f0 & uVar7 | (uVar7 & DAT_008340f0) << 8;
uVar23 = uVar17 & _DAT_008340d0;
uVar15 = param_3[1];
*param_6 = (uVar17 & _DAT_008340e0) << 8 |
(uVar17 & _DAT_008340d8) << 0x10 | uVar17 & _DAT_008340e8 | (uVar42 << 0x20) >> 0x10;
sVar6 = (short)uVar15;
sVar8 = ((short)uVar37 - sVar9) + sVar6;
sVar9 = (short)((ulonglong)uVar15 >> 0x10);
sVar10 = ((short)((ulonglong)uVar37 >> 0x10) - sVar11) + sVar9;
sVar11 = (short)((ulonglong)uVar15 >> 0x20);
sVar12 = ((short)((ulonglong)uVar37 >> 0x20) - sVar13) + sVar11;
sVar13 = (short)((ulonglong)uVar15 >> 0x30);
sVar21 = ((short)((ulonglong)uVar37 >> 0x30) - sVar21) + sVar13;
sVar26 = ((short)uVar39 - sVar26) + sVar6;
sVar30 = ((short)((ulonglong)uVar39 >> 0x10) - sVar30) + sVar9;
sVar32 = ((short)((ulonglong)uVar39 >> 0x20) - sVar32) + sVar11;
sVar34 = ((short)((ulonglong)uVar39 >> 0x30) - sVar34) + sVar13;
sVar6 = sVar6 - (short)uVar22;
sVar9 = sVar9 - (short)((ulonglong)uVar22 >> 0x10);
sVar11 = sVar11 - (short)((ulonglong)uVar22 >> 0x20);
sVar13 = sVar13 - (short)((ulonglong)uVar22 >> 0x30);
cVar2 = (0 < sVar30) * (sVar30 < 0x100) * (char)sVar30 - (0xff < sVar30);
uVar25 = CONCAT11(cVar2,(0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26));
uVar17 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)sVar21 -
(0xff < sVar21)) << 0x30
) >> 0x28),
(0 < sVar12) * (sVar12 < 0x100) * (char)sVar12
- (0xff < sVar12)) << 0x20) >> 0x18),
(0 < sVar10) * (sVar10 < 0x100) * (char)sVar10 - (0xff < sVar10)),
(ushort)(byte)((0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 - (0xff < sVar8)));
param_3 = param_3 + 2;
uVar7 = (ulonglong)
CONCAT16((0 < sVar13) * (sVar13 < 0x100) * (char)sVar13 - (0xff < sVar13),
(uint6)CONCAT14((0 < sVar11) * (sVar11 < 0x100) * (char)sVar11 -
(0xff < sVar11),
(uint)CONCAT12((0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 -
(0xff < sVar9),
(ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)sVar6 - (0xff < sVar6)))))
| ((ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar34) *
(sVar34 <
0x100) * (char)sVar34 - (0xff < sVar34)) << 0x30)
>> 0x28),(0 < sVar32) * (sVar32 < 0x100) *
(char)sVar32 - (0xff < sVar32)) << 0x20)
>> 0x18),CONCAT12(cVar2,uVar25)) >> 0x10),uVar25) &
0xffffffff00ff00ff) << 8;
uVar36 = ~DAT_008340f0 & uVar17 | (uVar17 & DAT_008340f0) << 8;
uVar43 = uVar7 & _DAT_008340d8;
uVar17 = uVar7 & _DAT_008340d0;
uVar40 = uVar7 & _DAT_008340e0;
param_6[1] = uVar23 >> 0x28 | uVar42 >> 0x20 | (uVar7 & _DAT_008340e8) << 0x28 | uVar36 << 0x20;
param_6[2] = uVar17 | uVar43 >> 8 | (uVar36 >> 0x20) << 0x10 |
CONCAT44((uint)(uVar40 >> 0x30),(uint)uVar40 >> 0x10);
param_6 = (ulonglong *)((int)param_6 + param_7);
bVar1 = 0 < iVar5;
iVar5 = iVar5 + -1;
} while (bVar1);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00657b90 at 0x00657B90 (size: 556) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00657b90(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
bool bVar1;
char cVar2;
int iVar3;
int iVar4;
undefined4 in_EAX;
int iVar5;
short sVar6;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
short sVar12;
short sVar13;
ulonglong uVar7;
short sVar14;
short sVar18;
short sVar19;
undefined8 uVar15;
undefined8 uVar16;
short sVar20;
ulonglong uVar17;
short sVar21;
undefined8 uVar22;
ulonglong uVar23;
short sVar24;
undefined2 uVar25;
short sVar26;
short sVar29;
short sVar30;
short sVar31;
short sVar32;
undefined8 uVar27;
undefined8 uVar28;
short sVar33;
short sVar34;
undefined8 uVar35;
ulonglong uVar36;
undefined8 uVar37;
undefined8 uVar38;
undefined8 uVar39;
ulonglong uVar40;
ulonglong uVar41;
ulonglong uVar42;
iVar5 = 7;
do {
uVar15 = psllw(*param_4,4);
uVar22 = psllw(param_4[1],4);
uVar27 = psllw(*param_5,4);
uVar35 = psllw(param_5[1],4);
uVar28 = pmulhw(uVar27,DAT_00834090);
uVar16 = pmulhw(uVar15,DAT_00834098);
uVar37 = pmulhw(DAT_00834098,uVar22);
sVar26 = (short)DAT_008340c0;
sVar30 = (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar32 = (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar34 = (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar39 = pmulhw(DAT_00834090,uVar35);
sVar9 = (short)DAT_008340b8;
sVar11 = (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar13 = (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar21 = (short)((ulonglong)DAT_008340b8 >> 0x30);
uVar38 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
(short)((ulonglong)uVar27 >> 0x10)),
CONCAT22((short)uVar15,(short)uVar27)),DAT_008340a0);
uVar15 = pmaddwd(CONCAT26((short)((ulonglong)uVar15 >> 0x30),
CONCAT24((short)((ulonglong)uVar27 >> 0x30),
CONCAT22((short)((ulonglong)uVar15 >> 0x20),
(short)((ulonglong)uVar27 >> 0x20)))),DAT_008340a0);
iVar3 = (int)DAT_008340c8;
iVar4 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar27 = packssdw(CONCAT44((int)((ulonglong)uVar38 >> 0x20) - iVar4 >> 0xc,
(int)uVar38 - iVar3 >> 0xc),
CONCAT44((int)((ulonglong)uVar15 >> 0x20) - iVar4 >> 0xc,
(int)uVar15 - iVar3 >> 0xc));
uVar38 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar22 >> 0x10),
(short)((ulonglong)uVar35 >> 0x10)),
CONCAT22((short)uVar22,(short)uVar35)),DAT_008340a0);
uVar15 = pmaddwd(CONCAT26((short)((ulonglong)uVar22 >> 0x30),
CONCAT24((short)((ulonglong)uVar35 >> 0x30),
CONCAT22((short)((ulonglong)uVar22 >> 0x20),
(short)((ulonglong)uVar35 >> 0x20)))),DAT_008340a0);
uVar22 = packssdw(CONCAT44((int)((ulonglong)uVar38 >> 0x20) - iVar4 >> 0xc,
(int)uVar38 - iVar3 >> 0xc),
CONCAT44((int)((ulonglong)uVar15 >> 0x20) - iVar4 >> 0xc,
(int)uVar15 - iVar3 >> 0xc));
uVar15 = *param_3;
sVar6 = (short)uVar15;
sVar14 = ((short)uVar16 - sVar9) + sVar6;
sVar8 = (short)((ulonglong)uVar15 >> 0x10);
sVar18 = ((short)((ulonglong)uVar16 >> 0x10) - sVar11) + sVar8;
sVar10 = (short)((ulonglong)uVar15 >> 0x20);
sVar19 = ((short)((ulonglong)uVar16 >> 0x20) - sVar13) + sVar10;
sVar12 = (short)((ulonglong)uVar15 >> 0x30);
sVar20 = ((short)((ulonglong)uVar16 >> 0x30) - sVar21) + sVar12;
sVar24 = ((short)uVar28 - sVar26) + sVar6;
sVar29 = ((short)((ulonglong)uVar28 >> 0x10) - sVar30) + sVar8;
sVar31 = ((short)((ulonglong)uVar28 >> 0x20) - sVar32) + sVar10;
sVar33 = ((short)((ulonglong)uVar28 >> 0x30) - sVar34) + sVar12;
sVar6 = sVar6 - (short)uVar27;
sVar8 = sVar8 - (short)((ulonglong)uVar27 >> 0x10);
sVar10 = sVar10 - (short)((ulonglong)uVar27 >> 0x20);
sVar12 = sVar12 - (short)((ulonglong)uVar27 >> 0x30);
cVar2 = (0 < sVar29) * (sVar29 < 0x100) * (char)sVar29 - (0xff < sVar29);
uVar25 = CONCAT11(cVar2,(0 < sVar24) * (sVar24 < 0x100) * (char)sVar24 - (0xff < sVar24));
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar33) *
(sVar33 < 0x100)
* (char)sVar33 -
(0xff < sVar33))
<< 0x30) >> 0x28),
(0 < sVar31) * (sVar31 < 0x100) *
(char)sVar31 - (0xff < sVar31)) << 0x20)
>> 0x18),CONCAT12(cVar2,uVar25)) >> 0x10),uVar25) &
0xffffffff00ff00ff;
uVar17 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar20) *
(sVar20 < 0x100) *
(char)sVar20 -
(0xff < sVar20)) << 0x30
) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) * (char)sVar19
- (0xff < sVar19)) << 0x20) >> 0x18),
(0 < sVar18) * (sVar18 < 0x100) * (char)sVar18 - (0xff < sVar18)),
(ushort)(byte)((0 < sVar14) * (sVar14 < 0x100) * (char)sVar14 -
(0xff < sVar14))) |
(ulonglong)
CONCAT16((0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12),
(uint6)CONCAT14((0 < sVar10) * (sVar10 < 0x100) * (char)sVar10 -
(0xff < sVar10),
(uint)CONCAT12((0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 -
(0xff < sVar8),
(ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)sVar6 - (0xff < sVar6)))))
<< 8;
uVar41 = ~DAT_008340f0 & uVar7 | (uVar7 & DAT_008340f0) << 8;
uVar23 = uVar17 & _DAT_008340d0;
uVar15 = param_3[1];
*param_6 = (uVar17 & _DAT_008340e0) << 8 |
(uVar17 & _DAT_008340d8) << 0x10 | uVar17 & _DAT_008340e8 | (uVar41 << 0x20) >> 0x10;
sVar6 = (short)uVar15;
sVar8 = ((short)uVar37 - sVar9) + sVar6;
sVar9 = (short)((ulonglong)uVar15 >> 0x10);
sVar10 = ((short)((ulonglong)uVar37 >> 0x10) - sVar11) + sVar9;
sVar11 = (short)((ulonglong)uVar15 >> 0x20);
sVar12 = ((short)((ulonglong)uVar37 >> 0x20) - sVar13) + sVar11;
sVar13 = (short)((ulonglong)uVar15 >> 0x30);
sVar21 = ((short)((ulonglong)uVar37 >> 0x30) - sVar21) + sVar13;
sVar26 = ((short)uVar39 - sVar26) + sVar6;
sVar30 = ((short)((ulonglong)uVar39 >> 0x10) - sVar30) + sVar9;
sVar32 = ((short)((ulonglong)uVar39 >> 0x20) - sVar32) + sVar11;
sVar34 = ((short)((ulonglong)uVar39 >> 0x30) - sVar34) + sVar13;
sVar6 = sVar6 - (short)uVar22;
sVar9 = sVar9 - (short)((ulonglong)uVar22 >> 0x10);
sVar11 = sVar11 - (short)((ulonglong)uVar22 >> 0x20);
sVar13 = sVar13 - (short)((ulonglong)uVar22 >> 0x30);
cVar2 = (0 < sVar30) * (sVar30 < 0x100) * (char)sVar30 - (0xff < sVar30);
uVar25 = CONCAT11(cVar2,(0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26));
uVar17 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)sVar21 -
(0xff < sVar21)) << 0x30
) >> 0x28),
(0 < sVar12) * (sVar12 < 0x100) * (char)sVar12
- (0xff < sVar12)) << 0x20) >> 0x18),
(0 < sVar10) * (sVar10 < 0x100) * (char)sVar10 - (0xff < sVar10)),
(ushort)(byte)((0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 - (0xff < sVar8)));
uVar7 = (ulonglong)
CONCAT16((0 < sVar13) * (sVar13 < 0x100) * (char)sVar13 - (0xff < sVar13),
(uint6)CONCAT14((0 < sVar11) * (sVar11 < 0x100) * (char)sVar11 -
(0xff < sVar11),
(uint)CONCAT12((0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 -
(0xff < sVar9),
(ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)sVar6 - (0xff < sVar6)))))
| ((ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar34) *
(sVar34 <
0x100) * (char)sVar34 - (0xff < sVar34)) << 0x30)
>> 0x28),(0 < sVar32) * (sVar32 < 0x100) *
(char)sVar32 - (0xff < sVar32)) << 0x20)
>> 0x18),CONCAT12(cVar2,uVar25)) >> 0x10),uVar25) &
0xffffffff00ff00ff) << 8;
uVar36 = ~DAT_008340f0 & uVar17 | (uVar17 & DAT_008340f0) << 8;
uVar42 = uVar7 & _DAT_008340d8;
uVar17 = uVar7 & _DAT_008340d0;
uVar40 = uVar7 & _DAT_008340e0;
param_6[1] = uVar23 >> 0x28 | uVar41 >> 0x20 | (uVar7 & _DAT_008340e8) << 0x28 | uVar36 << 0x20;
param_6[2] = uVar17 | uVar42 >> 8 | (uVar36 >> 0x20) << 0x10 |
CONCAT44((uint)(uVar40 >> 0x30),(uint)uVar40 >> 0x10);
param_6 = (ulonglong *)((int)param_6 + param_7);
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
bVar1 = 0 < iVar5;
iVar5 = iVar5 + -1;
} while (bVar1);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00657dc0 at 0x00657DC0 (size: 453) ---
undefined8 __fastcall
FUN_00657dc0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
char cVar12;
undefined4 uVar13;
undefined4 in_EAX;
int iVar14;
undefined8 uVar15;
ulonglong uVar16;
undefined8 uVar17;
undefined8 uVar18;
undefined8 uVar19;
undefined8 uVar20;
ulonglong uVar21;
iVar14 = 8;
do {
uVar17 = psllw(*param_5,4);
uVar19 = psllw(*param_4,4);
uVar15 = pmulhw(DAT_00834108,uVar17);
uVar18 = pmulhw(DAT_00834110,uVar19);
uVar20 = *param_3;
uVar19 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar17 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar19 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar17 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar19 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar17 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar19 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar17 >> 4) +
(short)DAT_00834118 * ((ushort)uVar19 >> 4)) -
(short)DAT_00834138))),8);
uVar15 = paddsw(CONCAT26((short)((ulonglong)uVar15 >> 0x30) -
(short)((ulonglong)DAT_00834130 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x20) -
(short)((ulonglong)DAT_00834130 >> 0x20),
CONCAT22((short)((ulonglong)uVar15 >> 0x10) -
(short)((ulonglong)DAT_00834130 >> 0x10),
(short)uVar15 - (short)DAT_00834130))),uVar20);
uVar17 = paddsw(CONCAT26((short)((ulonglong)uVar18 >> 0x30) -
(short)((ulonglong)DAT_00834128 >> 0x30),
CONCAT24((short)((ulonglong)uVar18 >> 0x20) -
(short)((ulonglong)DAT_00834128 >> 0x20),
CONCAT22((short)((ulonglong)uVar18 >> 0x10) -
(short)((ulonglong)DAT_00834128 >> 0x10),
(short)uVar18 - (short)DAT_00834128))),uVar20);
uVar20 = psubsw(uVar20,uVar19);
sVar1 = (short)uVar15;
sVar4 = (short)((ulonglong)uVar15 >> 0x10);
sVar6 = (short)((ulonglong)uVar15 >> 0x20);
sVar9 = (short)((ulonglong)uVar15 >> 0x30);
sVar2 = (short)uVar17;
sVar3 = (short)((ulonglong)uVar17 >> 0x10);
cVar12 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar17 >> 0x10) - (0xff < sVar3);
sVar7 = (short)((ulonglong)uVar17 >> 0x20);
sVar10 = (short)((ulonglong)uVar17 >> 0x30);
sVar3 = (short)uVar20;
sVar5 = (short)((ulonglong)uVar20 >> 0x10);
sVar8 = (short)((ulonglong)uVar20 >> 0x20);
sVar11 = (short)((ulonglong)uVar20 >> 0x30);
uVar21 = (ulonglong)
CONCAT12(cVar12,CONCAT11(cVar12,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar17 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar13 = (undefined4)
(((uint7)(byte)((0 < sVar8) * (sVar8 < 0x100) * (char)((ulonglong)uVar20 >> 0x20) -
(0xff < sVar8)) << 0x20) >> 0x18);
uVar16 = (ulonglong)
CONCAT14((0 < sVar9) * (sVar9 < 0x100) * (char)((ulonglong)uVar15 >> 0x30) -
(0xff < sVar9),
(uint)(byte)((0 < sVar6) * (sVar6 < 0x100) * (char)((ulonglong)uVar15 >> 0x20)
- (0xff < sVar6))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar10) * (sVar10 < 0x100) *
(char)((ulonglong)uVar17 >> 0x30) - (0xff < sVar10)) << 0x10,
(ushort)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar17 >> 0x20) - (0xff < sVar7))) << 0x10 |
CONCAT44((uint)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar20 >> 0x30) - (0xff < sVar11)) << 8,uVar13)
| DAT_00834140;
*param_6 = (ulonglong)
CONCAT14((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar4),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar15 - (0xff < sVar1)))
| CONCAT44((uint)(ushort)(uVar21 >> 0x10) << 0x10,(int)uVar21 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar13,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar20 >> 0x10) -
(0xff < sVar5)) << 8,
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar20 - (0xff < sVar3))
<< 8) | DAT_00834140;
param_6[1] = uVar16;
uVar17 = psllw(param_5[1],4);
uVar18 = psllw(param_4[1],4);
uVar19 = pmulhw(DAT_00834108,uVar17);
uVar15 = pmulhw(DAT_00834110,uVar18);
uVar20 = param_3[1];
uVar17 = psraw(CONCAT26(((short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar18 >> 0x34) +
(short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar17 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar18 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar17 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar18 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar17 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834118 * ((ushort)uVar18 >> 4) +
(short)DAT_00834120 * ((ushort)uVar17 >> 4)) -
(short)DAT_00834138))),8);
uVar18 = paddsw(CONCAT26((short)((ulonglong)uVar19 >> 0x30) -
(short)((ulonglong)DAT_00834130 >> 0x30),
CONCAT24((short)((ulonglong)uVar19 >> 0x20) -
(short)((ulonglong)DAT_00834130 >> 0x20),
CONCAT22((short)((ulonglong)uVar19 >> 0x10) -
(short)((ulonglong)DAT_00834130 >> 0x10),
(short)uVar19 - (short)DAT_00834130))),uVar20);
uVar15 = paddsw(CONCAT26((short)((ulonglong)uVar15 >> 0x30) -
(short)((ulonglong)DAT_00834128 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x20) -
(short)((ulonglong)DAT_00834128 >> 0x20),
CONCAT22((short)((ulonglong)uVar15 >> 0x10) -
(short)((ulonglong)DAT_00834128 >> 0x10),
(short)uVar15 - (short)DAT_00834128))),uVar20);
uVar20 = psubsw(uVar20,uVar17);
sVar1 = (short)uVar18;
sVar4 = (short)((ulonglong)uVar18 >> 0x10);
sVar6 = (short)((ulonglong)uVar18 >> 0x20);
sVar9 = (short)((ulonglong)uVar18 >> 0x30);
sVar2 = (short)uVar15;
sVar3 = (short)((ulonglong)uVar15 >> 0x10);
cVar12 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) - (0xff < sVar3);
sVar7 = (short)((ulonglong)uVar15 >> 0x20);
sVar10 = (short)((ulonglong)uVar15 >> 0x30);
sVar3 = (short)uVar20;
sVar5 = (short)((ulonglong)uVar20 >> 0x10);
sVar8 = (short)((ulonglong)uVar20 >> 0x20);
sVar11 = (short)((ulonglong)uVar20 >> 0x30);
uVar16 = (ulonglong)
CONCAT12(cVar12,CONCAT11(cVar12,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar15 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar13 = (undefined4)
(((uint7)(byte)((0 < sVar8) * (sVar8 < 0x100) * (char)((ulonglong)uVar20 >> 0x20) -
(0xff < sVar8)) << 0x20) >> 0x18);
uVar21 = (ulonglong)
CONCAT14((0 < sVar9) * (sVar9 < 0x100) * (char)((ulonglong)uVar18 >> 0x30) -
(0xff < sVar9),
(uint)(byte)((0 < sVar6) * (sVar6 < 0x100) * (char)((ulonglong)uVar18 >> 0x20)
- (0xff < sVar6))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar10) * (sVar10 < 0x100) *
(char)((ulonglong)uVar15 >> 0x30) - (0xff < sVar10)) << 0x10,
(ushort)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) - (0xff < sVar7))) << 0x10 |
CONCAT44((uint)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar20 >> 0x30) - (0xff < sVar11)) << 8,uVar13)
| DAT_00834140;
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_6[2] = (ulonglong)
CONCAT14((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar18 >> 0x10) -
(0xff < sVar4),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar18 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar16 >> 0x10) << 0x10,(int)uVar16 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar13,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar20 >> 0x10) -
(0xff < sVar5)) << 8,
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar20 - (0xff < sVar3)
) << 8) | DAT_00834140;
param_6[3] = uVar21;
param_6 = (ulonglong *)((int)param_6 + param_7);
iVar14 = iVar14 + -1;
} while (iVar14 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00657f90 at 0x00657F90 (size: 531) ---
undefined8 __fastcall
FUN_00657f90(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,undefined4 param_6,ulonglong *param_7,int param_8)
{
ulonglong uVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
uint uVar11;
ushort uVar12;
ushort uVar13;
ushort uVar14;
undefined4 in_EAX;
int iVar15;
undefined8 uVar16;
short sVar17;
short sVar19;
short sVar20;
undefined8 uVar18;
short sVar21;
undefined8 uVar22;
ushort uVar24;
undefined8 uVar23;
undefined8 uVar25;
iVar15 = 8;
do {
uVar18 = psllw(*param_5,4);
uVar23 = psllw(*param_4,4);
uVar16 = pmulhw(DAT_00834108,uVar18);
uVar22 = pmulhw(DAT_00834110,uVar23);
uVar25 = *param_3;
uVar23 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar18 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar23 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar18 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar23 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar18 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar23 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar18 >> 4) +
(short)DAT_00834118 * ((ushort)uVar23 >> 4)) -
(short)DAT_00834138))),8);
uVar16 = paddsw(CONCAT26((short)((ulonglong)uVar16 >> 0x30) -
(short)((ulonglong)DAT_00834130 >> 0x30),
CONCAT24((short)((ulonglong)uVar16 >> 0x20) -
(short)((ulonglong)DAT_00834130 >> 0x20),
CONCAT22((short)((ulonglong)uVar16 >> 0x10) -
(short)((ulonglong)DAT_00834130 >> 0x10),
(short)uVar16 - (short)DAT_00834130))),uVar25);
uVar18 = paddsw(CONCAT26((short)((ulonglong)uVar22 >> 0x30) -
(short)((ulonglong)DAT_00834128 >> 0x30),
CONCAT24((short)((ulonglong)uVar22 >> 0x20) -
(short)((ulonglong)DAT_00834128 >> 0x20),
CONCAT22((short)((ulonglong)uVar22 >> 0x10) -
(short)((ulonglong)DAT_00834128 >> 0x10),
(short)uVar22 - (short)DAT_00834128))),uVar25);
uVar25 = psubsw(uVar25,uVar23);
sVar2 = (short)uVar16;
sVar5 = (short)((ulonglong)uVar16 >> 0x10);
sVar8 = (short)((ulonglong)uVar16 >> 0x20);
sVar17 = (short)((ulonglong)uVar16 >> 0x30);
sVar3 = (short)uVar18;
sVar6 = (short)((ulonglong)uVar18 >> 0x10);
sVar9 = (short)((ulonglong)uVar18 >> 0x20);
sVar19 = (short)((ulonglong)uVar18 >> 0x30);
sVar4 = (short)uVar25;
sVar7 = (short)((ulonglong)uVar25 >> 0x10);
sVar10 = (short)((ulonglong)uVar25 >> 0x20);
sVar20 = (short)((ulonglong)uVar25 >> 0x30);
uVar14 = (ushort)(((uint7)(byte)((0 < sVar17) * (sVar17 < 0x100) *
(char)((ulonglong)uVar16 >> 0x30) - (0xff < sVar17)) << 0x30)
>> 0x28);
uVar12 = (ushort)(((uint7)(byte)((0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar19)) << 0x30)
>> 0x28);
uVar13 = (ushort)(((uint7)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar25 >> 0x30) - (0xff < sVar20)) << 0x30)
>> 0x28);
uVar1 = param_3[0x30];
sVar17 = (short)DAT_00834148;
sVar19 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar20 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar21 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar24 = sVar19 - (ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar6));
uVar11 = (uint)(ushort)(uVar1 >> 0x20);
*param_7 = (ulonglong)
CONCAT24(sVar19 - (ushort)(byte)((0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) - (0xff < sVar5)),
(uint)(ushort)(sVar17 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar16 - (0xff < sVar2)))) |
CONCAT44((uint)uVar24 << 0x10,
CONCAT22(uVar24,sVar17 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)uVar18 - (0xff < sVar3))) <<
0x10) |
CONCAT44((uint)(ushort)(sVar19 - (ushort)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar25 >> 0x10) -
(0xff < sVar7))) << 8,
(uint)(ushort)(sVar17 - (ushort)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)uVar25 - (0xff < sVar4))) << 8)
| CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18)
;
param_7[1] = (ulonglong)
CONCAT24(sVar21 - (uVar14 >> 8),
(uint)(ushort)(sVar20 - (short)CONCAT21(uVar14,(0 < sVar8) *
(sVar8 < 0x100) *
(char)((ulonglong)uVar16 >>
0x20) -
(0xff < sVar8)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar21 - (uVar12 >> 8)) << 0x10,
sVar20 - (short)CONCAT21(uVar12,(0 < sVar9) * (sVar9 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar9))) << 0x10 |
CONCAT44((uint)(ushort)(sVar21 - (uVar13 >> 8)) << 8,
(uint)(ushort)(sVar20 - (short)CONCAT21(uVar13,(0 < sVar10) *
(sVar10 < 0x100) *
(char)((ulonglong)uVar25 >>
0x20) -
(0xff < sVar10))) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar11) >> 0x10) << 8,uVar11 << 0x18
);
uVar18 = psllw(param_5[1],4);
uVar23 = psllw(param_4[1],4);
uVar16 = pmulhw(DAT_00834108,uVar18);
uVar22 = pmulhw(DAT_00834110,uVar23);
uVar25 = param_3[1];
uVar23 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar18 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar23 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar18 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar23 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar18 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar23 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar18 >> 4) +
(short)DAT_00834118 * ((ushort)uVar23 >> 4)) -
(short)DAT_00834138))),8);
uVar16 = paddsw(CONCAT26((short)((ulonglong)uVar16 >> 0x30) -
(short)((ulonglong)DAT_00834130 >> 0x30),
CONCAT24((short)((ulonglong)uVar16 >> 0x20) -
(short)((ulonglong)DAT_00834130 >> 0x20),
CONCAT22((short)((ulonglong)uVar16 >> 0x10) -
(short)((ulonglong)DAT_00834130 >> 0x10),
(short)uVar16 - (short)DAT_00834130))),uVar25);
uVar18 = paddsw(CONCAT26((short)((ulonglong)uVar22 >> 0x30) -
(short)((ulonglong)DAT_00834128 >> 0x30),
CONCAT24((short)((ulonglong)uVar22 >> 0x20) -
(short)((ulonglong)DAT_00834128 >> 0x20),
CONCAT22((short)((ulonglong)uVar22 >> 0x10) -
(short)((ulonglong)DAT_00834128 >> 0x10),
(short)uVar22 - (short)DAT_00834128))),uVar25);
uVar25 = psubsw(uVar25,uVar23);
sVar2 = (short)uVar16;
sVar5 = (short)((ulonglong)uVar16 >> 0x10);
sVar8 = (short)((ulonglong)uVar16 >> 0x20);
sVar17 = (short)((ulonglong)uVar16 >> 0x30);
sVar3 = (short)uVar18;
sVar6 = (short)((ulonglong)uVar18 >> 0x10);
sVar9 = (short)((ulonglong)uVar18 >> 0x20);
sVar19 = (short)((ulonglong)uVar18 >> 0x30);
sVar4 = (short)uVar25;
sVar7 = (short)((ulonglong)uVar25 >> 0x10);
sVar10 = (short)((ulonglong)uVar25 >> 0x20);
sVar20 = (short)((ulonglong)uVar25 >> 0x30);
uVar14 = (ushort)(((uint7)(byte)((0 < sVar17) * (sVar17 < 0x100) *
(char)((ulonglong)uVar16 >> 0x30) - (0xff < sVar17)) << 0x30)
>> 0x28);
uVar12 = (ushort)(((uint7)(byte)((0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar19)) << 0x30)
>> 0x28);
uVar13 = (ushort)(((uint7)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar25 >> 0x30) - (0xff < sVar20)) << 0x30)
>> 0x28);
uVar1 = param_3[0x31];
sVar17 = (short)DAT_00834148;
sVar19 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar20 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar21 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar24 = sVar19 - (ushort)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar6));
uVar11 = (uint)(ushort)(uVar1 >> 0x20);
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_7[2] = (ulonglong)
CONCAT24(sVar19 - (ushort)(byte)((0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) - (0xff < sVar5)
),
(uint)(ushort)(sVar17 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar16 - (0xff < sVar2)))) |
CONCAT44((uint)uVar24 << 0x10,
CONCAT22(uVar24,sVar17 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)uVar18 - (0xff < sVar3))) <<
0x10) |
CONCAT44((uint)(ushort)(sVar19 - (ushort)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar25 >> 0x10) -
(0xff < sVar7))) << 8,
(uint)(ushort)(sVar17 - (ushort)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)uVar25 - (0xff < sVar4))) <<
8) |
CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18)
;
param_7[3] = (ulonglong)
CONCAT24(sVar21 - (uVar14 >> 8),
(uint)(ushort)(sVar20 - (short)CONCAT21(uVar14,(0 < sVar8) *
(sVar8 < 0x100) *
(char)((ulonglong)uVar16 >>
0x20) -
(0xff < sVar8)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar21 - (uVar12 >> 8)) << 0x10,
sVar20 - (short)CONCAT21(uVar12,(0 < sVar9) * (sVar9 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar9))) << 0x10 |
CONCAT44((uint)(ushort)(sVar21 - (uVar13 >> 8)) << 8,
(uint)(ushort)(sVar20 - (short)CONCAT21(uVar13,(0 < sVar10) *
(sVar10 < 0x100) *
(char)((ulonglong)uVar25 >>
0x20) -
(0xff < sVar10))) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar11) >> 0x10) << 8,uVar11 << 0x18
);
param_7 = (ulonglong *)((int)param_7 + param_8);
iVar15 = iVar15 + -1;
} while (iVar15 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_006581b0 at 0x006581B0 (size: 886) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_006581b0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
char cVar5;
char cVar6;
int iVar7;
uint7 uVar8;
undefined4 in_EAX;
int iVar9;
ulonglong uVar10;
ulonglong uVar11;
undefined2 uVar12;
undefined8 uVar13;
ulonglong uVar14;
undefined8 uVar15;
ulonglong uVar16;
short sVar17;
short sVar19;
short sVar20;
undefined8 uVar18;
short sVar21;
short sVar22;
short sVar24;
short sVar25;
undefined8 uVar23;
short sVar26;
undefined2 uVar27;
undefined2 uVar28;
undefined8 uVar29;
ulonglong uVar30;
iVar9 = 8;
do {
uVar15 = psllw(*param_5,4);
uVar13 = psllw(*param_4,4);
uVar23 = pmulhw(DAT_00834098,uVar13);
uVar18 = pmulhw(DAT_00834090,uVar15);
sVar22 = (short)uVar23 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar23 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar23 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar23 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar17 = (short)uVar18 - (short)DAT_008340c0;
sVar19 = (short)((ulonglong)uVar18 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar20 = (short)((ulonglong)uVar18 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar21 = (short)((ulonglong)uVar18 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar18 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar15 >> 0x10)),
CONCAT22((short)uVar13,(short)uVar15)),DAT_008340a0);
uVar13 = pmaddwd(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x30),
CONCAT22((short)((ulonglong)uVar13 >> 0x20),
(short)((ulonglong)uVar15 >> 0x20)))),DAT_008340a0);
iVar7 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar15 = CONCAT44((int)((ulonglong)uVar18 >> 0x20) - iVar7 >> 0xc,
(int)uVar18 - (int)DAT_008340c8 >> 0xc);
uVar13 = CONCAT44((int)((ulonglong)uVar13 >> 0x20) - iVar7 >> 0xc,
(int)uVar13 - (int)DAT_008340c8 >> 0xc);
uVar15 = packssdw(uVar15,uVar15);
uVar18 = packssdw(uVar13,uVar13);
uVar27 = (undefined2)((ulonglong)uVar15 >> 0x10);
uVar12 = (undefined2)((ulonglong)uVar18 >> 0x10);
uVar13 = *param_3;
uVar29 = paddsw(CONCAT44(CONCAT22(sVar19,sVar19),CONCAT22(sVar17,sVar17)),uVar13);
uVar23 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar22,sVar22)),uVar13);
uVar13 = psubsw(uVar13,CONCAT44(CONCAT22(uVar27,uVar27),CONCAT22((short)uVar15,(short)uVar15)));
sVar17 = (short)uVar29;
sVar19 = (short)((ulonglong)uVar29 >> 0x10);
cVar5 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar29 >> 0x10) - (0xff < sVar19);
uVar28 = CONCAT11(cVar5,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar29 - (0xff < sVar17));
sVar22 = (short)((ulonglong)uVar29 >> 0x20);
sVar2 = (short)((ulonglong)uVar29 >> 0x30);
sVar17 = (short)uVar23;
sVar19 = (short)((ulonglong)uVar23 >> 0x10);
cVar6 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) - (0xff < sVar19);
uVar27 = CONCAT11(cVar6,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar23 - (0xff < sVar17));
sVar24 = (short)((ulonglong)uVar23 >> 0x20);
sVar3 = (short)((ulonglong)uVar23 >> 0x30);
sVar17 = (short)uVar13;
sVar19 = (short)((ulonglong)uVar13 >> 0x10);
sVar1 = (short)((ulonglong)uVar13 >> 0x20);
sVar4 = (short)((ulonglong)uVar13 >> 0x30);
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100)
* (char)((
ulonglong)uVar29 >> 0x30) - (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) *
(char)((ulonglong)uVar29 >> 0x20) -
(0xff < sVar22)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar16 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar3) *
(sVar3 < 0x100)
* (char)((
ulonglong)uVar23 >> 0x30) - (0xff < sVar3)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar6,uVar27)) >> 0x10),uVar27) & 0xffffffff00ff00ff;
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar13 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar13 -
(0xff < sVar17)));
uVar30 = (uVar10 | uVar11 << 8) & _DAT_008340f8;
uVar10 = (uVar11 | uVar16 << 8) & DAT_008340f0 | (uVar16 | uVar10 >> 8) & _DAT_008340f8;
*param_6 = (uVar30 << 0x10 | uVar30) & _DAT_00834100 | (uVar10 << 0x20) >> 0x10;
uVar13 = param_3[1];
uVar23 = paddsw(CONCAT26(sVar26,CONCAT24(sVar26,CONCAT22(sVar25,sVar25))),uVar13);
uVar15 = paddsw(CONCAT26(sVar21,CONCAT24(sVar21,CONCAT22(sVar20,sVar20))),uVar13);
uVar13 = psubsw(uVar13,CONCAT44(CONCAT22(uVar12,uVar12),CONCAT22((short)uVar18,(short)uVar18)));
sVar17 = (short)uVar23;
sVar22 = (short)((ulonglong)uVar23 >> 0x10);
sVar1 = (short)((ulonglong)uVar23 >> 0x20);
sVar4 = (short)((ulonglong)uVar23 >> 0x30);
sVar19 = (short)uVar15;
sVar24 = (short)((ulonglong)uVar15 >> 0x10);
cVar5 = (0 < sVar24) * (sVar24 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) - (0xff < sVar24);
uVar12 = CONCAT11(cVar5,(0 < sVar19) * (sVar19 < 0x100) * (char)uVar15 - (0xff < sVar19));
sVar2 = (short)((ulonglong)uVar15 >> 0x20);
sVar20 = (short)((ulonglong)uVar15 >> 0x30);
sVar19 = (short)uVar13;
sVar24 = (short)((ulonglong)uVar13 >> 0x10);
sVar3 = (short)((ulonglong)uVar13 >> 0x20);
sVar21 = (short)((ulonglong)uVar13 >> 0x30);
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar23 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar22) * (sVar22 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) -
(0xff < sVar22)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar23 -
(0xff < sVar17)));
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar20) *
(sVar20 < 0x100)
* (char)((
ulonglong)uVar15 >> 0x30) - (0xff < sVar20)) <<
0x30) >> 0x28),
(0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) - (0xff < sVar2)
) << 0x20) >> 0x18),CONCAT12(cVar5,uVar12)) >>
0x10),uVar12) & 0xffffffff00ff00ff;
uVar16 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)((ulonglong)
uVar13 >> 0x30)
- (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar3)) << 0x20) >> 0x18),
(0 < sVar24) * (sVar24 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar24)),
(ushort)(byte)((0 < sVar19) * (sVar19 < 0x100) * (char)uVar13 -
(0xff < sVar19)));
uVar30 = (uVar16 | uVar11 << 8) & DAT_008340f0;
uVar16 = ((uVar11 | uVar14 >> 8) & _DAT_008340f8) << 0x10 |
(uVar14 | uVar16 << 8) & _DAT_008340f8;
uVar11 = (uVar30 | uVar30 >> 0x10) & _DAT_00834100;
param_6[1] = uVar10 >> 0x20 | uVar16 << 0x20;
param_6[2] = (uVar16 >> 0x20) << 0x10 | uVar11;
uVar15 = psllw(param_5[1],4);
uVar13 = psllw(param_4[1],4);
uVar23 = pmulhw(DAT_00834098,uVar13);
uVar18 = pmulhw(DAT_00834090,uVar15);
sVar22 = (short)uVar23 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar23 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar23 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar23 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar17 = (short)uVar18 - (short)DAT_008340c0;
sVar19 = (short)((ulonglong)uVar18 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar20 = (short)((ulonglong)uVar18 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar21 = (short)((ulonglong)uVar18 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar18 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar15 >> 0x10)),
CONCAT22((short)uVar13,(short)uVar15)),DAT_008340a0);
uVar13 = pmaddwd(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x30),
CONCAT22((short)((ulonglong)uVar13 >> 0x20),
(short)((ulonglong)uVar15 >> 0x20)))),DAT_008340a0);
iVar7 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar15 = CONCAT44((int)((ulonglong)uVar18 >> 0x20) - iVar7 >> 0xc,
(int)uVar18 - (int)DAT_008340c8 >> 0xc);
uVar13 = CONCAT44((int)((ulonglong)uVar13 >> 0x20) - iVar7 >> 0xc,
(int)uVar13 - (int)DAT_008340c8 >> 0xc);
uVar15 = packssdw(uVar15,uVar15);
param_4 = param_4 + 2;
uVar18 = packssdw(uVar13,uVar13);
param_5 = param_5 + 2;
uVar27 = (undefined2)((ulonglong)uVar15 >> 0x10);
uVar12 = (undefined2)((ulonglong)uVar18 >> 0x10);
uVar13 = param_3[0x10];
uVar29 = paddsw(CONCAT44(CONCAT22(sVar19,sVar19),CONCAT22(sVar17,sVar17)),uVar13);
uVar23 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar22,sVar22)),uVar13);
uVar13 = psubsw(uVar13,CONCAT44(CONCAT22(uVar27,uVar27),CONCAT22((short)uVar15,(short)uVar15)));
sVar17 = (short)uVar29;
sVar19 = (short)((ulonglong)uVar29 >> 0x10);
cVar5 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar29 >> 0x10) - (0xff < sVar19);
uVar28 = CONCAT11(cVar5,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar29 - (0xff < sVar17));
sVar22 = (short)((ulonglong)uVar29 >> 0x20);
sVar2 = (short)((ulonglong)uVar29 >> 0x30);
sVar17 = (short)uVar23;
sVar19 = (short)((ulonglong)uVar23 >> 0x10);
cVar6 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) - (0xff < sVar19);
uVar27 = CONCAT11(cVar6,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar23 - (0xff < sVar17));
sVar24 = (short)((ulonglong)uVar23 >> 0x20);
sVar3 = (short)((ulonglong)uVar23 >> 0x30);
sVar17 = (short)uVar13;
sVar19 = (short)((ulonglong)uVar13 >> 0x10);
sVar1 = (short)((ulonglong)uVar13 >> 0x20);
sVar4 = (short)((ulonglong)uVar13 >> 0x30);
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100)
* (char)((
ulonglong)uVar29 >> 0x30) - (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) *
(char)((ulonglong)uVar29 >> 0x20) -
(0xff < sVar22)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar16 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar3) *
(sVar3 < 0x100)
* (char)((
ulonglong)uVar23 >> 0x30) - (0xff < sVar3)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar6,uVar27)) >> 0x10),uVar27) & 0xffffffff00ff00ff;
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar13 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar13 -
(0xff < sVar17)));
uVar30 = (uVar10 | uVar11 << 8) & _DAT_008340f8;
uVar16 = (uVar11 | uVar16 << 8) & DAT_008340f0 | (uVar16 | uVar10 >> 8) & _DAT_008340f8;
param_6[3] = (uVar30 << 0x10 | uVar30) & _DAT_00834100 | (uVar16 << 0x20) >> 0x10;
uVar13 = param_3[0x11];
uVar15 = paddsw(CONCAT26(sVar21,CONCAT24(sVar21,CONCAT22(sVar20,sVar20))),uVar13);
uVar23 = paddsw(CONCAT26(sVar26,CONCAT24(sVar26,CONCAT22(sVar25,sVar25))),uVar13);
uVar13 = psubsw(uVar13,CONCAT44(CONCAT22(uVar12,uVar12),CONCAT22((short)uVar18,(short)uVar18)));
sVar17 = (short)uVar15;
sVar22 = (short)((ulonglong)uVar15 >> 0x10);
sVar1 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
sVar19 = (short)uVar23;
sVar24 = (short)((ulonglong)uVar23 >> 0x10);
cVar5 = (0 < sVar24) * (sVar24 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) - (0xff < sVar24);
uVar12 = CONCAT11(cVar5,(0 < sVar19) * (sVar19 < 0x100) * (char)uVar23 - (0xff < sVar19));
sVar2 = (short)((ulonglong)uVar23 >> 0x20);
sVar20 = (short)((ulonglong)uVar23 >> 0x30);
sVar19 = (short)uVar13;
sVar24 = (short)((ulonglong)uVar13 >> 0x10);
sVar3 = (short)((ulonglong)uVar13 >> 0x20);
sVar21 = (short)((ulonglong)uVar13 >> 0x30);
uVar8 = CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar15
>> 0x30) -
(0xff < sVar4)) << 0x30)
>> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar22) * (sVar22 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar22)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar15 - (0xff < sVar17)
));
uVar30 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar20) *
(sVar20 < 0x100)
* (char)((
ulonglong)uVar23 >> 0x30) - (0xff < sVar20)) <<
0x30) >> 0x28),
(0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) - (0xff < sVar2)
) << 0x20) >> 0x18),CONCAT12(cVar5,uVar12)) >>
0x10),uVar12) & 0xffffffff00ff00ff;
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)((ulonglong)
uVar13 >> 0x30)
- (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar3)) << 0x20) >> 0x18),
(0 < sVar24) * (sVar24 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar24)),
(ushort)(byte)((0 < sVar19) * (sVar19 < 0x100) * (char)uVar13 -
(0xff < sVar19)));
uVar10 = (uVar11 | uVar30 << 8) & DAT_008340f0;
uVar30 = ((uVar30 | uVar8 >> 8) & _DAT_008340f8) << 0x10 |
((ulonglong)uVar8 | uVar11 << 8) & _DAT_008340f8;
uVar11 = (uVar10 | uVar10 >> 0x10) & _DAT_00834100;
param_6[4] = uVar16 >> 0x20 | uVar30 << 0x20;
param_6[5] = (uVar30 >> 0x20) << 0x10 | uVar11;
param_6 = (ulonglong *)((int)param_6 + param_7);
param_3 = param_3 + 2;
iVar9 = iVar9 + -1;
} while (iVar9 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00658530 at 0x00658530 (size: 886) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00658530(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
char cVar1;
char cVar2;
int iVar3;
undefined4 in_EAX;
int iVar4;
ulonglong uVar5;
ulonglong uVar6;
short sVar7;
undefined2 uVar8;
short sVar11;
undefined8 uVar9;
ulonglong uVar10;
short sVar12;
short sVar15;
short sVar16;
undefined8 uVar13;
ulonglong uVar14;
short sVar17;
short sVar19;
short sVar20;
undefined8 uVar18;
short sVar21;
short sVar22;
short sVar24;
short sVar25;
undefined8 uVar23;
short sVar26;
undefined2 uVar27;
undefined8 uVar28;
ulonglong uVar29;
iVar4 = 8;
do {
uVar13 = psllw(*param_5,4);
uVar9 = psllw(*param_4,4);
uVar23 = pmulhw(DAT_00834098,uVar9);
uVar18 = pmulhw(DAT_00834090,uVar13);
sVar22 = (short)uVar23 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar23 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar23 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar23 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar17 = (short)uVar18 - (short)DAT_008340c0;
sVar19 = (short)((ulonglong)uVar18 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar20 = (short)((ulonglong)uVar18 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar21 = (short)((ulonglong)uVar18 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar18 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar9 >> 0x10),
(short)((ulonglong)uVar13 >> 0x10)),
CONCAT22((short)uVar9,(short)uVar13)),DAT_008340a0);
uVar9 = pmaddwd(CONCAT26((short)((ulonglong)uVar9 >> 0x30),
CONCAT24((short)((ulonglong)uVar13 >> 0x30),
CONCAT22((short)((ulonglong)uVar9 >> 0x20),
(short)((ulonglong)uVar13 >> 0x20)))),DAT_008340a0);
iVar3 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar13 = CONCAT44((int)((ulonglong)uVar18 >> 0x20) - iVar3 >> 0xc,
(int)uVar18 - (int)DAT_008340c8 >> 0xc);
uVar9 = CONCAT44((int)((ulonglong)uVar9 >> 0x20) - iVar3 >> 0xc,
(int)uVar9 - (int)DAT_008340c8 >> 0xc);
uVar18 = packssdw(uVar13,uVar13);
uVar13 = packssdw(uVar9,uVar9);
uVar8 = (undefined2)((ulonglong)uVar18 >> 0x10);
sVar15 = (short)((ulonglong)uVar13 >> 0x10);
uVar9 = *param_3;
uVar28 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar22,sVar22)),uVar9);
uVar23 = paddsw(CONCAT44(CONCAT22(sVar19,sVar19),CONCAT22(sVar17,sVar17)),uVar9);
uVar9 = psubsw(uVar9,CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar18,(short)uVar18)));
sVar17 = (short)uVar28;
sVar19 = (short)((ulonglong)uVar28 >> 0x10);
cVar1 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar28 >> 0x10) - (0xff < sVar19);
uVar27 = CONCAT11(cVar1,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar28 - (0xff < sVar17));
sVar22 = (short)((ulonglong)uVar28 >> 0x20);
sVar11 = (short)((ulonglong)uVar28 >> 0x30);
sVar17 = (short)uVar23;
sVar19 = (short)((ulonglong)uVar23 >> 0x10);
cVar2 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) - (0xff < sVar19);
uVar8 = CONCAT11(cVar2,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar23 - (0xff < sVar17));
sVar24 = (short)((ulonglong)uVar23 >> 0x20);
sVar12 = (short)((ulonglong)uVar23 >> 0x30);
sVar17 = (short)uVar9;
sVar19 = (short)((ulonglong)uVar9 >> 0x10);
sVar7 = (short)((ulonglong)uVar9 >> 0x20);
sVar16 = (short)((ulonglong)uVar9 >> 0x30);
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar11) *
(sVar11 < 0x100)
* (char)((
ulonglong)uVar28 >> 0x30) - (0xff < sVar11)) <<
0x30) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) *
(char)((ulonglong)uVar28 >> 0x20) -
(0xff < sVar22)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar27)) >> 0x10),uVar27) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar23 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar6 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar16) *
(sVar16 < 0x100) *
(char)((ulonglong)uVar9
>> 0x30) -
(0xff < sVar16)) << 0x30)
>> 0x28),
(0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar9 >> 0x20) -
(0xff < sVar7)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar9 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar9 - (0xff < sVar17))
);
uVar29 = (uVar5 | uVar6 << 8) & _DAT_008340f8;
uVar5 = (uVar6 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar5 >> 8) & _DAT_008340f8;
*param_6 = (uVar29 << 0x10 | uVar29) & _DAT_00834100 | (uVar5 << 0x20) >> 0x10;
uVar9 = param_3[1];
sVar17 = (short)uVar9;
sVar12 = sVar20 + sVar17;
sVar19 = (short)((ulonglong)uVar9 >> 0x10);
sVar20 = sVar20 + sVar19;
sVar22 = (short)((ulonglong)uVar9 >> 0x20);
sVar16 = sVar21 + sVar22;
sVar24 = (short)((ulonglong)uVar9 >> 0x30);
sVar21 = sVar21 + sVar24;
sVar7 = sVar25 + sVar17;
sVar25 = sVar25 + sVar19;
sVar11 = sVar26 + sVar22;
sVar26 = sVar26 + sVar24;
sVar17 = sVar17 - (short)uVar13;
sVar19 = sVar19 - (short)uVar13;
sVar22 = sVar22 - sVar15;
sVar24 = sVar24 - sVar15;
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25);
uVar8 = CONCAT11(cVar1,(0 < sVar7) * (sVar7 < 0x100) * (char)sVar7 - (0xff < sVar7));
uVar6 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)sVar21 -
(0xff < sVar21)) << 0x30)
>> 0x28),
(0 < sVar16) * (sVar16 < 0x100) * (char)sVar16
- (0xff < sVar16)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12)
));
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100)
* (char)sVar26 -
(0xff < sVar26))
<< 0x30) >> 0x28),
(0 < sVar11) * (sVar11 < 0x100) *
(char)sVar11 - (0xff < sVar11)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar8)) >> 0x10),uVar8) &
0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100) *
(char)sVar24 -
(0xff < sVar24)) << 0x30
) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) * (char)sVar22
- (0xff < sVar22)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)sVar19 - (0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)sVar17 -
(0xff < sVar17)));
uVar29 = (uVar14 | uVar6 << 8) & DAT_008340f0;
uVar14 = ((uVar6 | uVar10 >> 8) & _DAT_008340f8) << 0x10 |
(uVar10 | uVar14 << 8) & _DAT_008340f8;
uVar6 = (uVar29 | uVar29 >> 0x10) & _DAT_00834100;
param_6[1] = uVar5 >> 0x20 | uVar14 << 0x20;
param_6[2] = (uVar14 >> 0x20) << 0x10 | uVar6;
uVar13 = psllw(param_5[1],4);
uVar9 = psllw(param_4[1],4);
uVar23 = pmulhw(DAT_00834098,uVar9);
uVar18 = pmulhw(DAT_00834090,uVar13);
sVar22 = (short)uVar23 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar23 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar23 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar23 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar17 = (short)uVar18 - (short)DAT_008340c0;
sVar19 = (short)((ulonglong)uVar18 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar20 = (short)((ulonglong)uVar18 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar21 = (short)((ulonglong)uVar18 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar18 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar9 >> 0x10),
(short)((ulonglong)uVar13 >> 0x10)),
CONCAT22((short)uVar9,(short)uVar13)),DAT_008340a0);
uVar9 = pmaddwd(CONCAT26((short)((ulonglong)uVar9 >> 0x30),
CONCAT24((short)((ulonglong)uVar13 >> 0x30),
CONCAT22((short)((ulonglong)uVar9 >> 0x20),
(short)((ulonglong)uVar13 >> 0x20)))),DAT_008340a0);
iVar3 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar13 = CONCAT44((int)((ulonglong)uVar18 >> 0x20) - iVar3 >> 0xc,
(int)uVar18 - (int)DAT_008340c8 >> 0xc);
uVar9 = CONCAT44((int)((ulonglong)uVar9 >> 0x20) - iVar3 >> 0xc,
(int)uVar9 - (int)DAT_008340c8 >> 0xc);
uVar18 = packssdw(uVar13,uVar13);
param_4 = param_4 + 2;
uVar13 = packssdw(uVar9,uVar9);
param_5 = param_5 + 2;
uVar8 = (undefined2)((ulonglong)uVar18 >> 0x10);
sVar15 = (short)((ulonglong)uVar13 >> 0x10);
uVar9 = param_3[0x10];
uVar28 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar22,sVar22)),uVar9);
uVar23 = paddsw(CONCAT44(CONCAT22(sVar19,sVar19),CONCAT22(sVar17,sVar17)),uVar9);
uVar9 = psubsw(uVar9,CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar18,(short)uVar18)));
sVar17 = (short)uVar28;
sVar19 = (short)((ulonglong)uVar28 >> 0x10);
cVar1 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar28 >> 0x10) - (0xff < sVar19);
uVar27 = CONCAT11(cVar1,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar28 - (0xff < sVar17));
sVar22 = (short)((ulonglong)uVar28 >> 0x20);
sVar11 = (short)((ulonglong)uVar28 >> 0x30);
sVar17 = (short)uVar23;
sVar19 = (short)((ulonglong)uVar23 >> 0x10);
cVar2 = (0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar23 >> 0x10) - (0xff < sVar19);
uVar8 = CONCAT11(cVar2,(0 < sVar17) * (sVar17 < 0x100) * (char)uVar23 - (0xff < sVar17));
sVar24 = (short)((ulonglong)uVar23 >> 0x20);
sVar12 = (short)((ulonglong)uVar23 >> 0x30);
sVar17 = (short)uVar9;
sVar19 = (short)((ulonglong)uVar9 >> 0x10);
sVar7 = (short)((ulonglong)uVar9 >> 0x20);
sVar16 = (short)((ulonglong)uVar9 >> 0x30);
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar11) *
(sVar11 < 0x100)
* (char)((
ulonglong)uVar28 >> 0x30) - (0xff < sVar11)) <<
0x30) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) *
(char)((ulonglong)uVar28 >> 0x20) -
(0xff < sVar22)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar27)) >> 0x10),uVar27) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar23 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar23 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar6 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar16) *
(sVar16 < 0x100) *
(char)((ulonglong)uVar9
>> 0x30) -
(0xff < sVar16)) << 0x30)
>> 0x28),
(0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar9 >> 0x20) -
(0xff < sVar7)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar9 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)uVar9 - (0xff < sVar17))
);
uVar29 = (uVar5 | uVar6 << 8) & _DAT_008340f8;
uVar5 = (uVar6 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar5 >> 8) & _DAT_008340f8;
param_6[3] = (uVar29 << 0x10 | uVar29) & _DAT_00834100 | (uVar5 << 0x20) >> 0x10;
uVar9 = param_3[0x11];
sVar17 = (short)uVar9;
sVar12 = sVar20 + sVar17;
sVar19 = (short)((ulonglong)uVar9 >> 0x10);
sVar20 = sVar20 + sVar19;
sVar22 = (short)((ulonglong)uVar9 >> 0x20);
sVar16 = sVar21 + sVar22;
sVar24 = (short)((ulonglong)uVar9 >> 0x30);
sVar21 = sVar21 + sVar24;
sVar7 = sVar25 + sVar17;
sVar25 = sVar25 + sVar19;
sVar11 = sVar26 + sVar22;
sVar26 = sVar26 + sVar24;
sVar17 = sVar17 - (short)uVar13;
sVar19 = sVar19 - (short)uVar13;
sVar22 = sVar22 - sVar15;
sVar24 = sVar24 - sVar15;
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25);
uVar8 = CONCAT11(cVar1,(0 < sVar7) * (sVar7 < 0x100) * (char)sVar7 - (0xff < sVar7));
uVar6 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100) *
(char)sVar21 -
(0xff < sVar21)) << 0x30)
>> 0x28),
(0 < sVar16) * (sVar16 < 0x100) * (char)sVar16
- (0xff < sVar16)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12)
));
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100)
* (char)sVar26 -
(0xff < sVar26))
<< 0x30) >> 0x28),
(0 < sVar11) * (sVar11 < 0x100) *
(char)sVar11 - (0xff < sVar11)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar8)) >> 0x10),uVar8) &
0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100) *
(char)sVar24 -
(0xff < sVar24)) << 0x30
) >> 0x28),
(0 < sVar22) * (sVar22 < 0x100) * (char)sVar22
- (0xff < sVar22)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)sVar19 - (0xff < sVar19)),
(ushort)(byte)((0 < sVar17) * (sVar17 < 0x100) * (char)sVar17 -
(0xff < sVar17)));
uVar29 = (uVar14 | uVar6 << 8) & DAT_008340f0;
uVar14 = ((uVar6 | uVar10 >> 8) & _DAT_008340f8) << 0x10 |
(uVar10 | uVar14 << 8) & _DAT_008340f8;
uVar6 = (uVar29 | uVar29 >> 0x10) & _DAT_00834100;
param_6[4] = uVar5 >> 0x20 | uVar14 << 0x20;
param_6[5] = (uVar14 >> 0x20) << 0x10 | uVar6;
param_6 = (ulonglong *)((int)param_6 + param_7);
param_3 = param_3 + 2;
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_006588b0 at 0x006588B0 (size: 860) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_006588b0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
char cVar5;
char cVar6;
int iVar7;
uint7 uVar8;
undefined4 in_EAX;
int iVar9;
ulonglong uVar10;
ulonglong uVar11;
undefined2 uVar12;
undefined8 uVar13;
ulonglong uVar14;
ulonglong uVar15;
undefined8 uVar16;
ulonglong uVar17;
short sVar18;
short sVar20;
short sVar21;
undefined8 uVar19;
short sVar22;
short sVar23;
short sVar25;
short sVar26;
undefined8 uVar24;
short sVar27;
undefined2 uVar28;
undefined8 uVar29;
undefined2 uVar30;
undefined8 uVar31;
iVar9 = 8;
do {
uVar16 = psllw(*param_5,4);
uVar13 = psllw(*param_4,4);
uVar24 = pmulhw(DAT_00834098,uVar13);
uVar19 = pmulhw(DAT_00834090,uVar16);
sVar23 = (short)uVar24 - (short)DAT_008340b8;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar18 = (short)uVar19 - (short)DAT_008340c0;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar19 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar16 >> 0x10)),
CONCAT22((short)uVar13,(short)uVar16)),DAT_008340a0);
uVar16 = pmaddwd(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar16 >> 0x30),
CONCAT22((short)((ulonglong)uVar13 >> 0x20),
(short)((ulonglong)uVar16 >> 0x20)))),DAT_008340a0);
iVar7 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) - iVar7 >> 0xc,
(int)uVar19 - (int)DAT_008340c8 >> 0xc);
uVar16 = CONCAT44((int)((ulonglong)uVar16 >> 0x20) - iVar7 >> 0xc,
(int)uVar16 - (int)DAT_008340c8 >> 0xc);
uVar24 = packssdw(uVar19,uVar19);
uVar19 = packssdw(uVar16,uVar16);
uVar28 = (undefined2)((ulonglong)uVar24 >> 0x10);
uVar12 = (undefined2)((ulonglong)uVar19 >> 0x10);
uVar16 = *param_3;
uVar31 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar16);
uVar29 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar28,uVar28),CONCAT22((short)uVar24,(short)uVar24)));
sVar18 = (short)uVar31;
sVar20 = (short)((ulonglong)uVar31 >> 0x10);
cVar5 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar31 >> 0x10) - (0xff < sVar20);
uVar30 = CONCAT11(cVar5,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar31 - (0xff < sVar18));
sVar23 = (short)((ulonglong)uVar31 >> 0x20);
sVar2 = (short)((ulonglong)uVar31 >> 0x30);
sVar18 = (short)uVar29;
sVar20 = (short)((ulonglong)uVar29 >> 0x10);
cVar6 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar29 >> 0x10) - (0xff < sVar20);
uVar28 = CONCAT11(cVar6,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar29 - (0xff < sVar18));
sVar25 = (short)((ulonglong)uVar29 >> 0x20);
sVar3 = (short)((ulonglong)uVar29 >> 0x30);
sVar18 = (short)uVar16;
sVar20 = (short)((ulonglong)uVar16 >> 0x10);
sVar1 = (short)((ulonglong)uVar16 >> 0x20);
sVar4 = (short)((ulonglong)uVar16 >> 0x30);
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100)
* (char)((
ulonglong)uVar31 >> 0x30) - (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar31 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar30)) >> 0x10),uVar30) & 0xffffffff00ff00ff;
uVar17 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar3) *
(sVar3 < 0x100)
* (char)((
ulonglong)uVar29 >> 0x30) - (0xff < sVar3)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar29 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
CONCAT12(cVar6,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar16 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar16 -
(0xff < sVar18)));
uVar10 = (uVar14 | uVar17 << 8) & DAT_008340f0 | (uVar17 | uVar11 >> 8) & _DAT_008340f8;
uVar14 = pshufw(uVar13,(uVar11 | uVar14 << 8) & _DAT_008340f8,0x94);
*param_6 = uVar14 | (uVar10 << 0x20) >> 0x10;
uVar16 = param_3[1];
uVar24 = paddsw(CONCAT26(sVar27,CONCAT24(sVar27,CONCAT22(sVar26,sVar26))),uVar16);
uVar13 = paddsw(CONCAT26(sVar22,CONCAT24(sVar22,CONCAT22(sVar21,sVar21))),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar12,uVar12),CONCAT22((short)uVar19,(short)uVar19)));
sVar18 = (short)uVar24;
sVar23 = (short)((ulonglong)uVar24 >> 0x10);
sVar1 = (short)((ulonglong)uVar24 >> 0x20);
sVar4 = (short)((ulonglong)uVar24 >> 0x30);
sVar20 = (short)uVar13;
sVar25 = (short)((ulonglong)uVar13 >> 0x10);
cVar5 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar25);
uVar12 = CONCAT11(cVar5,(0 < sVar20) * (sVar20 < 0x100) * (char)uVar13 - (0xff < sVar20));
sVar2 = (short)((ulonglong)uVar13 >> 0x20);
sVar21 = (short)((ulonglong)uVar13 >> 0x30);
sVar20 = (short)uVar16;
sVar25 = (short)((ulonglong)uVar16 >> 0x10);
sVar3 = (short)((ulonglong)uVar16 >> 0x20);
sVar22 = (short)((ulonglong)uVar16 >> 0x30);
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar24 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) -
(0xff < sVar23)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar24 -
(0xff < sVar18)));
uVar15 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) - (0xff < sVar2)
) << 0x20) >> 0x18),CONCAT12(cVar5,uVar12)) >>
0x10),uVar12) & 0xffffffff00ff00ff;
uVar17 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)((ulonglong)
uVar16 >> 0x30)
- (0xff < sVar22)) <<
0x30) >> 0x28),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar3)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar25)),
(ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) * (char)uVar16 -
(0xff < sVar20)));
uVar11 = (uVar17 | uVar14 << 8) & DAT_008340f0;
uVar17 = ((uVar14 | uVar15 >> 8) & _DAT_008340f8) << 0x10 |
(uVar15 | uVar17 << 8) & _DAT_008340f8;
uVar14 = (uVar11 | uVar11 >> 0x10) & _DAT_00834100;
param_6[1] = uVar10 >> 0x20 | uVar17 << 0x20;
param_6[2] = (uVar17 >> 0x20) << 0x10 | uVar14;
uVar16 = psllw(param_5[1],4);
uVar13 = psllw(param_4[1],4);
uVar24 = pmulhw(DAT_00834098,uVar13);
uVar19 = pmulhw(DAT_00834090,uVar16);
sVar23 = (short)uVar24 - (short)DAT_008340b8;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar18 = (short)uVar19 - (short)DAT_008340c0;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar19 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar13 >> 0x10),
(short)((ulonglong)uVar16 >> 0x10)),
CONCAT22((short)uVar13,(short)uVar16)),DAT_008340a0);
uVar16 = pmaddwd(CONCAT26((short)((ulonglong)uVar13 >> 0x30),
CONCAT24((short)((ulonglong)uVar16 >> 0x30),
CONCAT22((short)((ulonglong)uVar13 >> 0x20),
(short)((ulonglong)uVar16 >> 0x20)))),DAT_008340a0);
iVar7 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) - iVar7 >> 0xc,
(int)uVar19 - (int)DAT_008340c8 >> 0xc);
uVar16 = CONCAT44((int)((ulonglong)uVar16 >> 0x20) - iVar7 >> 0xc,
(int)uVar16 - (int)DAT_008340c8 >> 0xc);
uVar24 = packssdw(uVar19,uVar19);
param_4 = param_4 + 2;
uVar19 = packssdw(uVar16,uVar16);
param_5 = param_5 + 2;
uVar28 = (undefined2)((ulonglong)uVar24 >> 0x10);
uVar12 = (undefined2)((ulonglong)uVar19 >> 0x10);
uVar16 = param_3[0x10];
uVar31 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar16);
uVar29 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar28,uVar28),CONCAT22((short)uVar24,(short)uVar24)));
sVar18 = (short)uVar31;
sVar20 = (short)((ulonglong)uVar31 >> 0x10);
cVar5 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar31 >> 0x10) - (0xff < sVar20);
uVar30 = CONCAT11(cVar5,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar31 - (0xff < sVar18));
sVar23 = (short)((ulonglong)uVar31 >> 0x20);
sVar2 = (short)((ulonglong)uVar31 >> 0x30);
sVar18 = (short)uVar29;
sVar20 = (short)((ulonglong)uVar29 >> 0x10);
cVar6 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar29 >> 0x10) - (0xff < sVar20);
uVar28 = CONCAT11(cVar6,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar29 - (0xff < sVar18));
sVar25 = (short)((ulonglong)uVar29 >> 0x20);
sVar3 = (short)((ulonglong)uVar29 >> 0x30);
sVar18 = (short)uVar16;
sVar20 = (short)((ulonglong)uVar16 >> 0x10);
sVar1 = (short)((ulonglong)uVar16 >> 0x20);
sVar4 = (short)((ulonglong)uVar16 >> 0x30);
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100)
* (char)((
ulonglong)uVar31 >> 0x30) - (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar31 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar30)) >> 0x10),uVar30) & 0xffffffff00ff00ff;
uVar17 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar3) *
(sVar3 < 0x100)
* (char)((
ulonglong)uVar29 >> 0x30) - (0xff < sVar3)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar29 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
CONCAT12(cVar6,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)
uVar16 >> 0x30)
- (0xff < sVar4)) <<
0x30) >> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar16 -
(0xff < sVar18)));
uVar17 = (uVar14 | uVar17 << 8) & DAT_008340f0 | (uVar17 | uVar10 >> 8) & _DAT_008340f8;
uVar14 = pshufw(uVar13,(uVar10 | uVar14 << 8) & _DAT_008340f8,0x94);
param_6[3] = uVar14 | (uVar17 << 0x20) >> 0x10;
uVar16 = param_3[0x11];
uVar13 = paddsw(CONCAT26(sVar22,CONCAT24(sVar22,CONCAT22(sVar21,sVar21))),uVar16);
uVar24 = paddsw(CONCAT26(sVar27,CONCAT24(sVar27,CONCAT22(sVar26,sVar26))),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar12,uVar12),CONCAT22((short)uVar19,(short)uVar19)));
sVar18 = (short)uVar13;
sVar23 = (short)((ulonglong)uVar13 >> 0x10);
sVar1 = (short)((ulonglong)uVar13 >> 0x20);
sVar4 = (short)((ulonglong)uVar13 >> 0x30);
sVar20 = (short)uVar24;
sVar25 = (short)((ulonglong)uVar24 >> 0x10);
cVar5 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar25);
uVar12 = CONCAT11(cVar5,(0 < sVar20) * (sVar20 < 0x100) * (char)uVar24 - (0xff < sVar20));
sVar2 = (short)((ulonglong)uVar24 >> 0x20);
sVar21 = (short)((ulonglong)uVar24 >> 0x30);
sVar20 = (short)uVar16;
sVar25 = (short)((ulonglong)uVar16 >> 0x10);
sVar3 = (short)((ulonglong)uVar16 >> 0x20);
sVar22 = (short)((ulonglong)uVar16 >> 0x30);
uVar8 = CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar13
>> 0x30) -
(0xff < sVar4)) << 0x30)
>> 0x28),
(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar1)) << 0x20) >> 0x18),
(0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) -
(0xff < sVar23)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar13 - (0xff < sVar18)
));
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100)
* (char)((
ulonglong)uVar24 >> 0x30) - (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) - (0xff < sVar2)
) << 0x20) >> 0x18),CONCAT12(cVar5,uVar12)) >>
0x10),uVar12) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)((ulonglong)
uVar16 >> 0x30)
- (0xff < sVar22)) <<
0x30) >> 0x28),
(0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar3)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar25)),
(ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) * (char)uVar16 -
(0xff < sVar20)));
uVar10 = (uVar14 | uVar11 << 8) & DAT_008340f0;
uVar11 = ((uVar11 | uVar8 >> 8) & _DAT_008340f8) << 0x10 |
((ulonglong)uVar8 | uVar14 << 8) & _DAT_008340f8;
uVar14 = (uVar10 | uVar10 >> 0x10) & _DAT_00834100;
param_6[4] = uVar17 >> 0x20 | uVar11 << 0x20;
param_6[5] = (uVar11 >> 0x20) << 0x10 | uVar14;
param_6 = (ulonglong *)((int)param_6 + param_7);
param_3 = param_3 + 2;
iVar9 = iVar9 + -1;
} while (iVar9 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00658c10 at 0x00658C10 (size: 860) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00658c10(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
char cVar1;
char cVar2;
int iVar3;
undefined4 in_EAX;
int iVar4;
ulonglong uVar5;
ulonglong uVar6;
ulonglong uVar7;
short sVar8;
undefined2 uVar9;
short sVar13;
undefined8 uVar10;
ulonglong uVar11;
ulonglong uVar12;
short sVar14;
short sVar16;
short sVar17;
undefined8 uVar15;
short sVar18;
short sVar20;
short sVar21;
undefined8 uVar19;
short sVar22;
short sVar23;
short sVar25;
short sVar26;
undefined8 uVar24;
short sVar27;
undefined8 uVar28;
undefined2 uVar29;
undefined8 uVar30;
iVar4 = 8;
do {
uVar15 = psllw(*param_5,4);
uVar10 = psllw(*param_4,4);
uVar24 = pmulhw(DAT_00834098,uVar10);
uVar19 = pmulhw(DAT_00834090,uVar15);
sVar23 = (short)uVar24 - (short)DAT_008340b8;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar18 = (short)uVar19 - (short)DAT_008340c0;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar19 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar15 >> 0x10)),
CONCAT22((short)uVar10,(short)uVar15)),DAT_008340a0);
uVar15 = pmaddwd(CONCAT26((short)((ulonglong)uVar10 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x30),
CONCAT22((short)((ulonglong)uVar10 >> 0x20),
(short)((ulonglong)uVar15 >> 0x20)))),DAT_008340a0);
iVar3 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) - iVar3 >> 0xc,
(int)uVar19 - (int)DAT_008340c8 >> 0xc);
uVar15 = CONCAT44((int)((ulonglong)uVar15 >> 0x20) - iVar3 >> 0xc,
(int)uVar15 - (int)DAT_008340c8 >> 0xc);
uVar24 = packssdw(uVar19,uVar19);
uVar19 = packssdw(uVar15,uVar15);
uVar9 = (undefined2)((ulonglong)uVar24 >> 0x10);
sVar16 = (short)((ulonglong)uVar19 >> 0x10);
uVar15 = *param_3;
uVar30 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar15);
uVar28 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar15);
uVar15 = psubsw(uVar15,CONCAT44(CONCAT22(uVar9,uVar9),CONCAT22((short)uVar24,(short)uVar24)));
sVar18 = (short)uVar30;
sVar20 = (short)((ulonglong)uVar30 >> 0x10);
cVar1 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar30 >> 0x10) - (0xff < sVar20);
uVar29 = CONCAT11(cVar1,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar30 - (0xff < sVar18));
sVar23 = (short)((ulonglong)uVar30 >> 0x20);
sVar13 = (short)((ulonglong)uVar30 >> 0x30);
sVar18 = (short)uVar28;
sVar20 = (short)((ulonglong)uVar28 >> 0x10);
cVar2 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar28 >> 0x10) - (0xff < sVar20);
uVar9 = CONCAT11(cVar2,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar28 - (0xff < sVar18));
sVar25 = (short)((ulonglong)uVar28 >> 0x20);
sVar14 = (short)((ulonglong)uVar28 >> 0x30);
sVar18 = (short)uVar15;
sVar20 = (short)((ulonglong)uVar15 >> 0x10);
sVar8 = (short)((ulonglong)uVar15 >> 0x20);
sVar17 = (short)((ulonglong)uVar15 >> 0x30);
uVar6 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar13) *
(sVar13 < 0x100)
* (char)((
ulonglong)uVar30 >> 0x30) - (0xff < sVar13)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar30 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar29)) >> 0x10),uVar29) & 0xffffffff00ff00ff;
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100)
* (char)((
ulonglong)uVar28 >> 0x30) - (0xff < sVar14)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar28 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar9)) >> 0x10),uVar9) & 0xffffffff00ff00ff;
uVar7 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar17) *
(sVar17 < 0x100) *
(char)((ulonglong)uVar15
>> 0x30) -
(0xff < sVar17)) << 0x30)
>> 0x28),
(0 < sVar8) * (sVar8 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar8)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar15 - (0xff < sVar18)
));
uVar11 = pshufw(uVar10,(uVar6 | uVar7 << 8) & _DAT_008340f8,0x94);
uVar5 = (uVar7 | uVar5 << 8) & DAT_008340f0 | (uVar5 | uVar6 >> 8) & _DAT_008340f8;
*param_6 = uVar11 | (uVar5 << 0x20) >> 0x10;
uVar15 = param_3[1];
sVar18 = (short)uVar15;
sVar14 = sVar21 + sVar18;
sVar20 = (short)((ulonglong)uVar15 >> 0x10);
sVar21 = sVar21 + sVar20;
sVar23 = (short)((ulonglong)uVar15 >> 0x20);
sVar17 = sVar22 + sVar23;
sVar25 = (short)((ulonglong)uVar15 >> 0x30);
sVar22 = sVar22 + sVar25;
sVar8 = sVar26 + sVar18;
sVar26 = sVar26 + sVar20;
sVar13 = sVar27 + sVar23;
sVar27 = sVar27 + sVar25;
sVar18 = sVar18 - (short)uVar19;
sVar20 = sVar20 - (short)uVar19;
sVar23 = sVar23 - sVar16;
sVar25 = sVar25 - sVar16;
cVar1 = (0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26);
uVar9 = CONCAT11(cVar1,(0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 - (0xff < sVar8));
uVar7 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)sVar22 -
(0xff < sVar22)) << 0x30)
>> 0x28),
(0 < sVar17) * (sVar17 < 0x100) * (char)sVar17
- (0xff < sVar17)) << 0x20) >> 0x18),
(0 < sVar21) * (sVar21 < 0x100) * (char)sVar21 - (0xff < sVar21)),
(ushort)(byte)((0 < sVar14) * (sVar14 < 0x100) * (char)sVar14 - (0xff < sVar14)
));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar27) *
(sVar27 < 0x100)
* (char)sVar27 -
(0xff < sVar27))
<< 0x30) >> 0x28),
(0 < sVar13) * (sVar13 < 0x100) *
(char)sVar13 - (0xff < sVar13)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar9)) >> 0x10),uVar9) &
0xffffffff00ff00ff;
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100) *
(char)sVar25 -
(0xff < sVar25)) << 0x30
) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) * (char)sVar23
- (0xff < sVar23)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)sVar18 -
(0xff < sVar18)));
uVar6 = (uVar11 | uVar7 << 8) & DAT_008340f0;
uVar11 = ((uVar7 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar11 << 8) & _DAT_008340f8;
uVar7 = (uVar6 | uVar6 >> 0x10) & _DAT_00834100;
param_6[1] = uVar5 >> 0x20 | uVar11 << 0x20;
param_6[2] = (uVar11 >> 0x20) << 0x10 | uVar7;
uVar15 = psllw(param_5[1],4);
uVar10 = psllw(param_4[1],4);
uVar24 = pmulhw(DAT_00834098,uVar10);
uVar19 = pmulhw(DAT_00834090,uVar15);
sVar23 = (short)uVar24 - (short)DAT_008340b8;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar18 = (short)uVar19 - (short)DAT_008340c0;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar19 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar15 >> 0x10)),
CONCAT22((short)uVar10,(short)uVar15)),DAT_008340a0);
uVar15 = pmaddwd(CONCAT26((short)((ulonglong)uVar10 >> 0x30),
CONCAT24((short)((ulonglong)uVar15 >> 0x30),
CONCAT22((short)((ulonglong)uVar10 >> 0x20),
(short)((ulonglong)uVar15 >> 0x20)))),DAT_008340a0);
iVar3 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar19 = CONCAT44((int)((ulonglong)uVar19 >> 0x20) - iVar3 >> 0xc,
(int)uVar19 - (int)DAT_008340c8 >> 0xc);
uVar15 = CONCAT44((int)((ulonglong)uVar15 >> 0x20) - iVar3 >> 0xc,
(int)uVar15 - (int)DAT_008340c8 >> 0xc);
uVar24 = packssdw(uVar19,uVar19);
param_4 = param_4 + 2;
uVar19 = packssdw(uVar15,uVar15);
param_5 = param_5 + 2;
uVar9 = (undefined2)((ulonglong)uVar24 >> 0x10);
sVar16 = (short)((ulonglong)uVar19 >> 0x10);
uVar15 = param_3[0x10];
uVar30 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar15);
uVar28 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar15);
uVar15 = psubsw(uVar15,CONCAT44(CONCAT22(uVar9,uVar9),CONCAT22((short)uVar24,(short)uVar24)));
sVar18 = (short)uVar30;
sVar20 = (short)((ulonglong)uVar30 >> 0x10);
cVar1 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar30 >> 0x10) - (0xff < sVar20);
uVar29 = CONCAT11(cVar1,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar30 - (0xff < sVar18));
sVar23 = (short)((ulonglong)uVar30 >> 0x20);
sVar13 = (short)((ulonglong)uVar30 >> 0x30);
sVar18 = (short)uVar28;
sVar20 = (short)((ulonglong)uVar28 >> 0x10);
cVar2 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar28 >> 0x10) - (0xff < sVar20);
uVar9 = CONCAT11(cVar2,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar28 - (0xff < sVar18));
sVar25 = (short)((ulonglong)uVar28 >> 0x20);
sVar14 = (short)((ulonglong)uVar28 >> 0x30);
sVar18 = (short)uVar15;
sVar20 = (short)((ulonglong)uVar15 >> 0x10);
sVar8 = (short)((ulonglong)uVar15 >> 0x20);
sVar17 = (short)((ulonglong)uVar15 >> 0x30);
uVar6 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar13) *
(sVar13 < 0x100)
* (char)((
ulonglong)uVar30 >> 0x30) - (0xff < sVar13)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar30 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar29)) >> 0x10),uVar29) & 0xffffffff00ff00ff;
uVar5 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100)
* (char)((
ulonglong)uVar28 >> 0x30) - (0xff < sVar14)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar28 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar9)) >> 0x10),uVar9) & 0xffffffff00ff00ff;
uVar7 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar17) *
(sVar17 < 0x100) *
(char)((ulonglong)uVar15
>> 0x30) -
(0xff < sVar17)) << 0x30)
>> 0x28),
(0 < sVar8) * (sVar8 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) -
(0xff < sVar8)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar15 - (0xff < sVar18)
));
uVar11 = pshufw(uVar10,(uVar6 | uVar7 << 8) & _DAT_008340f8,0x94);
uVar5 = (uVar7 | uVar5 << 8) & DAT_008340f0 | (uVar5 | uVar6 >> 8) & _DAT_008340f8;
param_6[3] = uVar11 | (uVar5 << 0x20) >> 0x10;
uVar15 = param_3[0x11];
sVar18 = (short)uVar15;
sVar14 = sVar21 + sVar18;
sVar20 = (short)((ulonglong)uVar15 >> 0x10);
sVar21 = sVar21 + sVar20;
sVar23 = (short)((ulonglong)uVar15 >> 0x20);
sVar17 = sVar22 + sVar23;
sVar25 = (short)((ulonglong)uVar15 >> 0x30);
sVar22 = sVar22 + sVar25;
sVar8 = sVar26 + sVar18;
sVar26 = sVar26 + sVar20;
sVar13 = sVar27 + sVar23;
sVar27 = sVar27 + sVar25;
sVar18 = sVar18 - (short)uVar19;
sVar20 = sVar20 - (short)uVar19;
sVar23 = sVar23 - sVar16;
sVar25 = sVar25 - sVar16;
cVar1 = (0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26);
uVar9 = CONCAT11(cVar1,(0 < sVar8) * (sVar8 < 0x100) * (char)sVar8 - (0xff < sVar8));
uVar7 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)sVar22 -
(0xff < sVar22)) << 0x30)
>> 0x28),
(0 < sVar17) * (sVar17 < 0x100) * (char)sVar17
- (0xff < sVar17)) << 0x20) >> 0x18),
(0 < sVar21) * (sVar21 < 0x100) * (char)sVar21 - (0xff < sVar21)),
(ushort)(byte)((0 < sVar14) * (sVar14 < 0x100) * (char)sVar14 - (0xff < sVar14)
));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar27) *
(sVar27 < 0x100)
* (char)sVar27 -
(0xff < sVar27))
<< 0x30) >> 0x28),
(0 < sVar13) * (sVar13 < 0x100) *
(char)sVar13 - (0xff < sVar13)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar9)) >> 0x10),uVar9) &
0xffffffff00ff00ff;
uVar11 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100) *
(char)sVar25 -
(0xff < sVar25)) << 0x30
) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) * (char)sVar23
- (0xff < sVar23)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)sVar18 -
(0xff < sVar18)));
uVar6 = (uVar11 | uVar7 << 8) & DAT_008340f0;
uVar11 = ((uVar7 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar11 << 8) & _DAT_008340f8;
uVar7 = (uVar6 | uVar6 >> 0x10) & _DAT_00834100;
param_6[4] = uVar5 >> 0x20 | uVar11 << 0x20;
param_6[5] = (uVar11 >> 0x20) << 0x10 | uVar7;
param_6 = (ulonglong *)((int)param_6 + param_7);
param_3 = param_3 + 2;
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00658f70 at 0x00658F70 (size: 790) ---
undefined8 __fastcall
FUN_00658f70(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
short sVar7;
char cVar8;
undefined4 uVar9;
ulonglong uVar10;
undefined4 in_EAX;
int iVar11;
undefined8 uVar12;
ulonglong uVar13;
undefined8 uVar14;
short sVar15;
short sVar18;
short sVar19;
undefined8 uVar16;
short sVar20;
ulonglong uVar17;
short sVar21;
short sVar23;
short sVar24;
undefined8 uVar22;
short sVar25;
undefined2 uVar26;
undefined2 uVar27;
iVar11 = 8;
do {
uVar10 = DAT_00834140;
uVar12 = psllw(*param_5,4);
uVar14 = psllw(*param_4,4);
uVar16 = pmulhw(DAT_00834108,uVar12);
uVar22 = pmulhw(DAT_00834110,uVar14);
sVar15 = (short)uVar16 - (short)DAT_00834130;
sVar18 = (short)((ulonglong)uVar16 >> 0x10) - (short)((ulonglong)DAT_00834130 >> 0x10);
sVar19 = (short)((ulonglong)uVar16 >> 0x20) - (short)((ulonglong)DAT_00834130 >> 0x20);
sVar20 = (short)((ulonglong)uVar16 >> 0x30) - (short)((ulonglong)DAT_00834130 >> 0x30);
sVar21 = (short)uVar22 - (short)DAT_00834128;
sVar23 = (short)((ulonglong)uVar22 >> 0x10) - (short)((ulonglong)DAT_00834128 >> 0x10);
sVar24 = (short)((ulonglong)uVar22 >> 0x20) - (short)((ulonglong)DAT_00834128 >> 0x20);
sVar25 = (short)((ulonglong)uVar22 >> 0x30) - (short)((ulonglong)DAT_00834128 >> 0x30);
uVar16 = *param_3;
uVar14 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar12 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar14 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar12 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar14 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar12 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar14 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar12 >> 4) +
(short)DAT_00834118 * ((ushort)uVar14 >> 4)) -
(short)DAT_00834138))),8);
uVar26 = (undefined2)((ulonglong)uVar14 >> 0x10);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar15,sVar15)),uVar16);
uVar22 = paddsw(CONCAT44(CONCAT22(sVar23,sVar23),CONCAT22(sVar21,sVar21)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar26,uVar26),CONCAT22((short)uVar14,(short)uVar14)));
sVar15 = (short)uVar12;
sVar23 = (short)((ulonglong)uVar12 >> 0x10);
sVar2 = (short)((ulonglong)uVar12 >> 0x20);
sVar5 = (short)((ulonglong)uVar12 >> 0x30);
sVar18 = (short)uVar22;
sVar21 = (short)((ulonglong)uVar22 >> 0x10);
cVar8 = (0 < sVar21) * (sVar21 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar21);
sVar3 = (short)((ulonglong)uVar22 >> 0x20);
sVar6 = (short)((ulonglong)uVar22 >> 0x30);
sVar21 = (short)uVar16;
sVar1 = (short)((ulonglong)uVar16 >> 0x10);
sVar4 = (short)((ulonglong)uVar16 >> 0x20);
sVar7 = (short)((ulonglong)uVar16 >> 0x30);
uVar17 = (ulonglong)
CONCAT12(cVar8,CONCAT11(cVar8,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar22 -
(0xff < sVar18))) & 0xffffffff00ff00ff;
uVar9 = (undefined4)
(((uint7)(byte)((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar4)) << 0x20) >> 0x18);
uVar13 = (ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar12 >> 0x30) -
(0xff < sVar5),
(uint)(byte)((0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar12 >> 0x20)
- (0xff < sVar2))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar6) * (sVar6 < 0x100) * (char)((ulonglong)uVar22 >> 0x30)
- (0xff < sVar6)) << 0x10,
(ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) - (0xff < sVar3))) << 0x10 |
CONCAT44((uint)(byte)((0 < sVar7) * (sVar7 < 0x100) * (char)((ulonglong)uVar16 >> 0x30)
- (0xff < sVar7)) << 8,uVar9) | DAT_00834140;
*param_6 = (ulonglong)
CONCAT14((0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar23),
(uint)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar12 -
(0xff < sVar15))) |
CONCAT44((uint)(ushort)(uVar17 >> 0x10) << 0x10,(int)uVar17 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar9,(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar1)) << 8,
(uint)(byte)((0 < sVar21) * (sVar21 < 0x100) * (char)uVar16 -
(0xff < sVar21)) << 8) | DAT_00834140;
param_6[1] = uVar13;
uVar16 = param_3[1];
uVar27 = (undefined2)((ulonglong)uVar14 >> 0x30);
uVar26 = (undefined2)((ulonglong)uVar14 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar19,sVar19)),uVar16);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar24,sVar24)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar27,uVar27),CONCAT22(uVar26,uVar26)));
sVar15 = (short)uVar12;
sVar23 = (short)((ulonglong)uVar12 >> 0x10);
sVar2 = (short)((ulonglong)uVar12 >> 0x20);
sVar5 = (short)((ulonglong)uVar12 >> 0x30);
sVar18 = (short)uVar14;
sVar21 = (short)((ulonglong)uVar14 >> 0x10);
cVar8 = (0 < sVar21) * (sVar21 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar21);
sVar3 = (short)((ulonglong)uVar14 >> 0x20);
sVar6 = (short)((ulonglong)uVar14 >> 0x30);
sVar21 = (short)uVar16;
sVar1 = (short)((ulonglong)uVar16 >> 0x10);
sVar4 = (short)((ulonglong)uVar16 >> 0x20);
sVar7 = (short)((ulonglong)uVar16 >> 0x30);
uVar13 = (ulonglong)
CONCAT12(cVar8,CONCAT11(cVar8,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar14 -
(0xff < sVar18))) & 0xffffffff00ff00ff;
uVar9 = (undefined4)
(((uint7)(byte)((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar4)) << 0x20) >> 0x18);
param_6[2] = (ulonglong)
CONCAT14((0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar23),
(uint)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar12 -
(0xff < sVar15))) |
CONCAT44((uint)(ushort)(uVar13 >> 0x10) << 0x10,(int)uVar13 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar9,(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar1)) << 8,
(uint)(byte)((0 < sVar21) * (sVar21 < 0x100) * (char)uVar16 -
(0xff < sVar21)) << 8) | uVar10;
param_6[3] = (ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar12 >> 0x30) -
(0xff < sVar5),
(uint)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar12 >> 0x20) - (0xff < sVar2))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar6)) << 0x10,
(ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar3))) <<
0x10 | CONCAT44((uint)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar16 >> 0x30) - (0xff < sVar7)) <<
8,uVar9) | uVar10;
uVar10 = DAT_00834140;
uVar12 = psllw(param_5[1],4);
uVar14 = psllw(param_4[1],4);
uVar16 = pmulhw(DAT_00834108,uVar12);
uVar22 = pmulhw(DAT_00834110,uVar14);
sVar15 = (short)uVar16 - (short)DAT_00834130;
sVar18 = (short)((ulonglong)uVar16 >> 0x10) - (short)((ulonglong)DAT_00834130 >> 0x10);
sVar19 = (short)((ulonglong)uVar16 >> 0x20) - (short)((ulonglong)DAT_00834130 >> 0x20);
sVar20 = (short)((ulonglong)uVar16 >> 0x30) - (short)((ulonglong)DAT_00834130 >> 0x30);
sVar21 = (short)uVar22 - (short)DAT_00834128;
sVar23 = (short)((ulonglong)uVar22 >> 0x10) - (short)((ulonglong)DAT_00834128 >> 0x10);
sVar24 = (short)((ulonglong)uVar22 >> 0x20) - (short)((ulonglong)DAT_00834128 >> 0x20);
sVar25 = (short)((ulonglong)uVar22 >> 0x30) - (short)((ulonglong)DAT_00834128 >> 0x30);
uVar16 = param_3[0x10];
uVar14 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar12 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar14 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar12 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar14 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar12 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar14 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar12 >> 4) +
(short)DAT_00834118 * ((ushort)uVar14 >> 4)) -
(short)DAT_00834138))),8);
uVar26 = (undefined2)((ulonglong)uVar14 >> 0x10);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar15,sVar15)),uVar16);
uVar22 = paddsw(CONCAT44(CONCAT22(sVar23,sVar23),CONCAT22(sVar21,sVar21)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar26,uVar26),CONCAT22((short)uVar14,(short)uVar14)));
sVar15 = (short)uVar12;
sVar23 = (short)((ulonglong)uVar12 >> 0x10);
sVar2 = (short)((ulonglong)uVar12 >> 0x20);
sVar5 = (short)((ulonglong)uVar12 >> 0x30);
sVar18 = (short)uVar22;
sVar21 = (short)((ulonglong)uVar22 >> 0x10);
cVar8 = (0 < sVar21) * (sVar21 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar21);
sVar3 = (short)((ulonglong)uVar22 >> 0x20);
sVar6 = (short)((ulonglong)uVar22 >> 0x30);
sVar21 = (short)uVar16;
sVar1 = (short)((ulonglong)uVar16 >> 0x10);
sVar4 = (short)((ulonglong)uVar16 >> 0x20);
sVar7 = (short)((ulonglong)uVar16 >> 0x30);
uVar17 = (ulonglong)
CONCAT12(cVar8,CONCAT11(cVar8,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar22 -
(0xff < sVar18))) & 0xffffffff00ff00ff;
uVar9 = (undefined4)
(((uint7)(byte)((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar4)) << 0x20) >> 0x18);
uVar13 = (ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar12 >> 0x30) -
(0xff < sVar5),
(uint)(byte)((0 < sVar2) * (sVar2 < 0x100) * (char)((ulonglong)uVar12 >> 0x20)
- (0xff < sVar2))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar6) * (sVar6 < 0x100) * (char)((ulonglong)uVar22 >> 0x30)
- (0xff < sVar6)) << 0x10,
(ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) - (0xff < sVar3))) << 0x10 |
CONCAT44((uint)(byte)((0 < sVar7) * (sVar7 < 0x100) * (char)((ulonglong)uVar16 >> 0x30)
- (0xff < sVar7)) << 8,uVar9) | DAT_00834140;
param_6[4] = (ulonglong)
CONCAT14((0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar23),
(uint)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar12 -
(0xff < sVar15))) |
CONCAT44((uint)(ushort)(uVar17 >> 0x10) << 0x10,(int)uVar17 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar9,(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar1)) << 8,
(uint)(byte)((0 < sVar21) * (sVar21 < 0x100) * (char)uVar16 -
(0xff < sVar21)) << 8) | DAT_00834140;
param_6[5] = uVar13;
uVar16 = param_3[0x11];
uVar27 = (undefined2)((ulonglong)uVar14 >> 0x30);
uVar26 = (undefined2)((ulonglong)uVar14 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar19,sVar19)),uVar16);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar24,sVar24)),uVar16);
uVar16 = psubsw(uVar16,CONCAT44(CONCAT22(uVar27,uVar27),CONCAT22(uVar26,uVar26)));
sVar15 = (short)uVar12;
sVar23 = (short)((ulonglong)uVar12 >> 0x10);
sVar2 = (short)((ulonglong)uVar12 >> 0x20);
sVar5 = (short)((ulonglong)uVar12 >> 0x30);
sVar18 = (short)uVar14;
sVar21 = (short)((ulonglong)uVar14 >> 0x10);
cVar8 = (0 < sVar21) * (sVar21 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar21);
sVar3 = (short)((ulonglong)uVar14 >> 0x20);
sVar6 = (short)((ulonglong)uVar14 >> 0x30);
sVar21 = (short)uVar16;
sVar1 = (short)((ulonglong)uVar16 >> 0x10);
sVar4 = (short)((ulonglong)uVar16 >> 0x20);
sVar7 = (short)((ulonglong)uVar16 >> 0x30);
uVar13 = (ulonglong)
CONCAT12(cVar8,CONCAT11(cVar8,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar14 -
(0xff < sVar18))) & 0xffffffff00ff00ff;
uVar9 = (undefined4)
(((uint7)(byte)((0 < sVar4) * (sVar4 < 0x100) * (char)((ulonglong)uVar16 >> 0x20) -
(0xff < sVar4)) << 0x20) >> 0x18);
param_6[6] = (ulonglong)
CONCAT14((0 < sVar23) * (sVar23 < 0x100) * (char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar23),
(uint)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar12 -
(0xff < sVar15))) |
CONCAT44((uint)(ushort)(uVar13 >> 0x10) << 0x10,(int)uVar13 << 0x10) |
CONCAT44((uint)(ushort)CONCAT41(uVar9,(0 < sVar1) * (sVar1 < 0x100) *
(char)((ulonglong)uVar16 >> 0x10) -
(0xff < sVar1)) << 8,
(uint)(byte)((0 < sVar21) * (sVar21 < 0x100) * (char)uVar16 -
(0xff < sVar21)) << 8) | uVar10;
param_6[7] = (ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar12 >> 0x30) -
(0xff < sVar5),
(uint)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar12 >> 0x20) - (0xff < sVar2))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar6) * (sVar6 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar6)) << 0x10,
(ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar3))) <<
0x10 | CONCAT44((uint)(byte)((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar16 >> 0x30) - (0xff < sVar7)) <<
8,uVar9) | uVar10;
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_6 = (ulonglong *)((int)param_6 + param_7);
iVar11 = iVar11 + -1;
} while (iVar11 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00659290 at 0x00659290 (size: 960) ---
undefined8 __fastcall
FUN_00659290(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,undefined4 param_6,ulonglong *param_7,int param_8)
{
ulonglong uVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
short sVar6;
uint uVar7;
ushort uVar8;
ushort uVar9;
ushort uVar10;
undefined4 in_EAX;
int iVar11;
undefined8 uVar12;
short sVar13;
short sVar15;
short sVar16;
undefined8 uVar14;
short sVar17;
short sVar18;
short sVar20;
short sVar21;
undefined8 uVar19;
short sVar22;
short sVar23;
short sVar25;
ushort uVar26;
short sVar27;
undefined8 uVar24;
short sVar28;
undefined2 uVar29;
undefined2 uVar30;
iVar11 = 8;
do {
uVar12 = psllw(*param_5,4);
uVar14 = psllw(*param_4,4);
uVar19 = pmulhw(DAT_00834108,uVar12);
uVar24 = pmulhw(DAT_00834110,uVar14);
sVar18 = (short)uVar19 - (short)DAT_00834130;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_00834130 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_00834130 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_00834130 >> 0x30);
sVar23 = (short)uVar24 - (short)DAT_00834128;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_00834128 >> 0x10);
sVar27 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_00834128 >> 0x20);
sVar28 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_00834128 >> 0x30);
uVar19 = *param_3;
uVar14 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar12 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar14 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar12 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar14 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar12 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar14 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar12 >> 4) +
(short)DAT_00834118 * ((ushort)uVar14 >> 4)) -
(short)DAT_00834138))),8);
uVar29 = (undefined2)((ulonglong)uVar14 >> 0x10);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar19);
uVar24 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar19);
uVar19 = psubsw(uVar19,CONCAT44(CONCAT22(uVar29,uVar29),CONCAT22((short)uVar14,(short)uVar14)));
sVar18 = (short)uVar12;
sVar25 = (short)((ulonglong)uVar12 >> 0x10);
sVar4 = (short)((ulonglong)uVar12 >> 0x20);
sVar13 = (short)((ulonglong)uVar12 >> 0x30);
sVar20 = (short)uVar24;
sVar2 = (short)((ulonglong)uVar24 >> 0x10);
sVar5 = (short)((ulonglong)uVar24 >> 0x20);
sVar15 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar19;
sVar3 = (short)((ulonglong)uVar19 >> 0x10);
sVar6 = (short)((ulonglong)uVar19 >> 0x20);
sVar16 = (short)((ulonglong)uVar19 >> 0x30);
uVar10 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar13)) << 0x30)
>> 0x28);
uVar8 = (ushort)(((uint7)(byte)((0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar24 >> 0x30) - (0xff < sVar15)) << 0x30) >>
0x28);
uVar9 = (ushort)(((uint7)(byte)((0 < sVar16) * (sVar16 < 0x100) *
(char)((ulonglong)uVar19 >> 0x30) - (0xff < sVar16)) << 0x30) >>
0x28);
uVar1 = param_3[0x40];
sVar13 = (short)DAT_00834148;
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar16 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar17 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar26 = sVar15 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar2));
uVar7 = (uint)(ushort)(uVar1 >> 0x20);
*param_7 = (ulonglong)
CONCAT24(sVar15 - (ushort)(byte)((0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) - (0xff < sVar25))
,(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) *
(char)uVar12 - (0xff < sVar18)))) |
CONCAT44((uint)uVar26 << 0x10,
CONCAT22(uVar26,sVar13 - (ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)uVar24 - (0xff < sVar20))) <<
0x10) |
CONCAT44((uint)(ushort)(sVar15 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar19 >> 0x10) -
(0xff < sVar3))) << 8,
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)uVar19 - (0xff < sVar23))) << 8
) |
CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18);
param_7[1] = (ulonglong)
CONCAT24(sVar17 - (uVar10 >> 8),
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar10,(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar4)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar17 - (uVar8 >> 8)) << 0x10,
sVar16 - (short)CONCAT21(uVar8,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar5))) << 0x10 |
CONCAT44((uint)(ushort)(sVar17 - (uVar9 >> 8)) << 8,
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar9,(0 < sVar6) *
(sVar6 < 0x100) *
(char)((ulonglong)uVar19 >>
0x20) - (0xff < sVar6)
)) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar7) >> 0x10) << 8,uVar7 << 0x18);
uVar19 = param_3[1];
uVar30 = (undefined2)((ulonglong)uVar14 >> 0x30);
uVar29 = (undefined2)((ulonglong)uVar14 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar21,sVar21)),uVar19);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar28,sVar28),CONCAT22(sVar27,sVar27)),uVar19);
uVar19 = psubsw(uVar19,CONCAT44(CONCAT22(uVar30,uVar30),CONCAT22(uVar29,uVar29)));
sVar18 = (short)uVar12;
sVar25 = (short)((ulonglong)uVar12 >> 0x10);
sVar4 = (short)((ulonglong)uVar12 >> 0x20);
sVar13 = (short)((ulonglong)uVar12 >> 0x30);
sVar20 = (short)uVar14;
sVar2 = (short)((ulonglong)uVar14 >> 0x10);
sVar5 = (short)((ulonglong)uVar14 >> 0x20);
sVar15 = (short)((ulonglong)uVar14 >> 0x30);
sVar23 = (short)uVar19;
sVar3 = (short)((ulonglong)uVar19 >> 0x10);
sVar6 = (short)((ulonglong)uVar19 >> 0x20);
sVar16 = (short)((ulonglong)uVar19 >> 0x30);
uVar10 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar13)) << 0x30)
>> 0x28);
uVar8 = (ushort)(((uint7)(byte)((0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar15)) << 0x30) >>
0x28);
uVar9 = (ushort)(((uint7)(byte)((0 < sVar16) * (sVar16 < 0x100) *
(char)((ulonglong)uVar19 >> 0x30) - (0xff < sVar16)) << 0x30) >>
0x28);
uVar1 = param_3[0x41];
sVar13 = (short)DAT_00834148;
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar16 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar17 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar26 = sVar15 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar2));
uVar7 = (uint)(ushort)(uVar1 >> 0x20);
param_7[2] = (ulonglong)
CONCAT24(sVar15 - (ushort)(byte)((0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar25)),
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) *
(char)uVar12 - (0xff < sVar18)))) |
CONCAT44((uint)uVar26 << 0x10,
CONCAT22(uVar26,sVar13 - (ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)uVar14 - (0xff < sVar20)))
<< 0x10) |
CONCAT44((uint)(ushort)(sVar15 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar19 >> 0x10) -
(0xff < sVar3))) << 8,
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)uVar19 - (0xff < sVar23))) <<
8) |
CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18)
;
param_7[3] = (ulonglong)
CONCAT24(sVar17 - (uVar10 >> 8),
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar10,(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar4)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar17 - (uVar8 >> 8)) << 0x10,
sVar16 - (short)CONCAT21(uVar8,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) -
(0xff < sVar5))) << 0x10 |
CONCAT44((uint)(ushort)(sVar17 - (uVar9 >> 8)) << 8,
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar9,(0 < sVar6) *
(sVar6 < 0x100) *
(char)((ulonglong)uVar19 >>
0x20) - (0xff < sVar6)
)) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar7) >> 0x10) << 8,uVar7 << 0x18);
uVar12 = psllw(param_5[1],4);
uVar14 = psllw(param_4[1],4);
uVar19 = pmulhw(DAT_00834108,uVar12);
uVar24 = pmulhw(DAT_00834110,uVar14);
sVar18 = (short)uVar19 - (short)DAT_00834130;
sVar20 = (short)((ulonglong)uVar19 >> 0x10) - (short)((ulonglong)DAT_00834130 >> 0x10);
sVar21 = (short)((ulonglong)uVar19 >> 0x20) - (short)((ulonglong)DAT_00834130 >> 0x20);
sVar22 = (short)((ulonglong)uVar19 >> 0x30) - (short)((ulonglong)DAT_00834130 >> 0x30);
sVar23 = (short)uVar24 - (short)DAT_00834128;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_00834128 >> 0x10);
sVar27 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_00834128 >> 0x20);
sVar28 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_00834128 >> 0x30);
uVar19 = param_3[0x10];
uVar14 = psraw(CONCAT26(((short)((ulonglong)DAT_00834120 >> 0x30) *
(ushort)((ulonglong)uVar12 >> 0x34) +
(short)((ulonglong)DAT_00834118 >> 0x30) *
(ushort)((ulonglong)uVar14 >> 0x34)) -
(short)((ulonglong)DAT_00834138 >> 0x30),
CONCAT24(((short)((ulonglong)DAT_00834120 >> 0x20) *
((ushort)((ulonglong)uVar12 >> 0x20) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x20) *
((ushort)((ulonglong)uVar14 >> 0x20) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x20),
CONCAT22(((short)((ulonglong)DAT_00834120 >> 0x10) *
((ushort)((ulonglong)uVar12 >> 0x10) >> 4) +
(short)((ulonglong)DAT_00834118 >> 0x10) *
((ushort)((ulonglong)uVar14 >> 0x10) >> 4)) -
(short)((ulonglong)DAT_00834138 >> 0x10),
((short)DAT_00834120 * ((ushort)uVar12 >> 4) +
(short)DAT_00834118 * ((ushort)uVar14 >> 4)) -
(short)DAT_00834138))),8);
uVar29 = (undefined2)((ulonglong)uVar14 >> 0x10);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar18,sVar18)),uVar19);
uVar24 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar19);
uVar19 = psubsw(uVar19,CONCAT44(CONCAT22(uVar29,uVar29),CONCAT22((short)uVar14,(short)uVar14)));
sVar18 = (short)uVar12;
sVar25 = (short)((ulonglong)uVar12 >> 0x10);
sVar4 = (short)((ulonglong)uVar12 >> 0x20);
sVar13 = (short)((ulonglong)uVar12 >> 0x30);
sVar20 = (short)uVar24;
sVar2 = (short)((ulonglong)uVar24 >> 0x10);
sVar5 = (short)((ulonglong)uVar24 >> 0x20);
sVar15 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar19;
sVar3 = (short)((ulonglong)uVar19 >> 0x10);
sVar6 = (short)((ulonglong)uVar19 >> 0x20);
sVar16 = (short)((ulonglong)uVar19 >> 0x30);
uVar10 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar13)) << 0x30)
>> 0x28);
uVar8 = (ushort)(((uint7)(byte)((0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar24 >> 0x30) - (0xff < sVar15)) << 0x30) >>
0x28);
uVar9 = (ushort)(((uint7)(byte)((0 < sVar16) * (sVar16 < 0x100) *
(char)((ulonglong)uVar19 >> 0x30) - (0xff < sVar16)) << 0x30) >>
0x28);
uVar1 = param_3[0x50];
sVar13 = (short)DAT_00834148;
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar16 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar17 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar26 = sVar15 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar2));
uVar7 = (uint)(ushort)(uVar1 >> 0x20);
param_7[4] = (ulonglong)
CONCAT24(sVar15 - (ushort)(byte)((0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar25)),
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) *
(char)uVar12 - (0xff < sVar18)))) |
CONCAT44((uint)uVar26 << 0x10,
CONCAT22(uVar26,sVar13 - (ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)uVar24 - (0xff < sVar20)))
<< 0x10) |
CONCAT44((uint)(ushort)(sVar15 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar19 >> 0x10) -
(0xff < sVar3))) << 8,
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)uVar19 - (0xff < sVar23))) <<
8) |
CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18)
;
param_7[5] = (ulonglong)
CONCAT24(sVar17 - (uVar10 >> 8),
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar10,(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar4)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar17 - (uVar8 >> 8)) << 0x10,
sVar16 - (short)CONCAT21(uVar8,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar5))) << 0x10 |
CONCAT44((uint)(ushort)(sVar17 - (uVar9 >> 8)) << 8,
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar9,(0 < sVar6) *
(sVar6 < 0x100) *
(char)((ulonglong)uVar19 >>
0x20) - (0xff < sVar6)
)) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar7) >> 0x10) << 8,uVar7 << 0x18);
uVar19 = param_3[0x11];
uVar30 = (undefined2)((ulonglong)uVar14 >> 0x30);
uVar29 = (undefined2)((ulonglong)uVar14 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar21,sVar21)),uVar19);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar28,sVar28),CONCAT22(sVar27,sVar27)),uVar19);
uVar19 = psubsw(uVar19,CONCAT44(CONCAT22(uVar30,uVar30),CONCAT22(uVar29,uVar29)));
sVar18 = (short)uVar12;
sVar25 = (short)((ulonglong)uVar12 >> 0x10);
sVar4 = (short)((ulonglong)uVar12 >> 0x20);
sVar13 = (short)((ulonglong)uVar12 >> 0x30);
sVar20 = (short)uVar14;
sVar2 = (short)((ulonglong)uVar14 >> 0x10);
sVar5 = (short)((ulonglong)uVar14 >> 0x20);
sVar15 = (short)((ulonglong)uVar14 >> 0x30);
sVar23 = (short)uVar19;
sVar3 = (short)((ulonglong)uVar19 >> 0x10);
sVar6 = (short)((ulonglong)uVar19 >> 0x20);
sVar16 = (short)((ulonglong)uVar19 >> 0x30);
uVar10 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar13)) << 0x30)
>> 0x28);
uVar8 = (ushort)(((uint7)(byte)((0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar15)) << 0x30) >>
0x28);
uVar9 = (ushort)(((uint7)(byte)((0 < sVar16) * (sVar16 < 0x100) *
(char)((ulonglong)uVar19 >> 0x30) - (0xff < sVar16)) << 0x30) >>
0x28);
uVar1 = param_3[0x51];
sVar13 = (short)DAT_00834148;
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar16 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar17 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar26 = sVar15 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar2));
uVar7 = (uint)(ushort)(uVar1 >> 0x20);
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_7[6] = (ulonglong)
CONCAT24(sVar15 - (ushort)(byte)((0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar25)),
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) *
(char)uVar12 - (0xff < sVar18)))) |
CONCAT44((uint)uVar26 << 0x10,
CONCAT22(uVar26,sVar13 - (ushort)(byte)((0 < sVar20) * (sVar20 < 0x100) *
(char)uVar14 - (0xff < sVar20)))
<< 0x10) |
CONCAT44((uint)(ushort)(sVar15 - (ushort)(byte)((0 < sVar3) * (sVar3 < 0x100) *
(char)((ulonglong)uVar19 >> 0x10) -
(0xff < sVar3))) << 8,
(uint)(ushort)(sVar13 - (ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)uVar19 - (0xff < sVar23))) <<
8) |
CONCAT44((int)(((uVar1 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar1 << 0x18)
;
param_7[7] = (ulonglong)
CONCAT24(sVar17 - (uVar10 >> 8),
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar10,(0 < sVar4) *
(sVar4 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar4)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar17 - (uVar8 >> 8)) << 0x10,
sVar16 - (short)CONCAT21(uVar8,(0 < sVar5) * (sVar5 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) -
(0xff < sVar5))) << 0x10 |
CONCAT44((uint)(ushort)(sVar17 - (uVar9 >> 8)) << 8,
(uint)(ushort)(sVar16 - (short)CONCAT21(uVar9,(0 < sVar6) *
(sVar6 < 0x100) *
(char)((ulonglong)uVar19 >>
0x20) - (0xff < sVar6)
)) << 8) |
CONCAT44((int)(CONCAT24((short)(uVar1 >> 0x30),uVar7) >> 0x10) << 8,uVar7 << 0x18);
param_7 = (ulonglong *)((int)param_7 + param_8);
iVar11 = iVar11 + -1;
} while (iVar11 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00659650 at 0x00659650 (size: 1496) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00659650(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
char cVar3;
char cVar4;
char cVar5;
int iVar6;
undefined4 in_EAX;
int iVar7;
undefined2 uVar8;
ulonglong uVar9;
ulonglong uVar10;
undefined8 uVar11;
ulonglong uVar12;
undefined8 uVar13;
ulonglong uVar14;
short sVar15;
short sVar18;
short sVar19;
undefined8 uVar16;
short sVar20;
undefined8 uVar17;
short sVar21;
short sVar24;
short sVar25;
undefined8 uVar22;
short sVar26;
undefined8 uVar23;
undefined8 uVar27;
undefined2 uVar28;
undefined8 uVar29;
undefined2 uVar30;
undefined8 uVar31;
ulonglong uVar32;
iVar7 = 4;
do {
uVar13 = psllw(*param_5,4);
uVar11 = psllw(*param_4,4);
uVar22 = pmulhw(DAT_00834098,uVar11);
uVar16 = pmulhw(DAT_00834090,uVar13);
sVar21 = (short)uVar22 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar22 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar22 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar15 = (short)uVar16 - (short)DAT_008340c0;
sVar18 = (short)((ulonglong)uVar16 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar19 = (short)((ulonglong)uVar16 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar20 = (short)((ulonglong)uVar16 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar16 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar11 >> 0x10),
(short)((ulonglong)uVar13 >> 0x10)),
CONCAT22((short)uVar11,(short)uVar13)),DAT_008340a0);
uVar11 = pmaddwd(CONCAT26((short)((ulonglong)uVar11 >> 0x30),
CONCAT24((short)((ulonglong)uVar13 >> 0x30),
CONCAT22((short)((ulonglong)uVar11 >> 0x20),
(short)((ulonglong)uVar13 >> 0x20)))),DAT_008340a0);
iVar6 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar29 = CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar21,sVar21));
uVar31 = CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar15,sVar15));
uVar13 = CONCAT44((int)((ulonglong)uVar16 >> 0x20) - iVar6 >> 0xc,
(int)uVar16 - (int)DAT_008340c8 >> 0xc);
uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) - iVar6 >> 0xc,
(int)uVar11 - (int)DAT_008340c8 >> 0xc);
uVar23 = CONCAT26(sVar26,CONCAT24(sVar26,CONCAT22(sVar25,sVar25)));
uVar17 = CONCAT26(sVar20,CONCAT24(sVar20,CONCAT22(sVar19,sVar19)));
uVar13 = packssdw(uVar13,uVar13);
uVar11 = packssdw(uVar11,uVar11);
uVar8 = (undefined2)((ulonglong)uVar13 >> 0x10);
uVar27 = CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar13,(short)uVar13));
uVar8 = (undefined2)((ulonglong)uVar11 >> 0x10);
uVar16 = CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar11,(short)uVar11));
uVar11 = *param_3;
uVar22 = paddsw(uVar31,uVar11);
uVar13 = paddsw(uVar29,uVar11);
uVar11 = psubsw(uVar11,uVar27);
sVar15 = (short)uVar22;
sVar18 = (short)((ulonglong)uVar22 >> 0x10);
cVar3 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar18);
uVar28 = CONCAT11(cVar3,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 - (0xff < sVar15));
sVar19 = (short)((ulonglong)uVar22 >> 0x20);
sVar24 = (short)((ulonglong)uVar22 >> 0x30);
sVar15 = (short)uVar13;
sVar18 = (short)((ulonglong)uVar13 >> 0x10);
cVar4 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar18);
uVar8 = CONCAT11(cVar4,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar13 - (0xff < sVar15));
sVar20 = (short)((ulonglong)uVar13 >> 0x20);
sVar25 = (short)((ulonglong)uVar13 >> 0x30);
sVar15 = (short)uVar11;
sVar18 = (short)((ulonglong)uVar11 >> 0x10);
sVar21 = (short)((ulonglong)uVar11 >> 0x20);
sVar26 = (short)((ulonglong)uVar11 >> 0x30);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100)
* (char)((
ulonglong)uVar22 >> 0x30) - (0xff < sVar24)) <<
0x30) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar19)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar25)) <<
0x30) >> 0x28),
(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar20)) << 0x20) >> 0x18),
CONCAT12(cVar4,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar18)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar11 -
(0xff < sVar15)));
uVar32 = (uVar9 | uVar10 << 8) & _DAT_008340f8;
uVar9 = (uVar10 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar9 >> 8) & _DAT_008340f8;
*param_6 = (uVar32 << 0x10 | uVar32) & _DAT_00834100 | (uVar9 << 0x20) >> 0x10;
uVar11 = param_3[1];
uVar22 = paddsw(uVar23,uVar11);
uVar13 = paddsw(uVar17,uVar11);
uVar11 = psubsw(uVar11,uVar16);
sVar15 = (short)uVar22;
sVar19 = (short)((ulonglong)uVar22 >> 0x10);
sVar21 = (short)((ulonglong)uVar22 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30);
sVar18 = (short)uVar13;
sVar20 = (short)((ulonglong)uVar13 >> 0x10);
cVar3 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar20);
uVar8 = CONCAT11(cVar3,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar13 - (0xff < sVar18));
sVar24 = (short)((ulonglong)uVar13 >> 0x20);
sVar1 = (short)((ulonglong)uVar13 >> 0x30);
sVar18 = (short)uVar11;
sVar20 = (short)((ulonglong)uVar11 >> 0x10);
sVar25 = (short)((ulonglong)uVar11 >> 0x20);
sVar2 = (short)((ulonglong)uVar11 >> 0x30);
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar22 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 -
(0xff < sVar15)));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar1) *
(sVar1 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar1)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar11 -
(0xff < sVar18)));
uVar32 = (uVar14 | uVar10 << 8) & DAT_008340f0;
uVar14 = ((uVar10 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar14 << 8) & _DAT_008340f8;
uVar10 = (uVar32 | uVar32 >> 0x10) & _DAT_00834100;
param_6[1] = uVar9 >> 0x20 | uVar14 << 0x20;
param_6[2] = (uVar14 >> 0x20) << 0x10 | uVar10;
param_6 = (ulonglong *)((int)param_6 + param_7);
uVar11 = param_3[2];
uVar22 = paddsw(uVar31,uVar11);
uVar13 = paddsw(uVar29,uVar11);
uVar11 = psubsw(uVar11,uVar27);
sVar15 = (short)uVar22;
sVar18 = (short)((ulonglong)uVar22 >> 0x10);
cVar3 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar18);
uVar30 = CONCAT11(cVar3,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 - (0xff < sVar15));
sVar19 = (short)((ulonglong)uVar22 >> 0x20);
sVar21 = (short)((ulonglong)uVar22 >> 0x30);
sVar15 = (short)uVar13;
sVar18 = (short)((ulonglong)uVar13 >> 0x10);
cVar4 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar18);
uVar28 = CONCAT11(cVar4,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar13 - (0xff < sVar15));
sVar20 = (short)((ulonglong)uVar13 >> 0x20);
sVar24 = (short)((ulonglong)uVar13 >> 0x30);
sVar15 = (short)uVar11;
sVar18 = (short)((ulonglong)uVar11 >> 0x10);
cVar5 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) - (0xff < sVar18);
uVar8 = CONCAT11(cVar5,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar11 - (0xff < sVar15));
sVar15 = (short)((ulonglong)uVar11 >> 0x20);
sVar18 = (short)((ulonglong)uVar11 >> 0x30);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100)
* (char)((
ulonglong)uVar22 >> 0x30) - (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar19)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar30)) >> 0x10),uVar30) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar24)) <<
0x30) >> 0x28),
(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar20)) << 0x20) >> 0x18),
CONCAT12(cVar4,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar18) *
(sVar18 < 0x100)
* (char)((
ulonglong)uVar11 >> 0x30) - (0xff < sVar18)) <<
0x30) >> 0x28),
(0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar15)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar32 = (uVar9 | uVar10 << 8) & _DAT_008340f8;
uVar9 = (uVar10 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar9 >> 8) & _DAT_008340f8;
*param_6 = (uVar32 << 0x10 | uVar32) & _DAT_00834100 | (uVar9 << 0x20) >> 0x10;
uVar11 = param_3[3];
uVar22 = paddsw(uVar23,uVar11);
uVar13 = paddsw(uVar17,uVar11);
uVar11 = psubsw(uVar11,uVar16);
sVar15 = (short)uVar22;
sVar19 = (short)((ulonglong)uVar22 >> 0x10);
sVar21 = (short)((ulonglong)uVar22 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30);
sVar18 = (short)uVar13;
sVar20 = (short)((ulonglong)uVar13 >> 0x10);
cVar3 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar20);
uVar8 = CONCAT11(cVar3,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar13 - (0xff < sVar18));
sVar24 = (short)((ulonglong)uVar13 >> 0x20);
sVar1 = (short)((ulonglong)uVar13 >> 0x30);
sVar18 = (short)uVar11;
sVar20 = (short)((ulonglong)uVar11 >> 0x10);
sVar25 = (short)((ulonglong)uVar11 >> 0x20);
sVar2 = (short)((ulonglong)uVar11 >> 0x30);
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar22 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 -
(0xff < sVar15)));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar1) *
(sVar1 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar1)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar11 -
(0xff < sVar18)));
uVar32 = (uVar14 | uVar10 << 8) & DAT_008340f0;
uVar14 = ((uVar10 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar14 << 8) & _DAT_008340f8;
uVar10 = (uVar32 | uVar32 >> 0x10) & _DAT_00834100;
param_6[1] = uVar9 >> 0x20 | uVar14 << 0x20;
param_6[2] = (uVar14 >> 0x20) << 0x10 | uVar10;
uVar13 = psllw(param_5[1],4);
uVar11 = psllw(param_4[1],4);
uVar22 = pmulhw(DAT_00834098,uVar11);
uVar16 = pmulhw(DAT_00834090,uVar13);
sVar21 = (short)uVar22 - (short)DAT_008340b8;
sVar24 = (short)((ulonglong)uVar22 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar25 = (short)((ulonglong)uVar22 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar15 = (short)uVar16 - (short)DAT_008340c0;
sVar18 = (short)((ulonglong)uVar16 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar19 = (short)((ulonglong)uVar16 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar20 = (short)((ulonglong)uVar16 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar16 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar11 >> 0x10),
(short)((ulonglong)uVar13 >> 0x10)),
CONCAT22((short)uVar11,(short)uVar13)),DAT_008340a0);
uVar11 = pmaddwd(CONCAT26((short)((ulonglong)uVar11 >> 0x30),
CONCAT24((short)((ulonglong)uVar13 >> 0x30),
CONCAT22((short)((ulonglong)uVar11 >> 0x20),
(short)((ulonglong)uVar13 >> 0x20)))),DAT_008340a0);
iVar6 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar29 = CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar21,sVar21));
uVar31 = CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar15,sVar15));
uVar13 = CONCAT44((int)((ulonglong)uVar16 >> 0x20) - iVar6 >> 0xc,
(int)uVar16 - (int)DAT_008340c8 >> 0xc);
uVar11 = CONCAT44((int)((ulonglong)uVar11 >> 0x20) - iVar6 >> 0xc,
(int)uVar11 - (int)DAT_008340c8 >> 0xc);
uVar23 = CONCAT26(sVar26,CONCAT24(sVar26,CONCAT22(sVar25,sVar25)));
uVar17 = CONCAT26(sVar20,CONCAT24(sVar20,CONCAT22(sVar19,sVar19)));
uVar13 = packssdw(uVar13,uVar13);
uVar11 = packssdw(uVar11,uVar11);
uVar8 = (undefined2)((ulonglong)uVar13 >> 0x10);
uVar27 = CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar13,(short)uVar13));
uVar8 = (undefined2)((ulonglong)uVar11 >> 0x10);
uVar16 = CONCAT44(CONCAT22(uVar8,uVar8),CONCAT22((short)uVar11,(short)uVar11));
uVar11 = param_3[0x10];
uVar22 = paddsw(uVar31,uVar11);
uVar13 = paddsw(uVar29,uVar11);
uVar11 = psubsw(uVar11,uVar27);
sVar15 = (short)uVar22;
sVar18 = (short)((ulonglong)uVar22 >> 0x10);
cVar3 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar18);
uVar28 = CONCAT11(cVar3,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 - (0xff < sVar15));
sVar19 = (short)((ulonglong)uVar22 >> 0x20);
sVar24 = (short)((ulonglong)uVar22 >> 0x30);
sVar15 = (short)uVar13;
sVar18 = (short)((ulonglong)uVar13 >> 0x10);
cVar4 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar18);
uVar8 = CONCAT11(cVar4,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar13 - (0xff < sVar15));
sVar20 = (short)((ulonglong)uVar13 >> 0x20);
sVar25 = (short)((ulonglong)uVar13 >> 0x30);
sVar15 = (short)uVar11;
sVar18 = (short)((ulonglong)uVar11 >> 0x10);
sVar21 = (short)((ulonglong)uVar11 >> 0x20);
sVar26 = (short)((ulonglong)uVar11 >> 0x30);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100)
* (char)((
ulonglong)uVar22 >> 0x30) - (0xff < sVar24)) <<
0x30) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar19)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar25)) <<
0x30) >> 0x28),
(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar20)) << 0x20) >> 0x18),
CONCAT12(cVar4,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar18)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar11 -
(0xff < sVar15)));
uVar32 = (uVar9 | uVar10 << 8) & _DAT_008340f8;
uVar9 = (uVar10 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar9 >> 8) & _DAT_008340f8;
*(ulonglong *)((int)param_6 + (0x18 - param_7)) =
(uVar32 << 0x10 | uVar32) & _DAT_00834100 | (uVar9 << 0x20) >> 0x10;
uVar11 = param_3[0x11];
uVar22 = paddsw(uVar23,uVar11);
uVar13 = paddsw(uVar17,uVar11);
uVar11 = psubsw(uVar11,uVar16);
sVar15 = (short)uVar22;
sVar19 = (short)((ulonglong)uVar22 >> 0x10);
sVar21 = (short)((ulonglong)uVar22 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30);
sVar18 = (short)uVar13;
sVar20 = (short)((ulonglong)uVar13 >> 0x10);
cVar3 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar20);
uVar8 = CONCAT11(cVar3,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar13 - (0xff < sVar18));
sVar24 = (short)((ulonglong)uVar13 >> 0x20);
sVar1 = (short)((ulonglong)uVar13 >> 0x30);
sVar18 = (short)uVar11;
sVar20 = (short)((ulonglong)uVar11 >> 0x10);
sVar25 = (short)((ulonglong)uVar11 >> 0x20);
sVar2 = (short)((ulonglong)uVar11 >> 0x30);
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar22 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 -
(0xff < sVar15)));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar1) *
(sVar1 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar1)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar11 -
(0xff < sVar18)));
uVar32 = (uVar14 | uVar10 << 8) & DAT_008340f0;
uVar14 = ((uVar10 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar14 << 8) & _DAT_008340f8;
uVar10 = (uVar32 | uVar32 >> 0x10) & _DAT_00834100;
*(ulonglong *)((int)param_6 + (0x20 - param_7)) = uVar9 >> 0x20 | uVar14 << 0x20;
*(ulonglong *)((int)param_6 + (0x28 - param_7)) = (uVar14 >> 0x20) << 0x10 | uVar10;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
uVar11 = param_3[0x12];
uVar22 = paddsw(uVar31,uVar11);
uVar13 = paddsw(uVar29,uVar11);
uVar11 = psubsw(uVar11,uVar27);
sVar15 = (short)uVar22;
sVar18 = (short)((ulonglong)uVar22 >> 0x10);
cVar3 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) - (0xff < sVar18);
uVar30 = CONCAT11(cVar3,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 - (0xff < sVar15));
sVar19 = (short)((ulonglong)uVar22 >> 0x20);
sVar21 = (short)((ulonglong)uVar22 >> 0x30);
sVar15 = (short)uVar13;
sVar18 = (short)((ulonglong)uVar13 >> 0x10);
cVar4 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar18);
uVar28 = CONCAT11(cVar4,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar13 - (0xff < sVar15));
sVar20 = (short)((ulonglong)uVar13 >> 0x20);
sVar24 = (short)((ulonglong)uVar13 >> 0x30);
sVar15 = (short)uVar11;
sVar18 = (short)((ulonglong)uVar11 >> 0x10);
cVar5 = (0 < sVar18) * (sVar18 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) - (0xff < sVar18);
uVar8 = CONCAT11(cVar5,(0 < sVar15) * (sVar15 < 0x100) * (char)uVar11 - (0xff < sVar15));
sVar15 = (short)((ulonglong)uVar11 >> 0x20);
sVar18 = (short)((ulonglong)uVar11 >> 0x30);
uVar9 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar21) *
(sVar21 < 0x100)
* (char)((
ulonglong)uVar22 >> 0x30) - (0xff < sVar21)) <<
0x30) >> 0x28),
(0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar19)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar30)) >> 0x10),uVar30) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar24) *
(sVar24 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar24)) <<
0x30) >> 0x28),
(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar20)) << 0x20) >> 0x18),
CONCAT12(cVar4,uVar28)) >> 0x10),uVar28) & 0xffffffff00ff00ff;
uVar10 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar18) *
(sVar18 < 0x100)
* (char)((
ulonglong)uVar11 >> 0x30) - (0xff < sVar18)) <<
0x30) >> 0x28),
(0 < sVar15) * (sVar15 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar15)) << 0x20) >> 0x18),
CONCAT12(cVar5,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar32 = (uVar9 | uVar10 << 8) & _DAT_008340f8;
uVar9 = (uVar10 | uVar14 << 8) & DAT_008340f0 | (uVar14 | uVar9 >> 8) & _DAT_008340f8;
param_6[3] = (uVar32 << 0x10 | uVar32) & _DAT_00834100 | (uVar9 << 0x20) >> 0x10;
uVar11 = param_3[0x13];
uVar22 = paddsw(uVar23,uVar11);
uVar13 = paddsw(uVar17,uVar11);
uVar11 = psubsw(uVar11,uVar16);
sVar15 = (short)uVar22;
sVar19 = (short)((ulonglong)uVar22 >> 0x10);
sVar21 = (short)((ulonglong)uVar22 >> 0x20);
sVar26 = (short)((ulonglong)uVar22 >> 0x30);
sVar18 = (short)uVar13;
sVar20 = (short)((ulonglong)uVar13 >> 0x10);
cVar3 = (0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar13 >> 0x10) - (0xff < sVar20);
uVar8 = CONCAT11(cVar3,(0 < sVar18) * (sVar18 < 0x100) * (char)uVar13 - (0xff < sVar18));
sVar24 = (short)((ulonglong)uVar13 >> 0x20);
sVar1 = (short)((ulonglong)uVar13 >> 0x30);
sVar18 = (short)uVar11;
sVar20 = (short)((ulonglong)uVar11 >> 0x10);
sVar25 = (short)((ulonglong)uVar11 >> 0x20);
sVar2 = (short)((ulonglong)uVar11 >> 0x30);
uVar10 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar26) *
(sVar26 < 0x100) *
(char)((ulonglong)
uVar22 >> 0x30)
- (0xff < sVar26)) <<
0x30) >> 0x28),
(0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar22 >> 0x20) -
(0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar19) * (sVar19 < 0x100) * (char)((ulonglong)uVar22 >> 0x10) -
(0xff < sVar19)),
(ushort)(byte)((0 < sVar15) * (sVar15 < 0x100) * (char)uVar22 -
(0xff < sVar15)));
uVar12 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar1) *
(sVar1 < 0x100)
* (char)((
ulonglong)uVar13 >> 0x30) - (0xff < sVar1)) <<
0x30) >> 0x28),
(0 < sVar24) * (sVar24 < 0x100) *
(char)((ulonglong)uVar13 >> 0x20) -
(0xff < sVar24)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar8)) >> 0x10),uVar8) & 0xffffffff00ff00ff;
uVar14 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar2) *
(sVar2 < 0x100) *
(char)((ulonglong)
uVar11 >> 0x30)
- (0xff < sVar2)) <<
0x30) >> 0x28),
(0 < sVar25) * (sVar25 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) -
(0xff < sVar25)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar20)),
(ushort)(byte)((0 < sVar18) * (sVar18 < 0x100) * (char)uVar11 -
(0xff < sVar18)));
uVar32 = (uVar14 | uVar10 << 8) & DAT_008340f0;
uVar14 = ((uVar10 | uVar12 >> 8) & _DAT_008340f8) << 0x10 |
(uVar12 | uVar14 << 8) & _DAT_008340f8;
uVar10 = (uVar32 | uVar32 >> 0x10) & _DAT_00834100;
param_6[4] = uVar9 >> 0x20 | uVar14 << 0x20;
param_6[5] = (uVar14 >> 0x20) << 0x10 | uVar10;
param_3 = param_3 + 4;
param_6 = (ulonglong *)((int)param_6 + param_7);
iVar7 = iVar7 + -1;
} while (iVar7 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_00659c30 at 0x00659C30 (size: 1496) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined8 __fastcall
FUN_00659c30(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
char cVar1;
char cVar2;
char cVar3;
int iVar4;
undefined4 in_EAX;
int iVar5;
undefined2 uVar6;
ulonglong uVar7;
ulonglong uVar8;
short sVar9;
short sVar12;
short sVar13;
undefined8 uVar10;
short sVar14;
ulonglong uVar11;
short sVar15;
short sVar16;
short sVar19;
short sVar21;
undefined8 uVar17;
short sVar20;
short sVar22;
ulonglong uVar18;
short sVar23;
short sVar25;
short sVar26;
undefined8 uVar24;
short sVar27;
short sVar28;
short sVar30;
short sVar31;
undefined8 uVar29;
short sVar32;
undefined2 uVar33;
undefined2 uVar34;
undefined8 uVar35;
ulonglong uVar36;
undefined8 uVar37;
iVar5 = 4;
do {
uVar17 = psllw(*param_5,4);
uVar10 = psllw(*param_4,4);
uVar29 = pmulhw(DAT_00834098,uVar10);
uVar24 = pmulhw(DAT_00834090,uVar17);
sVar28 = (short)uVar29 - (short)DAT_008340b8;
sVar30 = (short)((ulonglong)uVar29 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar31 = (short)((ulonglong)uVar29 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar32 = (short)((ulonglong)uVar29 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar23 = (short)uVar24 - (short)DAT_008340c0;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar24 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)uVar10,(short)uVar17)),DAT_008340a0);
uVar10 = pmaddwd(CONCAT26((short)((ulonglong)uVar10 >> 0x30),
CONCAT24((short)((ulonglong)uVar17 >> 0x30),
CONCAT22((short)((ulonglong)uVar10 >> 0x20),
(short)((ulonglong)uVar17 >> 0x20)))),DAT_008340a0);
uVar37 = CONCAT44(CONCAT22(sVar30,sVar30),CONCAT22(sVar28,sVar28));
uVar29 = CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23));
iVar4 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar17 = CONCAT44((int)((ulonglong)uVar24 >> 0x20) - iVar4 >> 0xc,
(int)uVar24 - (int)DAT_008340c8 >> 0xc);
uVar10 = CONCAT44((int)((ulonglong)uVar10 >> 0x20) - iVar4 >> 0xc,
(int)uVar10 - (int)DAT_008340c8 >> 0xc);
uVar17 = packssdw(uVar17,uVar17);
uVar10 = packssdw(uVar10,uVar10);
uVar6 = (undefined2)((ulonglong)uVar17 >> 0x10);
uVar17 = CONCAT44(CONCAT22(uVar6,uVar6),CONCAT22((short)uVar17,(short)uVar17));
sVar19 = (short)((ulonglong)uVar10 >> 0x10);
sVar15 = (short)uVar10;
uVar10 = *param_3;
uVar35 = paddsw(uVar37,uVar10);
uVar24 = paddsw(uVar29,uVar10);
uVar10 = psubsw(uVar10,uVar17);
sVar23 = (short)uVar35;
sVar25 = (short)((ulonglong)uVar35 >> 0x10);
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar35 >> 0x10) - (0xff < sVar25);
uVar33 = CONCAT11(cVar1,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar35 - (0xff < sVar23));
sVar28 = (short)((ulonglong)uVar35 >> 0x20);
sVar12 = (short)((ulonglong)uVar35 >> 0x30);
sVar23 = (short)uVar24;
sVar25 = (short)((ulonglong)uVar24 >> 0x10);
cVar2 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar25);
uVar6 = CONCAT11(cVar2,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar24 - (0xff < sVar23));
sVar30 = (short)((ulonglong)uVar24 >> 0x20);
sVar13 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar10;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar9 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar35 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) *
(char)((ulonglong)uVar35 >> 0x20) -
(0xff < sVar28)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar33)) >> 0x10),uVar33) & 0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar13) *
(sVar13 < 0x100)
* (char)((
ulonglong)uVar24 >> 0x30) - (0xff < sVar13)) <<
0x30) >> 0x28),
(0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar30)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar6)) >> 0x10),uVar6) & 0xffffffff00ff00ff;
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100) *
(char)((ulonglong)uVar10
>> 0x30) -
(0xff < sVar14)) << 0x30)
>> 0x28),
(0 < sVar9) * (sVar9 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar9)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)uVar10 - (0xff < sVar23)
));
uVar36 = (uVar7 | uVar8 << 8) & _DAT_008340f8;
uVar7 = (uVar8 | uVar18 << 8) & DAT_008340f0 | (uVar18 | uVar7 >> 8) & _DAT_008340f8;
*param_6 = (uVar36 << 0x10 | uVar36) & _DAT_00834100 | (uVar7 << 0x20) >> 0x10;
uVar10 = param_3[1];
sVar23 = (short)uVar10;
sVar16 = sVar26 + sVar23;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar20 = sVar26 + sVar25;
sVar28 = (short)((ulonglong)uVar10 >> 0x20);
sVar21 = sVar27 + sVar28;
sVar30 = (short)((ulonglong)uVar10 >> 0x30);
sVar22 = sVar27 + sVar30;
sVar9 = sVar31 + sVar23;
sVar12 = sVar31 + sVar25;
sVar13 = sVar32 + sVar28;
sVar14 = sVar32 + sVar30;
sVar23 = sVar23 - sVar15;
sVar25 = sVar25 - sVar15;
sVar28 = sVar28 - sVar19;
sVar30 = sVar30 - sVar19;
cVar1 = (0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12);
uVar6 = CONCAT11(cVar1,(0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 - (0xff < sVar9));
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)sVar22 -
(0xff < sVar22)) << 0x30)
>> 0x28),
(0 < sVar21) * (sVar21 < 0x100) * (char)sVar21
- (0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar16) * (sVar16 < 0x100) * (char)sVar16 - (0xff < sVar16)
));
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100)
* (char)sVar14 -
(0xff < sVar14))
<< 0x30) >> 0x28),
(0 < sVar13) * (sVar13 < 0x100) *
(char)sVar13 - (0xff < sVar13)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar6)) >> 0x10),uVar6) &
0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar30) *
(sVar30 < 0x100) *
(char)sVar30 -
(0xff < sVar30)) << 0x30
) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) * (char)sVar28
- (0xff < sVar28)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)sVar23 -
(0xff < sVar23)));
uVar36 = (uVar18 | uVar8 << 8) & DAT_008340f0;
uVar18 = ((uVar8 | uVar11 >> 8) & _DAT_008340f8) << 0x10 |
(uVar11 | uVar18 << 8) & _DAT_008340f8;
uVar8 = (uVar36 | uVar36 >> 0x10) & _DAT_00834100;
param_6[1] = uVar7 >> 0x20 | uVar18 << 0x20;
param_6[2] = (uVar18 >> 0x20) << 0x10 | uVar8;
param_6 = (ulonglong *)((int)param_6 + param_7);
uVar10 = param_3[2];
uVar37 = paddsw(uVar37,uVar10);
uVar24 = paddsw(uVar29,uVar10);
uVar10 = psubsw(uVar10,uVar17);
sVar23 = (short)uVar37;
sVar25 = (short)((ulonglong)uVar37 >> 0x10);
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar37 >> 0x10) - (0xff < sVar25);
uVar34 = CONCAT11(cVar1,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar37 - (0xff < sVar23));
sVar28 = (short)((ulonglong)uVar37 >> 0x20);
sVar9 = (short)((ulonglong)uVar37 >> 0x30);
sVar23 = (short)uVar24;
sVar25 = (short)((ulonglong)uVar24 >> 0x10);
cVar2 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar25);
uVar33 = CONCAT11(cVar2,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar24 - (0xff < sVar23));
sVar30 = (short)((ulonglong)uVar24 >> 0x20);
sVar12 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar10;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
cVar3 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar25);
uVar6 = CONCAT11(cVar3,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar10 - (0xff < sVar23));
sVar23 = (short)((ulonglong)uVar10 >> 0x20);
sVar25 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar9) *
(sVar9 < 0x100) *
(char)((ulonglong
)uVar37 >>
0x30) -
(0xff < sVar9)) <<
0x30) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) *
(char)((ulonglong)uVar37 >> 0x20) -
(0xff < sVar28)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar34)) >> 0x10),uVar34) & 0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar24 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar30)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar33)) >> 0x10),uVar33) & 0xffffffff00ff00ff;
uVar8 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100)
* (char)((
ulonglong)uVar10 >> 0x30) - (0xff < sVar25)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar6)) >> 0x10),uVar6) & 0xffffffff00ff00ff;
uVar36 = (uVar7 | uVar8 << 8) & _DAT_008340f8;
uVar7 = (uVar8 | uVar18 << 8) & DAT_008340f0 | (uVar18 | uVar7 >> 8) & _DAT_008340f8;
*param_6 = (uVar36 << 0x10 | uVar36) & _DAT_00834100 | (uVar7 << 0x20) >> 0x10;
uVar10 = param_3[3];
sVar23 = (short)uVar10;
sVar13 = sVar26 + sVar23;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar26 = sVar26 + sVar25;
sVar28 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = sVar27 + sVar28;
sVar30 = (short)((ulonglong)uVar10 >> 0x30);
sVar27 = sVar27 + sVar30;
sVar9 = sVar31 + sVar23;
sVar31 = sVar31 + sVar25;
sVar12 = sVar32 + sVar28;
sVar32 = sVar32 + sVar30;
sVar23 = sVar23 - sVar15;
sVar25 = sVar25 - sVar15;
sVar28 = sVar28 - sVar19;
sVar30 = sVar30 - sVar19;
cVar1 = (0 < sVar31) * (sVar31 < 0x100) * (char)sVar31 - (0xff < sVar31);
uVar6 = CONCAT11(cVar1,(0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 - (0xff < sVar9));
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar27) *
(sVar27 < 0x100) *
(char)sVar27 -
(0xff < sVar27)) << 0x30)
>> 0x28),
(0 < sVar14) * (sVar14 < 0x100) * (char)sVar14
- (0xff < sVar14)) << 0x20) >> 0x18),
(0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26)),
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)sVar13 - (0xff < sVar13)
));
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar32) *
(sVar32 < 0x100)
* (char)sVar32 -
(0xff < sVar32))
<< 0x30) >> 0x28),
(0 < sVar12) * (sVar12 < 0x100) *
(char)sVar12 - (0xff < sVar12)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar6)) >> 0x10),uVar6) &
0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar30) *
(sVar30 < 0x100) *
(char)sVar30 -
(0xff < sVar30)) << 0x30
) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) * (char)sVar28
- (0xff < sVar28)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)sVar23 -
(0xff < sVar23)));
uVar36 = (uVar18 | uVar8 << 8) & DAT_008340f0;
uVar18 = ((uVar8 | uVar11 >> 8) & _DAT_008340f8) << 0x10 |
(uVar11 | uVar18 << 8) & _DAT_008340f8;
uVar8 = (uVar36 | uVar36 >> 0x10) & _DAT_00834100;
param_6[1] = uVar7 >> 0x20 | uVar18 << 0x20;
param_6[2] = (uVar18 >> 0x20) << 0x10 | uVar8;
uVar17 = psllw(param_5[1],4);
uVar10 = psllw(param_4[1],4);
uVar29 = pmulhw(DAT_00834098,uVar10);
uVar24 = pmulhw(DAT_00834090,uVar17);
sVar28 = (short)uVar29 - (short)DAT_008340b8;
sVar30 = (short)((ulonglong)uVar29 >> 0x10) - (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar31 = (short)((ulonglong)uVar29 >> 0x20) - (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar32 = (short)((ulonglong)uVar29 >> 0x30) - (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar23 = (short)uVar24 - (short)DAT_008340c0;
sVar25 = (short)((ulonglong)uVar24 >> 0x10) - (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar26 = (short)((ulonglong)uVar24 >> 0x20) - (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar27 = (short)((ulonglong)uVar24 >> 0x30) - (short)((ulonglong)DAT_008340c0 >> 0x30);
uVar24 = pmaddwd(CONCAT44(CONCAT22((short)((ulonglong)uVar10 >> 0x10),
(short)((ulonglong)uVar17 >> 0x10)),
CONCAT22((short)uVar10,(short)uVar17)),DAT_008340a0);
uVar10 = pmaddwd(CONCAT26((short)((ulonglong)uVar10 >> 0x30),
CONCAT24((short)((ulonglong)uVar17 >> 0x30),
CONCAT22((short)((ulonglong)uVar10 >> 0x20),
(short)((ulonglong)uVar17 >> 0x20)))),DAT_008340a0);
uVar37 = CONCAT44(CONCAT22(sVar30,sVar30),CONCAT22(sVar28,sVar28));
uVar29 = CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23));
iVar4 = (int)((ulonglong)DAT_008340c8 >> 0x20);
uVar17 = CONCAT44((int)((ulonglong)uVar24 >> 0x20) - iVar4 >> 0xc,
(int)uVar24 - (int)DAT_008340c8 >> 0xc);
uVar10 = CONCAT44((int)((ulonglong)uVar10 >> 0x20) - iVar4 >> 0xc,
(int)uVar10 - (int)DAT_008340c8 >> 0xc);
uVar17 = packssdw(uVar17,uVar17);
uVar10 = packssdw(uVar10,uVar10);
uVar6 = (undefined2)((ulonglong)uVar17 >> 0x10);
uVar17 = CONCAT44(CONCAT22(uVar6,uVar6),CONCAT22((short)uVar17,(short)uVar17));
sVar19 = (short)((ulonglong)uVar10 >> 0x10);
sVar15 = (short)uVar10;
uVar10 = param_3[0x10];
uVar35 = paddsw(uVar37,uVar10);
uVar24 = paddsw(uVar29,uVar10);
uVar10 = psubsw(uVar10,uVar17);
sVar23 = (short)uVar35;
sVar25 = (short)((ulonglong)uVar35 >> 0x10);
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar35 >> 0x10) - (0xff < sVar25);
uVar33 = CONCAT11(cVar1,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar35 - (0xff < sVar23));
sVar28 = (short)((ulonglong)uVar35 >> 0x20);
sVar12 = (short)((ulonglong)uVar35 >> 0x30);
sVar23 = (short)uVar24;
sVar25 = (short)((ulonglong)uVar24 >> 0x10);
cVar2 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar25);
uVar6 = CONCAT11(cVar2,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar24 - (0xff < sVar23));
sVar30 = (short)((ulonglong)uVar24 >> 0x20);
sVar13 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar10;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar9 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar35 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) *
(char)((ulonglong)uVar35 >> 0x20) -
(0xff < sVar28)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar33)) >> 0x10),uVar33) & 0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar13) *
(sVar13 < 0x100)
* (char)((
ulonglong)uVar24 >> 0x30) - (0xff < sVar13)) <<
0x30) >> 0x28),
(0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar30)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar6)) >> 0x10),uVar6) & 0xffffffff00ff00ff;
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100) *
(char)((ulonglong)uVar10
>> 0x30) -
(0xff < sVar14)) << 0x30)
>> 0x28),
(0 < sVar9) * (sVar9 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar9)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)uVar10 - (0xff < sVar23)
));
uVar36 = (uVar7 | uVar8 << 8) & _DAT_008340f8;
uVar7 = (uVar8 | uVar18 << 8) & DAT_008340f0 | (uVar18 | uVar7 >> 8) & _DAT_008340f8;
*(ulonglong *)((int)param_6 + (0x18 - param_7)) =
(uVar36 << 0x10 | uVar36) & _DAT_00834100 | (uVar7 << 0x20) >> 0x10;
uVar10 = param_3[0x11];
sVar23 = (short)uVar10;
sVar16 = sVar26 + sVar23;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar20 = sVar26 + sVar25;
sVar28 = (short)((ulonglong)uVar10 >> 0x20);
sVar21 = sVar27 + sVar28;
sVar30 = (short)((ulonglong)uVar10 >> 0x30);
sVar22 = sVar27 + sVar30;
sVar9 = sVar31 + sVar23;
sVar12 = sVar31 + sVar25;
sVar13 = sVar32 + sVar28;
sVar14 = sVar32 + sVar30;
sVar23 = sVar23 - sVar15;
sVar25 = sVar25 - sVar15;
sVar28 = sVar28 - sVar19;
sVar30 = sVar30 - sVar19;
cVar1 = (0 < sVar12) * (sVar12 < 0x100) * (char)sVar12 - (0xff < sVar12);
uVar6 = CONCAT11(cVar1,(0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 - (0xff < sVar9));
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
(sVar22 < 0x100) *
(char)sVar22 -
(0xff < sVar22)) << 0x30)
>> 0x28),
(0 < sVar21) * (sVar21 < 0x100) * (char)sVar21
- (0xff < sVar21)) << 0x20) >> 0x18),
(0 < sVar20) * (sVar20 < 0x100) * (char)sVar20 - (0xff < sVar20)),
(ushort)(byte)((0 < sVar16) * (sVar16 < 0x100) * (char)sVar16 - (0xff < sVar16)
));
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar14) *
(sVar14 < 0x100)
* (char)sVar14 -
(0xff < sVar14))
<< 0x30) >> 0x28),
(0 < sVar13) * (sVar13 < 0x100) *
(char)sVar13 - (0xff < sVar13)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar6)) >> 0x10),uVar6) &
0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar30) *
(sVar30 < 0x100) *
(char)sVar30 -
(0xff < sVar30)) << 0x30
) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) * (char)sVar28
- (0xff < sVar28)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)sVar23 -
(0xff < sVar23)));
uVar36 = (uVar18 | uVar8 << 8) & DAT_008340f0;
uVar18 = ((uVar8 | uVar11 >> 8) & _DAT_008340f8) << 0x10 |
(uVar11 | uVar18 << 8) & _DAT_008340f8;
uVar8 = (uVar36 | uVar36 >> 0x10) & _DAT_00834100;
*(ulonglong *)((int)param_6 + (0x20 - param_7)) = uVar7 >> 0x20 | uVar18 << 0x20;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
*(ulonglong *)((int)param_6 + (0x28 - param_7)) = (uVar18 >> 0x20) << 0x10 | uVar8;
uVar10 = param_3[0x12];
uVar37 = paddsw(uVar37,uVar10);
uVar24 = paddsw(uVar29,uVar10);
uVar10 = psubsw(uVar10,uVar17);
sVar23 = (short)uVar37;
sVar25 = (short)((ulonglong)uVar37 >> 0x10);
cVar1 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar37 >> 0x10) - (0xff < sVar25);
uVar34 = CONCAT11(cVar1,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar37 - (0xff < sVar23));
sVar28 = (short)((ulonglong)uVar37 >> 0x20);
sVar9 = (short)((ulonglong)uVar37 >> 0x30);
sVar23 = (short)uVar24;
sVar25 = (short)((ulonglong)uVar24 >> 0x10);
cVar2 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar24 >> 0x10) - (0xff < sVar25);
uVar33 = CONCAT11(cVar2,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar24 - (0xff < sVar23));
sVar30 = (short)((ulonglong)uVar24 >> 0x20);
sVar12 = (short)((ulonglong)uVar24 >> 0x30);
sVar23 = (short)uVar10;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
cVar3 = (0 < sVar25) * (sVar25 < 0x100) * (char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar25);
uVar6 = CONCAT11(cVar3,(0 < sVar23) * (sVar23 < 0x100) * (char)uVar10 - (0xff < sVar23));
sVar23 = (short)((ulonglong)uVar10 >> 0x20);
sVar25 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar9) *
(sVar9 < 0x100) *
(char)((ulonglong
)uVar37 >>
0x30) -
(0xff < sVar9)) <<
0x30) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) *
(char)((ulonglong)uVar37 >> 0x20) -
(0xff < sVar28)) << 0x20) >> 0x18),
CONCAT12(cVar1,uVar34)) >> 0x10),uVar34) & 0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar12) *
(sVar12 < 0x100)
* (char)((
ulonglong)uVar24 >> 0x30) - (0xff < sVar12)) <<
0x30) >> 0x28),
(0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar24 >> 0x20) -
(0xff < sVar30)) << 0x20) >> 0x18),
CONCAT12(cVar2,uVar33)) >> 0x10),uVar33) & 0xffffffff00ff00ff;
uVar8 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar25) *
(sVar25 < 0x100)
* (char)((
ulonglong)uVar10 >> 0x30) - (0xff < sVar25)) <<
0x30) >> 0x28),
(0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) -
(0xff < sVar23)) << 0x20) >> 0x18),
CONCAT12(cVar3,uVar6)) >> 0x10),uVar6) & 0xffffffff00ff00ff;
uVar36 = (uVar7 | uVar8 << 8) & _DAT_008340f8;
uVar7 = (uVar8 | uVar18 << 8) & DAT_008340f0 | (uVar18 | uVar7 >> 8) & _DAT_008340f8;
param_6[3] = (uVar36 << 0x10 | uVar36) & _DAT_00834100 | (uVar7 << 0x20) >> 0x10;
uVar10 = param_3[0x13];
sVar23 = (short)uVar10;
sVar13 = sVar26 + sVar23;
sVar25 = (short)((ulonglong)uVar10 >> 0x10);
sVar26 = sVar26 + sVar25;
sVar28 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = sVar27 + sVar28;
sVar30 = (short)((ulonglong)uVar10 >> 0x30);
sVar27 = sVar27 + sVar30;
sVar9 = sVar31 + sVar23;
sVar31 = sVar31 + sVar25;
sVar12 = sVar32 + sVar28;
sVar32 = sVar32 + sVar30;
sVar23 = sVar23 - sVar15;
sVar25 = sVar25 - sVar15;
sVar28 = sVar28 - sVar19;
sVar30 = sVar30 - sVar19;
cVar1 = (0 < sVar31) * (sVar31 < 0x100) * (char)sVar31 - (0xff < sVar31);
uVar6 = CONCAT11(cVar1,(0 < sVar9) * (sVar9 < 0x100) * (char)sVar9 - (0xff < sVar9));
uVar8 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar27) *
(sVar27 < 0x100) *
(char)sVar27 -
(0xff < sVar27)) << 0x30)
>> 0x28),
(0 < sVar14) * (sVar14 < 0x100) * (char)sVar14
- (0xff < sVar14)) << 0x20) >> 0x18),
(0 < sVar26) * (sVar26 < 0x100) * (char)sVar26 - (0xff < sVar26)),
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)sVar13 - (0xff < sVar13)
));
uVar11 = (ulonglong)
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar32) *
(sVar32 < 0x100)
* (char)sVar32 -
(0xff < sVar32))
<< 0x30) >> 0x28),
(0 < sVar12) * (sVar12 < 0x100) *
(char)sVar12 - (0xff < sVar12)) << 0x20
) >> 0x18),CONCAT12(cVar1,uVar6)) >> 0x10),uVar6) &
0xffffffff00ff00ff;
uVar18 = (ulonglong)
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar30) *
(sVar30 < 0x100) *
(char)sVar30 -
(0xff < sVar30)) << 0x30
) >> 0x28),
(0 < sVar28) * (sVar28 < 0x100) * (char)sVar28
- (0xff < sVar28)) << 0x20) >> 0x18),
(0 < sVar25) * (sVar25 < 0x100) * (char)sVar25 - (0xff < sVar25)),
(ushort)(byte)((0 < sVar23) * (sVar23 < 0x100) * (char)sVar23 -
(0xff < sVar23)));
uVar36 = (uVar18 | uVar8 << 8) & DAT_008340f0;
uVar18 = ((uVar8 | uVar11 >> 8) & _DAT_008340f8) << 0x10 |
(uVar11 | uVar18 << 8) & _DAT_008340f8;
uVar8 = (uVar36 | uVar36 >> 0x10) & _DAT_00834100;
param_6[4] = uVar7 >> 0x20 | uVar18 << 0x20;
param_3 = param_3 + 4;
param_6[5] = (uVar18 >> 0x20) << 0x10 | uVar8;
param_6 = (ulonglong *)((int)param_6 + param_7);
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_0065a210 at 0x0065A210 (size: 1434) ---
undefined8 __fastcall
FUN_0065a210(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,ulonglong *param_6,int param_7)
{
short sVar1;
short sVar2;
short sVar3;
short sVar4;
short sVar5;
char cVar6;
uint uVar7;
undefined4 in_EAX;
int iVar8;
undefined8 *puVar9;
undefined8 uVar10;
undefined8 uVar11;
short sVar12;
short sVar13;
short sVar16;
short sVar18;
short sVar19;
short sVar21;
undefined8 uVar14;
short sVar17;
short sVar20;
short sVar22;
short sVar23;
undefined8 uVar15;
short sVar24;
short sVar25;
short sVar26;
short sVar29;
short sVar31;
short sVar32;
short sVar34;
undefined8 uVar27;
short sVar30;
short sVar33;
short sVar35;
short sVar36;
undefined8 uVar28;
short sVar37;
undefined2 uVar38;
undefined2 uVar39;
undefined2 uVar40;
undefined2 uVar41;
undefined2 uVar42;
undefined2 uVar43;
undefined2 uVar44;
undefined2 uVar45;
ulonglong uVar46;
ulonglong uVar47;
iVar8 = 8;
while( true ) {
uVar11 = psllw(*param_4,4);
uVar10 = psllw(*param_5,4);
uVar27 = pmulhw(DAT_00834098,uVar11);
uVar14 = pmulhw(DAT_00834090,uVar10);
sVar12 = (short)uVar14 - (short)DAT_008340c0;
sVar18 = (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar16 = (short)((ulonglong)uVar14 >> 0x10) - sVar18;
sVar21 = (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar19 = (short)((ulonglong)uVar14 >> 0x20) - sVar21;
sVar24 = (short)((ulonglong)DAT_008340c0 >> 0x30);
sVar22 = (short)((ulonglong)uVar14 >> 0x30) - sVar24;
sVar25 = (short)uVar27 - (short)DAT_008340b8;
sVar31 = (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar29 = (short)((ulonglong)uVar27 >> 0x10) - sVar31;
sVar34 = (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar32 = (short)((ulonglong)uVar27 >> 0x20) - sVar34;
sVar37 = (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar35 = (short)((ulonglong)uVar27 >> 0x30) - sVar37;
sVar30 = (short)((ulonglong)DAT_008340a8 >> 0x10);
sVar33 = (short)((ulonglong)DAT_008340a8 >> 0x20);
sVar36 = (short)((ulonglong)DAT_008340a8 >> 0x30);
sVar17 = (short)((ulonglong)DAT_008340b0 >> 0x10);
sVar20 = (short)((ulonglong)DAT_008340b0 >> 0x20);
sVar23 = (short)((ulonglong)DAT_008340b0 >> 0x30);
sVar1 = (short)((ulonglong)DAT_00834138 >> 0x10);
sVar2 = (short)((ulonglong)DAT_00834138 >> 0x20);
sVar3 = (short)((ulonglong)DAT_00834138 >> 0x30);
uVar27 = psraw(CONCAT26((sVar23 * (ushort)((ulonglong)uVar10 >> 0x34) +
sVar36 * (ushort)((ulonglong)uVar11 >> 0x34)) - sVar3,
CONCAT24((sVar20 * ((ushort)((ulonglong)uVar10 >> 0x20) >> 4) +
sVar33 * ((ushort)((ulonglong)uVar11 >> 0x20) >> 4)) - sVar2,
CONCAT22((sVar17 * ((ushort)((ulonglong)uVar10 >> 0x10) >> 4) +
sVar30 * ((ushort)((ulonglong)uVar11 >> 0x10) >> 4)) -
sVar1,((short)DAT_008340b0 * ((ushort)uVar10 >> 4) +
(short)DAT_008340a8 * ((ushort)uVar11 >> 4)) -
(short)DAT_00834138))),8);
uVar14 = psllw(param_4[1],4);
uVar11 = psllw(param_5[1],4);
uVar28 = pmulhw(DAT_00834098,uVar14);
uVar15 = pmulhw(DAT_00834090,uVar11);
uVar10 = *param_3;
sVar13 = (short)uVar15 - (short)DAT_008340c0;
sVar18 = (short)((ulonglong)uVar15 >> 0x10) - sVar18;
sVar21 = (short)((ulonglong)uVar15 >> 0x20) - sVar21;
sVar24 = (short)((ulonglong)uVar15 >> 0x30) - sVar24;
sVar26 = (short)uVar28 - (short)DAT_008340b8;
sVar31 = (short)((ulonglong)uVar28 >> 0x10) - sVar31;
sVar34 = (short)((ulonglong)uVar28 >> 0x20) - sVar34;
sVar37 = (short)((ulonglong)uVar28 >> 0x30) - sVar37;
uVar14 = psraw(CONCAT26((sVar23 * (ushort)((ulonglong)uVar11 >> 0x34) +
sVar36 * (ushort)((ulonglong)uVar14 >> 0x34)) - sVar3,
CONCAT24((sVar20 * ((ushort)((ulonglong)uVar11 >> 0x20) >> 4) +
sVar33 * ((ushort)((ulonglong)uVar14 >> 0x20) >> 4)) - sVar2,
CONCAT22((sVar17 * ((ushort)((ulonglong)uVar11 >> 0x10) >> 4) +
sVar30 * ((ushort)((ulonglong)uVar14 >> 0x10) >> 4)) -
sVar1,((short)DAT_008340b0 * ((ushort)uVar11 >> 4) +
(short)DAT_008340a8 * ((ushort)uVar14 >> 4)) -
(short)DAT_00834138))),8);
uVar42 = (undefined2)((ulonglong)uVar27 >> 0x10);
uVar38 = (undefined2)uVar27;
uVar11 = paddsw(CONCAT44(CONCAT22(sVar16,sVar16),CONCAT22(sVar12,sVar12)),uVar10);
uVar15 = paddsw(CONCAT44(CONCAT22(sVar29,sVar29),CONCAT22(sVar25,sVar25)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar42,uVar42),CONCAT22(uVar38,uVar38)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar15;
sVar3 = (short)((ulonglong)uVar15 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar15 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar15 >> 0x20);
sVar4 = (short)((ulonglong)uVar15 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar15 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
*param_6 = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)))
| CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[1] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar15 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar15 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[1];
uVar43 = (undefined2)((ulonglong)uVar27 >> 0x30);
uVar39 = (undefined2)((ulonglong)uVar27 >> 0x20);
uVar11 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar19,sVar19)),uVar10);
uVar27 = paddsw(CONCAT44(CONCAT22(sVar35,sVar35),CONCAT22(sVar32,sVar32)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar43,uVar43),CONCAT22(uVar39,uVar39)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar27;
sVar3 = (short)((ulonglong)uVar27 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar27 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar27 >> 0x20);
sVar4 = (short)((ulonglong)uVar27 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar27 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[2] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[3] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar27 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar27 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[0x10];
uVar44 = (undefined2)((ulonglong)uVar14 >> 0x10);
uVar40 = (undefined2)uVar14;
uVar11 = paddsw(CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar13,sVar13)),uVar10);
uVar27 = paddsw(CONCAT44(CONCAT22(sVar31,sVar31),CONCAT22(sVar26,sVar26)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar44,uVar44),CONCAT22(uVar40,uVar40)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar27;
sVar3 = (short)((ulonglong)uVar27 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar27 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar27 >> 0x20);
sVar4 = (short)((ulonglong)uVar27 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar27 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[4] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[5] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar27 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar27 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[0x11];
uVar45 = (undefined2)((ulonglong)uVar14 >> 0x30);
uVar41 = (undefined2)((ulonglong)uVar14 >> 0x20);
uVar11 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar21,sVar21)),uVar10);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar37,sVar37),CONCAT22(sVar34,sVar34)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar45,uVar45),CONCAT22(uVar41,uVar41)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar14;
sVar3 = (short)((ulonglong)uVar14 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar14 >> 0x20);
sVar4 = (short)((ulonglong)uVar14 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar14 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[6] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[7] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
param_6 = (ulonglong *)((int)param_6 + param_7);
puVar9 = param_3 + 2;
uVar10 = *puVar9;
uVar11 = paddsw(CONCAT44(CONCAT22(sVar16,sVar16),CONCAT22(sVar12,sVar12)),uVar10);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar29,sVar29),CONCAT22(sVar25,sVar25)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar42,uVar42),CONCAT22(uVar38,uVar38)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar14;
sVar3 = (short)((ulonglong)uVar14 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar14 >> 0x20);
sVar4 = (short)((ulonglong)uVar14 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar14 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
*param_6 = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)))
| CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[1] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[3];
uVar11 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar19,sVar19)),uVar10);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar35,sVar35),CONCAT22(sVar32,sVar32)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar43,uVar43),CONCAT22(uVar39,uVar39)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar14;
sVar3 = (short)((ulonglong)uVar14 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar14 >> 0x20);
sVar4 = (short)((ulonglong)uVar14 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar14 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[2] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[3] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[0x12];
uVar11 = paddsw(CONCAT44(CONCAT22(sVar18,sVar18),CONCAT22(sVar13,sVar13)),uVar10);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar31,sVar31),CONCAT22(sVar26,sVar26)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar44,uVar44),CONCAT22(uVar40,uVar40)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar14;
sVar3 = (short)((ulonglong)uVar14 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar14 >> 0x20);
sVar4 = (short)((ulonglong)uVar14 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar14 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[4] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[5] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
uVar10 = param_3[0x13];
uVar11 = paddsw(CONCAT44(CONCAT22(sVar24,sVar24),CONCAT22(sVar21,sVar21)),uVar10);
uVar14 = paddsw(CONCAT44(CONCAT22(sVar37,sVar37),CONCAT22(sVar34,sVar34)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar45,uVar45),CONCAT22(uVar41,uVar41)));
sVar1 = (short)uVar11;
sVar17 = (short)((ulonglong)uVar11 >> 0x10);
sVar23 = (short)((ulonglong)uVar11 >> 0x20);
sVar36 = (short)((ulonglong)uVar11 >> 0x30);
sVar2 = (short)uVar14;
sVar3 = (short)((ulonglong)uVar14 >> 0x10);
cVar6 = (0 < sVar3) * (sVar3 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar3);
sVar30 = (short)((ulonglong)uVar14 >> 0x20);
sVar4 = (short)((ulonglong)uVar14 >> 0x30);
sVar3 = (short)uVar10;
sVar20 = (short)((ulonglong)uVar10 >> 0x10);
sVar33 = (short)((ulonglong)uVar10 >> 0x20);
sVar5 = (short)((ulonglong)uVar10 >> 0x30);
uVar47 = (ulonglong)
CONCAT12(cVar6,CONCAT11(cVar6,(0 < sVar2) * (sVar2 < 0x100) * (char)uVar14 -
(0xff < sVar2))) & 0xffffffff00ff00ff;
uVar7 = (uint)(((uint7)(byte)((0 < sVar33) * (sVar33 < 0x100) *
(char)((ulonglong)uVar10 >> 0x20) - (0xff < sVar33)) << 0x20) >>
0x18);
uVar46 = psllw((ulonglong)
CONCAT24((short)CONCAT41(uVar7,(0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) -
(0xff < sVar20)),
(uint)(byte)((0 < sVar3) * (sVar3 < 0x100) * (char)uVar10 -
(0xff < sVar3))),8);
param_6[6] = (ulonglong)
CONCAT14((0 < sVar17) * (sVar17 < 0x100) * (char)((ulonglong)uVar11 >> 0x10) -
(0xff < sVar17),
(uint)(byte)((0 < sVar1) * (sVar1 < 0x100) * (char)uVar11 - (0xff < sVar1)
)) |
CONCAT44((uint)(ushort)(uVar47 >> 0x10) << 0x10,(int)uVar47 << 0x10) | uVar46 |
DAT_00834140;
uVar47 = psllw((ulonglong)
CONCAT14((0 < sVar5) * (sVar5 < 0x100) * (char)((ulonglong)uVar10 >> 0x30) -
(0xff < sVar5),uVar7 >> 8),8);
param_6[7] = (ulonglong)
CONCAT14((0 < sVar36) * (sVar36 < 0x100) * (char)((ulonglong)uVar11 >> 0x30) -
(0xff < sVar36),
(uint)(byte)((0 < sVar23) * (sVar23 < 0x100) *
(char)((ulonglong)uVar11 >> 0x20) - (0xff < sVar23))) |
(ulonglong)
CONCAT42((uint)(byte)((0 < sVar4) * (sVar4 < 0x100) *
(char)((ulonglong)uVar14 >> 0x30) - (0xff < sVar4)) << 0x10,
(ushort)(byte)((0 < sVar30) * (sVar30 < 0x100) *
(char)((ulonglong)uVar14 >> 0x20) - (0xff < sVar30))) <<
0x10 | uVar47 | DAT_00834140;
iVar8 = iVar8 + -1;
if (iVar8 == 0) break;
if (iVar8 == 4) {
puVar9 = param_3 + 0x12;
}
param_3 = puVar9 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_6 = (ulonglong *)((int)param_6 + param_7);
}
return CONCAT44(param_2,in_EAX);
}
// --- FUN_0065a7b0 at 0x0065A7B0 (size: 1666) ---
undefined8 __fastcall
FUN_0065a7b0(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,undefined4 param_6,ulonglong *param_7,int param_8)
{
short sVar1;
short sVar2;
short sVar3;
uint uVar4;
ushort uVar5;
ushort uVar6;
ushort uVar7;
undefined4 in_EAX;
int iVar8;
undefined8 *puVar9;
undefined8 uVar10;
short sVar11;
short sVar13;
short sVar14;
undefined8 uVar12;
short sVar15;
short sVar16;
short sVar17;
short sVar20;
short sVar22;
short sVar23;
short sVar24;
undefined8 uVar18;
short sVar21;
short sVar25;
short sVar26;
undefined8 uVar19;
short sVar27;
short sVar28;
short sVar29;
short sVar32;
short sVar34;
ushort uVar35;
short sVar36;
short sVar38;
undefined8 uVar30;
short sVar33;
short sVar37;
short sVar39;
short sVar40;
undefined8 uVar31;
short sVar41;
undefined2 uVar42;
undefined2 uVar43;
undefined2 uVar44;
undefined2 uVar45;
undefined2 uVar46;
undefined2 uVar47;
undefined2 uVar48;
undefined2 uVar49;
short sVar51;
ulonglong uVar50;
ulonglong uVar52;
iVar8 = 8;
while( true ) {
uVar12 = psllw(*param_4,4);
uVar10 = psllw(*param_5,4);
uVar30 = pmulhw(DAT_00834098,uVar12);
uVar18 = pmulhw(DAT_00834090,uVar10);
sVar16 = (short)uVar18 - (short)DAT_008340c0;
sVar22 = (short)((ulonglong)DAT_008340c0 >> 0x10);
sVar20 = (short)((ulonglong)uVar18 >> 0x10) - sVar22;
sVar24 = (short)((ulonglong)DAT_008340c0 >> 0x20);
sVar23 = (short)((ulonglong)uVar18 >> 0x20) - sVar24;
sVar27 = (short)((ulonglong)DAT_008340c0 >> 0x30);
sVar25 = (short)((ulonglong)uVar18 >> 0x30) - sVar27;
sVar28 = (short)uVar30 - (short)DAT_008340b8;
sVar34 = (short)((ulonglong)DAT_008340b8 >> 0x10);
sVar32 = (short)((ulonglong)uVar30 >> 0x10) - sVar34;
sVar38 = (short)((ulonglong)DAT_008340b8 >> 0x20);
sVar36 = (short)((ulonglong)uVar30 >> 0x20) - sVar38;
sVar41 = (short)((ulonglong)DAT_008340b8 >> 0x30);
sVar39 = (short)((ulonglong)uVar30 >> 0x30) - sVar41;
sVar33 = (short)((ulonglong)DAT_008340a8 >> 0x10);
sVar37 = (short)((ulonglong)DAT_008340a8 >> 0x20);
sVar40 = (short)((ulonglong)DAT_008340a8 >> 0x30);
sVar21 = (short)((ulonglong)DAT_008340b0 >> 0x10);
sVar51 = (short)((ulonglong)DAT_008340b0 >> 0x20);
sVar26 = (short)((ulonglong)DAT_008340b0 >> 0x30);
sVar1 = (short)((ulonglong)DAT_00834138 >> 0x10);
sVar2 = (short)((ulonglong)DAT_00834138 >> 0x20);
sVar3 = (short)((ulonglong)DAT_00834138 >> 0x30);
uVar30 = psraw(CONCAT26((sVar26 * (ushort)((ulonglong)uVar10 >> 0x34) +
sVar40 * (ushort)((ulonglong)uVar12 >> 0x34)) - sVar3,
CONCAT24((sVar51 * ((ushort)((ulonglong)uVar10 >> 0x20) >> 4) +
sVar37 * ((ushort)((ulonglong)uVar12 >> 0x20) >> 4)) - sVar2,
CONCAT22((sVar21 * ((ushort)((ulonglong)uVar10 >> 0x10) >> 4) +
sVar33 * ((ushort)((ulonglong)uVar12 >> 0x10) >> 4)) -
sVar1,((short)DAT_008340b0 * ((ushort)uVar10 >> 4) +
(short)DAT_008340a8 * ((ushort)uVar12 >> 4)) -
(short)DAT_00834138))),8);
uVar18 = psllw(param_4[1],4);
uVar12 = psllw(param_5[1],4);
uVar31 = pmulhw(DAT_00834098,uVar18);
uVar19 = pmulhw(DAT_00834090,uVar12);
uVar10 = *param_3;
sVar17 = (short)uVar19 - (short)DAT_008340c0;
sVar22 = (short)((ulonglong)uVar19 >> 0x10) - sVar22;
sVar24 = (short)((ulonglong)uVar19 >> 0x20) - sVar24;
sVar27 = (short)((ulonglong)uVar19 >> 0x30) - sVar27;
sVar29 = (short)uVar31 - (short)DAT_008340b8;
sVar34 = (short)((ulonglong)uVar31 >> 0x10) - sVar34;
sVar38 = (short)((ulonglong)uVar31 >> 0x20) - sVar38;
sVar41 = (short)((ulonglong)uVar31 >> 0x30) - sVar41;
uVar18 = psraw(CONCAT26((sVar26 * (ushort)((ulonglong)uVar12 >> 0x34) +
sVar40 * (ushort)((ulonglong)uVar18 >> 0x34)) - sVar3,
CONCAT24((sVar51 * ((ushort)((ulonglong)uVar12 >> 0x20) >> 4) +
sVar37 * ((ushort)((ulonglong)uVar18 >> 0x20) >> 4)) - sVar2,
CONCAT22((sVar21 * ((ushort)((ulonglong)uVar12 >> 0x10) >> 4) +
sVar33 * ((ushort)((ulonglong)uVar18 >> 0x10) >> 4)) -
sVar1,((short)DAT_008340b0 * ((ushort)uVar12 >> 4) +
(short)DAT_008340a8 * ((ushort)uVar18 >> 4)) -
(short)DAT_00834138))),8);
uVar46 = (undefined2)((ulonglong)uVar30 >> 0x10);
uVar42 = (undefined2)uVar30;
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar16,sVar16)),uVar10);
uVar19 = paddsw(CONCAT44(CONCAT22(sVar32,sVar32),CONCAT22(sVar28,sVar28)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar46,uVar46),CONCAT22(uVar42,uVar42)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar19;
sVar51 = (short)((ulonglong)uVar19 >> 0x10);
sVar37 = (short)((ulonglong)uVar19 >> 0x20);
sVar13 = (short)((ulonglong)uVar19 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar19 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar19 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x60];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
*param_7 = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) - (0xff < sVar21))
,(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar19 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar52 << 0x18)
;
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[1] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar19 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
uVar10 = param_3[1];
uVar47 = (undefined2)((ulonglong)uVar30 >> 0x30);
uVar43 = (undefined2)((ulonglong)uVar30 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar10);
uVar30 = paddsw(CONCAT44(CONCAT22(sVar39,sVar39),CONCAT22(sVar36,sVar36)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar47,uVar47),CONCAT22(uVar43,uVar43)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar30;
sVar51 = (short)((ulonglong)uVar30 >> 0x10);
sVar37 = (short)((ulonglong)uVar30 >> 0x20);
sVar13 = (short)((ulonglong)uVar30 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar30 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar30 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x61];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[2] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar30 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar4 = (uint)(ushort)(uVar52 >> 0x20);
param_7[3] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar30 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 |
CONCAT44((int)(CONCAT24((short)(uVar52 >> 0x30),uVar4) >> 0x10) << 8,uVar4 << 0x18)
;
uVar10 = param_3[0x10];
uVar48 = (undefined2)((ulonglong)uVar18 >> 0x10);
uVar44 = (undefined2)uVar18;
uVar12 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar17,sVar17)),uVar10);
uVar30 = paddsw(CONCAT44(CONCAT22(sVar34,sVar34),CONCAT22(sVar29,sVar29)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar48,uVar48),CONCAT22(uVar44,uVar44)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar30;
sVar51 = (short)((ulonglong)uVar30 >> 0x10);
sVar37 = (short)((ulonglong)uVar30 >> 0x20);
sVar13 = (short)((ulonglong)uVar30 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar30 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar30 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x70];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[4] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar30 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[5] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar30 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
uVar10 = param_3[0x11];
uVar49 = (undefined2)((ulonglong)uVar18 >> 0x30);
uVar45 = (undefined2)((ulonglong)uVar18 >> 0x20);
uVar12 = paddsw(CONCAT44(CONCAT22(sVar27,sVar27),CONCAT22(sVar24,sVar24)),uVar10);
uVar18 = paddsw(CONCAT44(CONCAT22(sVar41,sVar41),CONCAT22(sVar38,sVar38)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar49,uVar49),CONCAT22(uVar45,uVar45)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar18;
sVar51 = (short)((ulonglong)uVar18 >> 0x10);
sVar37 = (short)((ulonglong)uVar18 >> 0x20);
sVar13 = (short)((ulonglong)uVar18 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x71];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[6] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar18 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[7] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
param_7 = (ulonglong *)((int)param_7 + param_8);
puVar9 = param_3 + 2;
uVar10 = *puVar9;
uVar12 = paddsw(CONCAT44(CONCAT22(sVar20,sVar20),CONCAT22(sVar16,sVar16)),uVar10);
uVar18 = paddsw(CONCAT44(CONCAT22(sVar32,sVar32),CONCAT22(sVar28,sVar28)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar46,uVar46),CONCAT22(uVar42,uVar42)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar18;
sVar51 = (short)((ulonglong)uVar18 >> 0x10);
sVar37 = (short)((ulonglong)uVar18 >> 0x20);
sVar13 = (short)((ulonglong)uVar18 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x62];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
*param_7 = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) - (0xff < sVar21))
,(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar18 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,(uint)(ushort)uVar52 << 0x18)
;
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[1] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
uVar10 = param_3[3];
uVar12 = paddsw(CONCAT44(CONCAT22(sVar25,sVar25),CONCAT22(sVar23,sVar23)),uVar10);
uVar18 = paddsw(CONCAT44(CONCAT22(sVar39,sVar39),CONCAT22(sVar36,sVar36)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar47,uVar47),CONCAT22(uVar43,uVar43)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar18;
sVar51 = (short)((ulonglong)uVar18 >> 0x10);
sVar37 = (short)((ulonglong)uVar18 >> 0x20);
sVar13 = (short)((ulonglong)uVar18 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[99];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[2] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar18 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[3] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
uVar10 = param_3[0x12];
uVar12 = paddsw(CONCAT44(CONCAT22(sVar22,sVar22),CONCAT22(sVar17,sVar17)),uVar10);
uVar18 = paddsw(CONCAT44(CONCAT22(sVar34,sVar34),CONCAT22(sVar29,sVar29)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar48,uVar48),CONCAT22(uVar44,uVar44)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar18;
sVar51 = (short)((ulonglong)uVar18 >> 0x10);
sVar37 = (short)((ulonglong)uVar18 >> 0x20);
sVar13 = (short)((ulonglong)uVar18 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x72];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[4] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar18 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[5] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
uVar10 = param_3[0x13];
uVar12 = paddsw(CONCAT44(CONCAT22(sVar27,sVar27),CONCAT22(sVar24,sVar24)),uVar10);
uVar18 = paddsw(CONCAT44(CONCAT22(sVar41,sVar41),CONCAT22(sVar38,sVar38)),uVar10);
uVar10 = psubsw(uVar10,CONCAT44(CONCAT22(uVar49,uVar49),CONCAT22(uVar45,uVar45)));
sVar1 = (short)uVar12;
sVar21 = (short)((ulonglong)uVar12 >> 0x10);
sVar33 = (short)((ulonglong)uVar12 >> 0x20);
sVar11 = (short)((ulonglong)uVar12 >> 0x30);
sVar2 = (short)uVar18;
sVar51 = (short)((ulonglong)uVar18 >> 0x10);
sVar37 = (short)((ulonglong)uVar18 >> 0x20);
sVar13 = (short)((ulonglong)uVar18 >> 0x30);
sVar3 = (short)uVar10;
sVar26 = (short)((ulonglong)uVar10 >> 0x10);
sVar40 = (short)((ulonglong)uVar10 >> 0x20);
sVar14 = (short)((ulonglong)uVar10 >> 0x30);
uVar7 = (ushort)(((uint7)(byte)((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar12 >> 0x30) - (0xff < sVar11)) << 0x30) >>
0x28);
uVar5 = (ushort)(((uint7)(byte)((0 < sVar13) * (sVar13 < 0x100) *
(char)((ulonglong)uVar18 >> 0x30) - (0xff < sVar13)) << 0x30) >>
0x28);
uVar6 = (ushort)(((uint7)(byte)((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar10 >> 0x30) - (0xff < sVar14)) << 0x30) >>
0x28);
sVar11 = (short)DAT_00834148;
sVar13 = (short)((ulonglong)DAT_00834148 >> 0x10);
sVar14 = (short)((ulonglong)DAT_00834148 >> 0x20);
sVar15 = (short)((ulonglong)DAT_00834148 >> 0x30);
uVar35 = sVar13 - (ushort)(byte)((0 < sVar51) * (sVar51 < 0x100) *
(char)((ulonglong)uVar18 >> 0x10) - (0xff < sVar51));
sVar51 = sVar13 - (ushort)(byte)((0 < sVar26) * (sVar26 < 0x100) *
(char)((ulonglong)uVar10 >> 0x10) - (0xff < sVar26));
uVar52 = param_3[0x73];
uVar50 = psllw((ulonglong)
CONCAT24(sVar51,CONCAT22(sVar51,sVar11 - (ushort)(byte)((0 < sVar3) *
(sVar3 < 0x100) *
(char)uVar10 -
(0xff < sVar3)))) &
0xffffffff0000ffff,8);
param_7[6] = (ulonglong)
CONCAT24(sVar13 - (ushort)(byte)((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar12 >> 0x10) -
(0xff < sVar21)),
(uint)(ushort)(sVar11 - (ushort)(byte)((0 < sVar1) * (sVar1 < 0x100) *
(char)uVar12 - (0xff < sVar1)))) |
CONCAT44((uint)uVar35 << 0x10,
CONCAT22(uVar35,sVar11 - (ushort)(byte)((0 < sVar2) * (sVar2 < 0x100) *
(char)uVar18 - (0xff < sVar2))) <<
0x10) | uVar50 |
CONCAT44((int)(((uVar52 >> 0x10) << 0x30) >> 0x20) << 8,
(uint)(ushort)uVar52 << 0x18);
uVar50 = psllw((ulonglong)
CONCAT24(sVar15 - (uVar6 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar6,(0 < sVar40) *
(sVar40 < 0x100) *
(char)((ulonglong)uVar10
>> 0x20) -
(0xff < sVar40)))),8);
uVar52 = psllw((ulonglong)CONCAT24((short)(uVar52 >> 0x30),(uint)(ushort)(uVar52 >> 0x20)) <<
0x10,8);
param_7[7] = (ulonglong)
CONCAT24(sVar15 - (uVar7 >> 8),
(uint)(ushort)(sVar14 - (short)CONCAT21(uVar7,(0 < sVar33) *
(sVar33 < 0x100) *
(char)((ulonglong)uVar12 >>
0x20) -
(0xff < sVar33)))) |
(ulonglong)
CONCAT42((uint)(ushort)(sVar15 - (uVar5 >> 8)) << 0x10,
sVar14 - (short)CONCAT21(uVar5,(0 < sVar37) * (sVar37 < 0x100) *
(char)((ulonglong)uVar18 >> 0x20) -
(0xff < sVar37))) << 0x10 | uVar50 | uVar52
;
iVar8 = iVar8 + -1;
if (iVar8 == 0) break;
if (iVar8 == 4) {
puVar9 = param_3 + 0x12;
}
param_3 = puVar9 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_7 = (ulonglong *)((int)param_7 + param_8);
}
return CONCAT44(param_2,in_EAX);
}
// --- FUN_0065ae40 at 0x0065AE40 (size: 171) ---
undefined8 __fastcall
FUN_0065ae40(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4,
undefined8 *param_5,undefined8 *param_6,int param_7)
{
undefined8 uVar1;
undefined8 uVar2;
undefined8 uVar3;
undefined8 uVar4;
undefined4 in_EAX;
int iVar5;
short sVar6;
short sVar7;
short sVar8;
short sVar9;
short sVar10;
short sVar11;
short sVar12;
short sVar13;
short sVar14;
short sVar15;
short sVar16;
short sVar17;
short sVar18;
short sVar19;
short sVar20;
short sVar21;
iVar5 = 8;
do {
uVar1 = *param_3;
uVar2 = param_3[1];
uVar3 = *param_4;
uVar4 = *param_5;
sVar13 = (short)((ulonglong)uVar4 >> 0x10);
sVar11 = (short)((ulonglong)uVar3 >> 0x10);
sVar10 = (short)uVar3;
sVar12 = (short)uVar4;
sVar16 = (short)((ulonglong)uVar3 >> 0x20);
sVar14 = (short)((ulonglong)uVar4 >> 0x20);
sVar17 = (short)((ulonglong)uVar3 >> 0x30);
sVar15 = (short)((ulonglong)uVar4 >> 0x30);
sVar7 = (short)((ulonglong)uVar1 >> 0x10);
sVar6 = (short)uVar1;
sVar20 = (short)((ulonglong)uVar1 >> 0x20);
sVar21 = (short)((ulonglong)uVar1 >> 0x30);
sVar9 = (short)((ulonglong)uVar2 >> 0x10);
sVar8 = (short)uVar2;
sVar18 = (short)((ulonglong)uVar2 >> 0x20);
sVar19 = (short)((ulonglong)uVar2 >> 0x30);
*param_6 = CONCAT17((0 < sVar13) * (sVar13 < 0x100) * (char)((ulonglong)uVar4 >> 0x10) -
(0xff < sVar13),
CONCAT16((0 < sVar21) * (sVar21 < 0x100) * (char)((ulonglong)uVar1 >> 0x30)
- (0xff < sVar21),
CONCAT15((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar3 >> 0x10) - (0xff < sVar11),
CONCAT14((0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar1 >> 0x20) -
(0xff < sVar20),
CONCAT13((0 < sVar12) * (sVar12 < 0x100) *
(char)uVar4 - (0xff < sVar12),
CONCAT12((0 < sVar7) * (sVar7 < 0x100) *
(char)((ulonglong)uVar1 >> 0x10
) - (0xff < sVar7),
CONCAT11((0 < sVar10) *
(sVar10 < 0x100) *
(char)uVar3 -
(0xff < sVar10),
(0 < sVar6) *
(sVar6 < 0x100) *
(char)uVar1 -
(0xff < sVar6))))))));
param_6[1] = CONCAT17((0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar4 >> 0x30) -
(0xff < sVar15),
CONCAT16((0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar2 >> 0x30) - (0xff < sVar19),
CONCAT15((0 < sVar17) * (sVar17 < 0x100) *
(char)((ulonglong)uVar3 >> 0x30) - (0xff < sVar17),
CONCAT14((0 < sVar18) * (sVar18 < 0x100) *
(char)((ulonglong)uVar2 >> 0x20) -
(0xff < sVar18),
CONCAT13((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar4 >> 0x20) -
(0xff < sVar14),
CONCAT12((0 < sVar9) * (sVar9 < 0x100)
* (char)((ulonglong)uVar2 >>
0x10) -
(0xff < sVar9),
CONCAT11((0 < sVar16) *
(sVar16 < 0x100) *
(char)((ulonglong)
uVar3 >> 0x20
) - (0xff <
sVar16),(0 < sVar8) * (sVar8 < 0x100) *
(char)uVar2 - (0xff < sVar8))))))));
uVar1 = param_3[0x10];
uVar2 = param_3[0x11];
uVar3 = param_4[1];
uVar4 = param_5[1];
sVar13 = (short)((ulonglong)uVar4 >> 0x10);
sVar11 = (short)((ulonglong)uVar3 >> 0x10);
sVar10 = (short)uVar3;
sVar12 = (short)uVar4;
sVar16 = (short)((ulonglong)uVar3 >> 0x20);
sVar14 = (short)((ulonglong)uVar4 >> 0x20);
sVar17 = (short)((ulonglong)uVar3 >> 0x30);
sVar15 = (short)((ulonglong)uVar4 >> 0x30);
sVar7 = (short)((ulonglong)uVar1 >> 0x10);
sVar6 = (short)uVar1;
sVar20 = (short)((ulonglong)uVar1 >> 0x20);
sVar21 = (short)((ulonglong)uVar1 >> 0x30);
sVar9 = (short)((ulonglong)uVar2 >> 0x10);
sVar8 = (short)uVar2;
sVar18 = (short)((ulonglong)uVar2 >> 0x20);
sVar19 = (short)((ulonglong)uVar2 >> 0x30);
param_6[2] = CONCAT17((0 < sVar13) * (sVar13 < 0x100) * (char)((ulonglong)uVar4 >> 0x10) -
(0xff < sVar13),
CONCAT16((0 < sVar21) * (sVar21 < 0x100) *
(char)((ulonglong)uVar1 >> 0x30) - (0xff < sVar21),
CONCAT15((0 < sVar11) * (sVar11 < 0x100) *
(char)((ulonglong)uVar3 >> 0x10) - (0xff < sVar11),
CONCAT14((0 < sVar20) * (sVar20 < 0x100) *
(char)((ulonglong)uVar1 >> 0x20) -
(0xff < sVar20),
CONCAT13((0 < sVar12) * (sVar12 < 0x100) *
(char)uVar4 - (0xff < sVar12),
CONCAT12((0 < sVar7) * (sVar7 < 0x100)
* (char)((ulonglong)uVar1 >>
0x10) -
(0xff < sVar7),
CONCAT11((0 < sVar10) *
(sVar10 < 0x100) *
(char)uVar3 -
(0xff < sVar10),
(0 < sVar6) *
(sVar6 < 0x100) *
(char)uVar1 -
(0xff < sVar6)))))))
);
param_6[3] = CONCAT17((0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar4 >> 0x30) -
(0xff < sVar15),
CONCAT16((0 < sVar19) * (sVar19 < 0x100) *
(char)((ulonglong)uVar2 >> 0x30) - (0xff < sVar19),
CONCAT15((0 < sVar17) * (sVar17 < 0x100) *
(char)((ulonglong)uVar3 >> 0x30) - (0xff < sVar17),
CONCAT14((0 < sVar18) * (sVar18 < 0x100) *
(char)((ulonglong)uVar2 >> 0x20) -
(0xff < sVar18),
CONCAT13((0 < sVar14) * (sVar14 < 0x100) *
(char)((ulonglong)uVar4 >> 0x20) -
(0xff < sVar14),
CONCAT12((0 < sVar9) * (sVar9 < 0x100)
* (char)((ulonglong)uVar2 >>
0x10) -
(0xff < sVar9),
CONCAT11((0 < sVar16) *
(sVar16 < 0x100) *
(char)((ulonglong)
uVar3 >> 0x20
) - (0xff <
sVar16),(0 < sVar8) * (sVar8 < 0x100) *
(char)uVar2 - (0xff < sVar8))))))));
param_3 = param_3 + 2;
param_4 = param_4 + 2;
param_5 = param_5 + 2;
param_6 = (undefined8 *)((int)param_6 + param_7);
iVar5 = iVar5 + -1;
} while (iVar5 != 0);
return CONCAT44(param_2,in_EAX);
}
// --- FUN_0065aef0 at 0x0065AEF0 (size: 28) ---
void FUN_0065aef0(undefined4 param_1)
{
FUN_0040f420(1,DAT_008f8604,param_1,&stack0x00000008);
return;
}
// --- FUN_0065af10 at 0x0065AF10 (size: 28) ---
void FUN_0065af10(undefined4 param_1)
{
FUN_0040f420(1,DAT_008f8608,param_1,&stack0x00000008);
return;
}
// --- FUN_0065af30 at 0x0065AF30 (size: 60) ---
void FUN_0065af30(undefined4 param_1)
{
FUN_0040fa60(DAT_008f8600,param_1);
FUN_0040fa60(DAT_008f8604,param_1);
FUN_0040fa60(DAT_008f8608,param_1);
FUN_0040fa60(DAT_008f860c,param_1);
return;
}
// --- FUN_0065af70 at 0x0065AF70 (size: 25) ---
void FUN_0065af70(undefined4 *param_1)
{
FUN_0040f0e0(1,DAT_008f8608,*param_1);
return;
}
// --- FUN_0065af90 at 0x0065AF90 (size: 19) ---
undefined4 FUN_0065af90(int *param_1)
{
undefined4 uVar1;
if (param_1 != (int *)0x0) {
/* WARNING: Could not recover jumptable at 0x0065af9a. Too many branches */
/* WARNING: Treating indirect jump as call */
uVar1 = (**(code **)(*param_1 + 4))();
return uVar1;
}
return 0xff;
}
// --- FUN_0065afb0 at 0x0065AFB0 (size: 56) ---
uint __thiscall FUN_0065afb0(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
return CONCAT31((int3)((uint)param_1[1] >> 8),param_1[1] == param_2[1]);
}
// --- FUN_0065aff0 at 0x0065AFF0 (size: 72) ---
uint __thiscall FUN_0065aff0(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
if ((param_1[2] == param_2[2]) && (param_1[3] == param_2[3])) {
return 1;
}
return 0;
}
// --- FUN_0065b040 at 0x0065B040 (size: 77) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
uint __thiscall FUN_0065b040(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
if (ABS(*(double *)(param_1 + 2) - *(double *)(param_2 + 2)) < _DAT_007fe920 !=
(ABS(*(double *)(param_1 + 2) - *(double *)(param_2 + 2)) == _DAT_007fe920)) {
return 1;
}
return 0;
}
// --- FUN_0065b090 at 0x0065B090 (size: 76) ---
uint __thiscall FUN_0065b090(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
if ((param_1[2] == param_2[2]) && (param_1[3] == param_2[3])) {
return 1;
}
return 0;
}
// --- FUN_0065b0e0 at 0x0065B0E0 (size: 56) ---
bool __thiscall FUN_0065b0e0(int *param_1,int *param_2)
{
int iVar1;
int iVar2;
iVar1 = (**(code **)(*param_2 + 4))();
iVar2 = (**(code **)(*param_1 + 4))();
if (iVar1 != iVar2) {
return false;
}
return (char)param_1[1] == (char)param_2[1];
}
// --- FUN_0065b1d0 at 0x0065B1D0 (size: 31) ---
undefined4 * __thiscall FUN_0065b1d0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_0079702c;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065b340 at 0x0065B340 (size: 77) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
uint __thiscall FUN_0065b340(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
if (ABS((float)param_1[1] - (float)param_2[1]) < _DAT_007fe918 !=
(ABS((float)param_1[1] - (float)param_2[1]) == _DAT_007fe918)) {
return 1;
}
return 0;
}
// --- FUN_0065b390 at 0x0065B390 (size: 56) ---
uint __thiscall FUN_0065b390(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
return (uint)((short)param_1[1] == (short)param_2[1]);
}
// --- FUN_0065b3d0 at 0x0065B3D0 (size: 55) ---
uint __thiscall FUN_0065b3d0(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
uVar1 = FUN_00401920(param_2 + 1);
return uVar1;
}
// --- FUN_0065b410 at 0x0065B410 (size: 88) ---
uint __thiscall FUN_0065b410(int *param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uVar1 = (**(code **)(*param_2 + 4))();
uVar2 = (**(code **)(*param_1 + 4))();
if (uVar1 != uVar2) {
return uVar2 & 0xffffff00;
}
if ((((param_1[1] == param_2[1]) && (param_1[2] == param_2[2])) && (param_1[3] == param_2[3])) &&
(param_1[4] == param_2[4])) {
return 1;
}
return 0;
}
// --- FUN_0065b470 at 0x0065B470 (size: 18) ---
void FUN_0065b470(void)
{
FUN_0040fd30();
return;
}
// --- FUN_0065b490 at 0x0065B490 (size: 105) ---
undefined1 FUN_0065b490(char *param_1)
{
int *piVar1;
LONG LVar2;
undefined1 uVar3;
char *local_4;
local_4 = (char *)0x0;
piVar1 = _errno();
*piVar1 = 0;
strtoul(param_1,&local_4,0);
if (*local_4 == '\0') {
piVar1 = _errno();
if (*piVar1 != 0x22) {
uVar3 = 1;
goto LAB_0065b4d5;
}
}
uVar3 = 0;
LAB_0065b4d5:
LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10));
if ((LVar2 == 0) && (param_1 + -0x14 != (char *)0x0)) {
(*(code *)**(undefined4 **)(param_1 + -0x14))(1);
}
return uVar3;
}
// --- FUN_0065b500 at 0x0065B500 (size: 105) ---
undefined1 FUN_0065b500(char *param_1)
{
int *piVar1;
LONG LVar2;
undefined1 uVar3;
char *local_4;
local_4 = (char *)0x0;
piVar1 = _errno();
*piVar1 = 0;
strtol(param_1,&local_4,0);
if (*local_4 == '\0') {
piVar1 = _errno();
if (*piVar1 != 0x22) {
uVar3 = 1;
goto LAB_0065b545;
}
}
uVar3 = 0;
LAB_0065b545:
LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10));
if ((LVar2 == 0) && (param_1 + -0x14 != (char *)0x0)) {
(*(code *)**(undefined4 **)(param_1 + -0x14))(1);
}
return uVar3;
}
// --- FUN_0065b570 at 0x0065B570 (size: 104) ---
undefined1 FUN_0065b570(int param_1)
{
int *piVar1;
LONG LVar2;
undefined1 uVar3;
char *local_4;
local_4 = (char *)0x0;
piVar1 = _errno();
*piVar1 = 0;
FUN_0065de50(param_1,&local_4,0);
if (*local_4 == '\0') {
piVar1 = _errno();
if (*piVar1 != 0x22) {
uVar3 = 1;
goto LAB_0065b5b4;
}
}
uVar3 = 0;
LAB_0065b5b4:
LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10));
if ((LVar2 == 0) && ((undefined4 *)(param_1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(param_1 + -0x14))(1);
}
return uVar3;
}
// --- FUN_0065b5e0 at 0x0065B5E0 (size: 104) ---
undefined1 FUN_0065b5e0(int param_1)
{
int *piVar1;
LONG LVar2;
undefined1 uVar3;
char *local_4;
local_4 = (char *)0x0;
piVar1 = _errno();
*piVar1 = 0;
FUN_0065de30(param_1,&local_4,0);
if (*local_4 == '\0') {
piVar1 = _errno();
if (*piVar1 != 0x22) {
uVar3 = 1;
goto LAB_0065b624;
}
}
uVar3 = 0;
LAB_0065b624:
LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10));
if ((LVar2 == 0) && ((undefined4 *)(param_1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(param_1 + -0x14))(1);
}
return uVar3;
}
// --- FUN_0065b650 at 0x0065B650 (size: 105) ---
undefined1 FUN_0065b650(char *param_1)
{
int *piVar1;
LONG LVar2;
undefined1 uVar3;
char *local_4;
local_4 = (char *)0x0;
piVar1 = _errno();
*piVar1 = 0;
strtod(param_1,&local_4);
if (*local_4 == '\0') {
piVar1 = _errno();
if (*piVar1 != 0x22) {
uVar3 = 1;
goto LAB_0065b695;
}
}
uVar3 = 0;
LAB_0065b695:
LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10));
if ((LVar2 == 0) && (param_1 + -0x14 != (char *)0x0)) {
(*(code *)**(undefined4 **)(param_1 + -0x14))(1);
}
return uVar3;
}
// --- FUN_0065b6c0 at 0x0065B6C0 (size: 60) ---
void __thiscall FUN_0065b6c0(int param_1,int param_2)
{
undefined2 *puVar1;
FUN_0040ad10(2);
puVar1 = (undefined2 *)FUN_0040acf0(2);
if (puVar1 != (undefined2 *)0x0) {
if ((*(byte *)(param_2 + 4) & 1) != 0) {
*puVar1 = *(undefined2 *)(param_1 + 4);
return;
}
*(undefined2 *)(param_1 + 4) = *puVar1;
}
return;
}
// --- FUN_0065b720 at 0x0065B720 (size: 61) ---
void FUN_0065b720(undefined4 *param_1,int param_2)
{
undefined4 *puVar1;
FUN_0040ad10(8);
puVar1 = (undefined4 *)FUN_0040acf0(8);
if (puVar1 != (undefined4 *)0x0) {
if ((*(byte *)(param_2 + 4) & 1) != 0) {
*puVar1 = *param_1;
puVar1[1] = param_1[1];
return;
}
*param_1 = *puVar1;
param_1[1] = puVar1[1];
}
return;
}
// --- FUN_0065b7c0 at 0x0065B7C0 (size: 366) ---
undefined4 * FUN_0065b7c0(int param_1)
{
int iVar1;
undefined4 *puVar2;
if (param_1 < 0x100) {
switch(param_1) {
case 0:
iVar1 = FUN_005df0f5(8);
if (iVar1 != 0) {
puVar2 = (undefined4 *)FUN_00429c40();
return puVar2;
}
break;
case 1:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_00798108;
return puVar2;
}
break;
case 2:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_00798124;
return puVar2;
}
break;
case 3:
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_00797e28;
return puVar2;
}
break;
case 4:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007980d0;
return puVar2;
}
break;
case 5:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe960;
return puVar2;
}
break;
case 6:
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe97c;
return puVar2;
}
break;
case 7:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_00797010;
return puVar2;
}
break;
case 8:
puVar2 = (undefined4 *)FUN_005df0f5(8);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007980ec;
return puVar2;
}
break;
case 9:
iVar1 = FUN_005df0f5(0x10);
if (iVar1 != 0) {
puVar2 = (undefined4 *)FUN_00444800();
return puVar2;
}
break;
case 0xb:
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe928;
return puVar2;
}
break;
case 0xc:
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe944;
return puVar2;
}
break;
case 0xd:
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe9b4;
return puVar2;
}
break;
case 0xe:
puVar2 = (undefined4 *)FUN_005df0f5(0x14);
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = &PTR_FUN_007fe998;
return puVar2;
}
}
}
return (undefined4 *)0x0;
}
// --- FUN_0065b970 at 0x0065B970 (size: 87) ---
undefined4 __thiscall FUN_0065b970(int param_1,int *param_2)
{
char *_Str;
char cVar1;
int *piVar2;
ulong uVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b490(iVar4);
if (cVar1 != '\0') {
_Str = (char *)*param_2;
piVar2 = _errno();
*piVar2 = 0;
uVar3 = strtoul(_Str,(char **)0x0,0);
*(ulong *)(param_1 + 4) = uVar3;
return 1;
}
return 0;
}
// --- FUN_0065b9d0 at 0x0065B9D0 (size: 87) ---
undefined4 __thiscall FUN_0065b9d0(int param_1,int *param_2)
{
char *_Str;
char cVar1;
int *piVar2;
long lVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b500(iVar4);
if (cVar1 != '\0') {
_Str = (char *)*param_2;
piVar2 = _errno();
*piVar2 = 0;
lVar3 = strtol(_Str,(char **)0x0,0);
*(long *)(param_1 + 4) = lVar3;
return 1;
}
return 0;
}
// --- FUN_0065ba30 at 0x0065BA30 (size: 89) ---
undefined4 __thiscall FUN_0065ba30(int param_1,int *param_2)
{
char cVar1;
int *piVar2;
undefined8 uVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b570(iVar4);
if (cVar1 != '\0') {
iVar4 = *param_2;
piVar2 = _errno();
*piVar2 = 0;
uVar3 = FUN_0065de50(iVar4,0,0);
*(undefined8 *)(param_1 + 8) = uVar3;
return 1;
}
return 0;
}
// --- FUN_0065ba90 at 0x0065BA90 (size: 89) ---
undefined4 __thiscall FUN_0065ba90(int param_1,int *param_2)
{
char cVar1;
int *piVar2;
undefined8 uVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b5e0(iVar4);
if (cVar1 != '\0') {
iVar4 = *param_2;
piVar2 = _errno();
*piVar2 = 0;
uVar3 = FUN_0065de30(iVar4,0,0);
*(undefined8 *)(param_1 + 8) = uVar3;
return 1;
}
return 0;
}
// --- FUN_0065baf0 at 0x0065BAF0 (size: 85) ---
undefined4 __thiscall FUN_0065baf0(int param_1,int *param_2)
{
char *_Str;
char cVar1;
int *piVar2;
double dVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b650(iVar4);
if (cVar1 != '\0') {
_Str = (char *)*param_2;
piVar2 = _errno();
*piVar2 = 0;
dVar3 = strtod(_Str,(char **)0x0);
*(double *)(param_1 + 8) = dVar3;
return 1;
}
return 0;
}
// --- FUN_0065bb50 at 0x0065BB50 (size: 85) ---
undefined4 __thiscall FUN_0065bb50(int param_1,int *param_2)
{
char *_Str;
char cVar1;
int *piVar2;
double dVar3;
int iVar4;
iVar4 = *param_2;
InterlockedIncrement((LONG *)(iVar4 + -0x10));
cVar1 = FUN_0065b650(iVar4);
if (cVar1 != '\0') {
_Str = (char *)*param_2;
piVar2 = _errno();
*piVar2 = 0;
dVar3 = strtod(_Str,(char **)0x0);
*(float *)(param_1 + 4) = (float)dVar3;
return 1;
}
return 0;
}
// --- FUN_0065bc10 at 0x0065BC10 (size: 80) ---
undefined4 __thiscall FUN_0065bc10(int param_1,undefined4 *param_2)
{
int iVar1;
iVar1 = _stricmp((char *)*param_2,DAT_008f8610);
if (iVar1 != 0) {
iVar1 = _stricmp((char *)*param_2,DAT_008f8618);
if (iVar1 != 0) {
*(undefined1 *)(param_1 + 4) = 0;
return 1;
}
}
*(undefined1 *)(param_1 + 4) = 1;
return 1;
}
// --- FUN_0065bc90 at 0x0065BC90 (size: 114) ---
undefined4 FUN_0065bc90(int *param_1)
{
undefined4 uVar1;
LONG LVar2;
undefined4 *puVar3;
undefined1 local_c [12];
param_1 = (int *)*param_1;
InterlockedIncrement((LONG *)((int)param_1 + -0x10));
FUN_0040de60(&param_1);
uVar1 = FUN_0040baa0(local_c,&param_1);
FUN_004070d0(uVar1);
FUN_00406f90();
puVar3 = (undefined4 *)((int)param_1 + -0x14);
LVar2 = InterlockedDecrement((LONG *)((int)param_1 + -0x10));
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
(**(code **)*puVar3)(1);
}
return 1;
}
// --- FUN_0065bd70 at 0x0065BD70 (size: 20) ---
undefined4 FUN_0065bd70(undefined4 param_1)
{
FUN_0040fde0(param_1);
return param_1;
}
// --- FUN_0065bd90 at 0x0065BD90 (size: 303) ---
void FUN_0065bd90(undefined4 param_1,uint *param_2,uint param_3)
{
char cVar1;
uint uVar2;
uint uVar3;
ushort local_8 [2];
uint local_4;
uVar2 = param_3;
if ((*(byte *)(param_3 + 4) & 1) == 0) {
if ((~*(byte *)(param_3 + 4) & 1) != 0) {
FUN_0040b0b0(&param_3,param_3);
uVar3 = param_3;
cVar1 = (char)param_3;
if ((char)param_3 < '\0') {
FUN_0040b0b0(&param_3,uVar2);
if ((uVar3 & 0x40) != 0) {
FUN_0065bec0(local_8,uVar2);
*param_2 = (CONCAT11(cVar1,(char)param_3) & 0xffff3fff) << 0x10 | (uint)local_8[0];
return;
}
*param_2 = CONCAT11(cVar1,(char)param_3) & 0xffff7fff;
return;
}
*param_2 = param_3 & 0xff;
}
return;
}
local_4 = *param_2;
if (local_4 < 0x80) {
param_3 = CONCAT31(param_3._1_3_,(char)local_4);
FUN_0040b0b0(&param_3,uVar2);
return;
}
if (local_4 < 0x4000) {
param_3 = CONCAT31(param_3._1_3_,*(undefined1 *)((int)param_2 + 1)) | 0x80;
local_8[0] = CONCAT11(local_8[0]._1_1_,(char)*param_2);
FUN_0040b0b0(&param_3,uVar2);
FUN_0040b0b0(local_8,uVar2);
return;
}
param_3 = CONCAT31(param_3._1_3_,(char)(local_4 >> 0x18)) | 0xc0;
local_8[0] = CONCAT11(local_8[0]._1_1_,(char)(local_4 >> 0x10));
FUN_0040b0b0(&param_3,uVar2);
FUN_0040b0b0(local_8,uVar2);
FUN_0065bec0(&local_4,uVar2);
return;
}
// --- FUN_0065bec0 at 0x0065BEC0 (size: 53) ---
void FUN_0065bec0(undefined2 *param_1,int param_2)
{
undefined2 *puVar1;
FUN_0040ad10(2);
puVar1 = (undefined2 *)FUN_0040acf0(2);
if (puVar1 != (undefined2 *)0x0) {
if ((*(byte *)(param_2 + 4) & 1) != 0) {
*puVar1 = *param_1;
return;
}
*param_1 = *puVar1;
}
return;
}
// --- FUN_0065c360 at 0x0065C360 (size: 132) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
ushort __fastcall FUN_0065c360(float *param_1)
{
float fVar1;
ushort uVar2;
fVar1 = param_1[3];
uVar2 = (ushort)(fVar1 < _DAT_007fea04) << 8 | (ushort)(NAN(fVar1) || NAN(_DAT_007fea04)) << 10 |
(ushort)(fVar1 == _DAT_007fea04) << 0xe;
if (fVar1 >= _DAT_007fea04) {
fVar1 = *param_1;
uVar2 = (ushort)(fVar1 < _DAT_007fea04) << 8 | (ushort)(NAN(fVar1) || NAN(_DAT_007fea04)) << 10
| (ushort)(fVar1 == _DAT_007fea04) << 0xe;
if (fVar1 >= _DAT_007fea04) {
fVar1 = param_1[1];
uVar2 = (ushort)(fVar1 < _DAT_007fea04) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea04)) << 10 |
(ushort)(fVar1 == _DAT_007fea04) << 0xe;
if (fVar1 >= _DAT_007fea04) {
fVar1 = param_1[2];
uVar2 = (ushort)(fVar1 < _DAT_007fea04) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea04)) << 10 |
(ushort)(fVar1 == _DAT_007fea04) << 0xe;
if (fVar1 >= _DAT_007fea04) {
fVar1 = param_1[3];
uVar2 = (ushort)(fVar1 < _DAT_007fea00) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea00)) << 10 |
(ushort)(fVar1 == _DAT_007fea00) << 0xe;
if (fVar1 < _DAT_007fea00 || (fVar1 == _DAT_007fea00) != 0) {
fVar1 = *param_1;
uVar2 = (ushort)(fVar1 < _DAT_007fea00) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea00)) << 10 |
(ushort)(fVar1 == _DAT_007fea00) << 0xe;
if (fVar1 < _DAT_007fea00 || (fVar1 == _DAT_007fea00) != 0) {
fVar1 = param_1[1];
uVar2 = (ushort)(fVar1 < _DAT_007fea00) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea00)) << 10 |
(ushort)(fVar1 == _DAT_007fea00) << 0xe;
if (fVar1 < _DAT_007fea00 || (fVar1 == _DAT_007fea00) != 0) {
fVar1 = param_1[2];
uVar2 = (ushort)(fVar1 < _DAT_007fea00) << 8 |
(ushort)(NAN(fVar1) || NAN(_DAT_007fea00)) << 10 |
(ushort)(fVar1 == _DAT_007fea00) << 0xe;
if (fVar1 < _DAT_007fea00 || (fVar1 == _DAT_007fea00) != 0) {
return CONCAT11((char)(uVar2 >> 8),1);
}
}
}
}
}
}
}
}
return uVar2;
}
// --- FUN_0065c3f0 at 0x0065C3F0 (size: 115) ---
void __thiscall FUN_0065c3f0(undefined4 *param_1,int param_2)
{
int iVar1;
int *piVar2;
iVar1 = param_2;
if ((*(byte *)(param_2 + 4) & 1) != 0) {
iVar1 = FUN_0043dbe0(*param_1,param_1[1],param_1[2],param_1[3]);
}
FUN_0040ad10(4);
piVar2 = (int *)FUN_0040acf0(4);
if (piVar2 != (int *)0x0) {
if ((*(byte *)(param_2 + 4) & 1) == 0) {
iVar1 = *piVar2;
}
else {
*piVar2 = iVar1;
}
}
if (((~*(byte *)(param_2 + 4) & 1) != 0) && ((*(uint *)(param_2 + 4) >> 2 & 1) == 0)) {
FUN_00430cd0(iVar1);
}
return;
}
// --- FUN_0065c470 at 0x0065C470 (size: 108) ---
bool __thiscall FUN_0065c470(undefined4 *param_1,int param_2)
{
int iVar1;
if (param_2 != 0) {
iVar1 = FUN_005b3b50(*param_1);
if (iVar1 != 0) {
iVar1 = FUN_005b3b50(param_1[1]);
if (iVar1 != 0) {
iVar1 = FUN_005b3b50(param_1[2]);
if (iVar1 != 0) {
iVar1 = FUN_005b3b50(param_1[3]);
return iVar1 != 0;
}
}
}
}
return false;
}
// --- FUN_0065c4e0 at 0x0065C4E0 (size: 501) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __thiscall FUN_0065c4e0(float *param_1,int *param_2,char param_3,int param_4)
{
float fVar1;
bool bVar2;
char cVar3;
char cVar4;
int iVar5;
int iVar6;
int extraout_ECX;
int extraout_ECX_00;
int extraout_ECX_01;
int extraout_ECX_02;
int extraout_ECX_03;
int extraout_ECX_04;
int extraout_ECX_05;
int extraout_ECX_06;
int extraout_ECX_07;
int extraout_ECX_08;
int extraout_ECX_09;
int extraout_ECX_10;
int extraout_ECX_11;
char *pcVar7;
if (param_2 == (int *)0x0) {
return 0;
}
cVar4 = (char)param_4;
iVar5 = FUN_0065ca40();
iVar6 = extraout_ECX;
if (cVar4 == '\0') {
if (iVar5 != 3) {
pcVar7 = "non-alpha color needs 3 arguments";
goto LAB_0065c509;
}
}
else if (iVar5 != 4) {
pcVar7 = "alpha color needs 4 arguments";
goto LAB_0065c509;
}
if (param_3 == '\0') {
iVar6 = (**(code **)(*param_2 + 0xc))(0);
if (iVar6 == 0) {
cVar3 = '\0';
iVar6 = extraout_ECX_05;
}
else {
cVar3 = FUN_00448290(&param_4);
iVar6 = extraout_ECX_06;
}
fVar1 = (float)param_4;
if (param_4 < 0) {
fVar1 = fVar1 + _DAT_0079920c;
}
*param_1 = fVar1 * _DAT_00799208;
if (((cVar3 == '\0') ||
(iVar5 = (**(code **)(*param_2 + 0xc))(1), iVar6 = extraout_ECX_07, iVar5 == 0)) ||
(cVar3 = FUN_00448290(&param_4), iVar6 = extraout_ECX_08, cVar3 == '\0')) {
bVar2 = false;
}
else {
bVar2 = true;
}
fVar1 = (float)param_4;
if (param_4 < 0) {
fVar1 = fVar1 + _DAT_0079920c;
}
param_1[1] = fVar1 * _DAT_00799208;
if (((bVar2) && (iVar5 = (**(code **)(*param_2 + 0xc))(2), iVar6 = extraout_ECX_09, iVar5 != 0))
&& (cVar3 = FUN_00448290(&param_4), iVar6 = extraout_ECX_10, cVar3 != '\0')) {
bVar2 = true;
}
else {
bVar2 = false;
}
fVar1 = (float)param_4;
if (param_4 < 0) {
fVar1 = fVar1 + _DAT_0079920c;
}
param_1[2] = fVar1 * _DAT_00799208;
if (cVar4 == '\0') {
param_1[3] = 1.0;
}
else {
if ((bVar2) && (cVar4 = FUN_005d8780(3,&param_4), cVar4 != '\0')) {
bVar2 = true;
}
else {
bVar2 = false;
}
fVar1 = (float)param_4;
if (param_4 < 0) {
fVar1 = fVar1 + _DAT_0079920c;
}
param_1[3] = fVar1 * _DAT_00799208;
iVar6 = param_4;
}
if (!bVar2) {
pcVar7 = "reading as integers failed for color";
goto LAB_0065c509;
}
LAB_0065c6b5:
cVar4 = FUN_0065c360();
if (cVar4 != '\0') {
return 1;
}
pcVar7 = "Not a valid color";
iVar6 = extraout_ECX_11;
}
else {
iVar5 = (**(code **)(*param_2 + 0xc))();
iVar6 = extraout_ECX_00;
if ((((iVar5 == 0) || (cVar3 = FUN_00426cb0(param_1), iVar6 = extraout_ECX_01, cVar3 == '\0'))
|| (cVar3 = FUN_005d87b0(1,param_1 + 1), iVar6 = extraout_ECX_02, cVar3 == '\0')) ||
(cVar3 = FUN_005d87b0(2,param_1 + 2), iVar6 = extraout_ECX_03, cVar3 == '\0')) {
cVar3 = '\0';
}
else {
cVar3 = '\x01';
}
if (cVar4 == '\0') {
param_1[3] = 1.0;
LAB_0065c594:
if (cVar3 != '\0') goto LAB_0065c6b5;
}
else if (cVar3 != '\0') {
cVar3 = FUN_005d87b0(3,param_1 + 3);
iVar6 = extraout_ECX_04;
goto LAB_0065c594;
}
pcVar7 = "read failed for color";
}
LAB_0065c509:
FUN_00401340(pcVar7);
FUN_0065d620(param_2,iVar6);
return 0;
}
// --- FUN_0065c6e0 at 0x0065C6E0 (size: 100) ---
bool __thiscall FUN_0065c6e0(undefined4 *param_1,int param_2)
{
char cVar1;
int iVar2;
if (param_2 != 0) {
cVar1 = FUN_005b2d90(param_1);
if (cVar1 != '\0') {
iVar2 = FUN_005b3b50(*param_1);
if (iVar2 != 0) {
iVar2 = FUN_005b3b50(param_1[1]);
if (iVar2 != 0) {
iVar2 = FUN_005b3b50(param_1[2]);
return iVar2 != 0;
}
}
}
}
return false;
}
// --- FUN_0065c750 at 0x0065C750 (size: 155) ---
bool __thiscall FUN_0065c750(int param_1,int *param_2)
{
char cVar1;
int iVar2;
undefined4 extraout_ECX;
undefined4 extraout_ECX_00;
undefined4 extraout_ECX_01;
undefined4 extraout_ECX_02;
undefined4 uVar3;
char *pcVar4;
if (param_2 != (int *)0x0) {
iVar2 = FUN_0065ca40();
if (iVar2 == 3) {
(**(code **)(*param_2 + 0xc))(0);
cVar1 = FUN_00426cb0(param_1);
uVar3 = extraout_ECX_00;
if (cVar1 != '\0') {
(**(code **)(*param_2 + 0xc))(1);
cVar1 = FUN_00426cb0(param_1 + 4);
uVar3 = extraout_ECX_01;
if (cVar1 != '\0') {
(**(code **)(*param_2 + 0xc))(2);
cVar1 = FUN_00426cb0(param_1 + 8);
uVar3 = extraout_ECX_02;
if (cVar1 != '\0') {
cVar1 = FUN_005b2d90(param_1);
return cVar1 != '\0';
}
}
}
pcVar4 = "Invalid vector";
}
else {
pcVar4 = "Invalid number of components in vector";
uVar3 = extraout_ECX;
}
FUN_00401340(pcVar4);
FUN_0065d620(param_2,uVar3);
}
return false;
}
// --- FUN_0065c7f0 at 0x0065C7F0 (size: 12) ---
void __thiscall FUN_0065c7f0(int param_1,undefined2 param_2)
{
*(undefined2 *)(param_1 + 0xc) = param_2;
return;
}
// --- FUN_0065c800 at 0x0065C800 (size: 12) ---
void __thiscall FUN_0065c800(int param_1,undefined2 param_2)
{
*(undefined2 *)(param_1 + 0xe) = param_2;
return;
}
// --- FUN_0065c810 at 0x0065C810 (size: 19) ---
void __fastcall FUN_0065c810(int *param_1)
{
if ((int *)*param_1 == (int *)0x0) {
return;
}
(**(code **)(*(int *)*param_1 + 0xc))(param_1[1]);
return;
}
// --- FUN_0065c830 at 0x0065C830 (size: 74) ---
uint __thiscall FUN_0065c830(int *param_1,uint param_2)
{
uint uVar1;
int iVar2;
undefined4 *puVar3;
undefined4 *puVar4;
uVar1 = param_1[2];
if (param_2 < uVar1) {
puVar3 = (undefined4 *)(*param_1 + param_2 * 4);
puVar4 = (undefined4 *)(*param_1 + (uVar1 - 1) * 4);
param_1[2] = uVar1 - 1;
if (puVar3 < puVar4) {
iVar2 = ((uint)((int)puVar4 + (-1 - (int)puVar3)) >> 2) + 1;
puVar4 = puVar3;
for (; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
*puVar4 = *puVar3;
puVar4 = puVar4 + 1;
}
}
iVar2 = param_1[2];
*(undefined4 *)(*param_1 + iVar2 * 4) = 0;
return CONCAT31((int3)((uint)iVar2 >> 8),1);
}
return uVar1 & 0xffffff00;
}
// --- FUN_0065c880 at 0x0065C880 (size: 115) ---
int * FUN_0065c880(int *param_1,int *param_2,int *param_3)
{
int iVar1;
int iVar2;
iVar2 = (int)param_2 - (int)param_1 >> 4;
if (0 < iVar2) {
iVar1 = *param_3;
do {
if (*param_1 == iVar1) {
return param_1;
}
if (param_1[1] == iVar1) {
return param_1 + 1;
}
if (param_1[2] == iVar1) {
return param_1 + 2;
}
if (param_1[3] == iVar1) {
return param_1 + 3;
}
iVar2 = iVar2 + -1;
param_1 = param_1 + 4;
} while (0 < iVar2);
}
iVar2 = (int)param_2 - (int)param_1 >> 2;
if (iVar2 != 1) {
if (iVar2 != 2) {
if (iVar2 != 3) {
return param_2;
}
if (*param_1 == *param_3) {
return param_1;
}
param_1 = param_1 + 1;
}
if (*param_1 == *param_3) {
return param_1;
}
param_1 = param_1 + 1;
}
if (*param_1 != *param_3) {
return param_2;
}
return param_1;
}
// --- FUN_0065c900 at 0x0065C900 (size: 122) ---
undefined4 * FUN_0065c900(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,code *param_4)
{
char cVar1;
cVar1 = (*param_4)(*param_1,*param_2);
if (cVar1 == '\0') {
cVar1 = (*param_4)(*param_1,*param_3);
if (cVar1 != '\0') {
return param_1;
}
cVar1 = (*param_4)(*param_2,*param_3);
if (cVar1 != '\0') {
return param_3;
}
}
else {
cVar1 = (*param_4)(*param_2,*param_3);
if (cVar1 == '\0') {
cVar1 = (*param_4)(*param_1,*param_3);
if (cVar1 == '\0') {
return param_1;
}
return param_3;
}
}
return param_2;
}
// --- FUN_0065c980 at 0x0065C980 (size: 63) ---
void FUN_0065c980(undefined4 *param_1,undefined4 param_2,code *param_3)
{
char cVar1;
cVar1 = (*param_3)(param_2,param_1[-1]);
while (cVar1 != '\0') {
*param_1 = param_1[-1];
cVar1 = (*param_3)(param_2,param_1[-2]);
param_1 = param_1 + -1;
}
*param_1 = param_2;
return;
}
// --- FUN_0065c9c0 at 0x0065C9C0 (size: 94) ---
void FUN_0065c9c0(int param_1,int param_2,int param_3,undefined4 param_4,code *param_5)
{
char cVar1;
int iVar2;
if (param_2 <= param_3) {
*(undefined4 *)(param_1 + param_2 * 4) = param_4;
return;
}
do {
iVar2 = (param_2 + -1) / 2;
cVar1 = (*param_5)(*(undefined4 *)(param_1 + iVar2 * 4),param_4);
if (cVar1 == '\0') break;
*(undefined4 *)(param_1 + param_2 * 4) = *(undefined4 *)(param_1 + iVar2 * 4);
param_2 = iVar2;
} while (param_3 < iVar2);
*(undefined4 *)(param_1 + param_2 * 4) = param_4;
return;
}
// --- FUN_0065ca20 at 0x0065CA20 (size: 18) ---
undefined4 __fastcall FUN_0065ca20(int param_1)
{
int iVar1;
do {
iVar1 = param_1;
param_1 = *(int *)(iVar1 + 0x2c);
} while (param_1 != 0);
return *(undefined4 *)(iVar1 + 0x28);
}
// --- FUN_0065ca40 at 0x0065CA40 (size: 4) ---
undefined4 __fastcall FUN_0065ca40(int param_1)
{
return *(undefined4 *)(param_1 + 0x20);
}
// --- FUN_0065ca70 at 0x0065CA70 (size: 17) ---
undefined4 __fastcall FUN_0065ca70(int *param_1)
{
undefined4 uVar1;
if (param_1[8] != 1) {
return 0;
}
uVar1 = (**(code **)(*param_1 + 0xc))(0);
return uVar1;
}
// --- FUN_0065ca90 at 0x0065CA90 (size: 30) ---
int __fastcall FUN_0065ca90(int *param_1)
{
int iVar1;
if (param_1[8] == 1) {
iVar1 = (**(code **)(*param_1 + 0xc))(0);
}
else {
iVar1 = 0;
}
if ((iVar1 != 0) && (*(int *)(iVar1 + 0x20) != 0)) {
iVar1 = 0;
}
return iVar1;
}
// --- FUN_0065cab0 at 0x0065CAB0 (size: 48) ---
int __thiscall FUN_0065cab0(int *param_1,uint param_2)
{
int iVar1;
iVar1 = 0;
if (param_2 < (uint)param_1[8]) {
iVar1 = (**(code **)(*param_1 + 8))(param_2);
FUN_0065c830(param_2);
*(undefined4 *)(iVar1 + 0x2c) = 0;
}
return iVar1;
}
// --- FUN_0065cae0 at 0x0065CAE0 (size: 35) ---
void __fastcall FUN_0065cae0(int param_1)
{
LONG LVar1;
undefined4 *puVar2;
puVar2 = (undefined4 *)(*(int *)(param_1 + 8) + -0x14);
LVar1 = InterlockedDecrement((LONG *)(*(int *)(param_1 + 8) + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
return;
}
// --- FUN_0065cb10 at 0x0065CB10 (size: 47) ---
undefined4 __fastcall FUN_0065cb10(int *param_1)
{
int iVar1;
undefined4 uVar2;
if ((int *)*param_1 != (int *)0x0) {
iVar1 = (**(code **)(*(int *)*param_1 + 0xc))(param_1[1]);
if (iVar1 != 0) {
param_1[1] = param_1[1] + 1;
if ((int *)*param_1 != (int *)0x0) {
uVar2 = (**(code **)(*(int *)*param_1 + 0xc))(param_1[1]);
return uVar2;
}
}
}
return 0;
}
// --- FUN_0065cb40 at 0x0065CB40 (size: 39) ---
undefined4 * __thiscall FUN_0065cb40(undefined4 *param_1,byte param_2)
{
FUN_004011b0();
*param_1 = &PTR_LAB_007cae34;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065cb70 at 0x0065CB70 (size: 81) ---
void FUN_0065cb70(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,code *param_4)
{
undefined4 uVar1;
undefined4 *puVar2;
char cVar3;
for (; param_1 != param_2; param_1 = param_1 + 1) {
uVar1 = *param_1;
cVar3 = (*param_4)(uVar1,param_1[-1]);
puVar2 = param_1;
while (cVar3 != '\0') {
*puVar2 = puVar2[-1];
cVar3 = (*param_4)(uVar1,puVar2[-2]);
puVar2 = puVar2 + -1;
}
*puVar2 = uVar1;
}
return;
}
// --- FUN_0065cbd0 at 0x0065CBD0 (size: 113) ---
void FUN_0065cbd0(int param_1,int param_2,int param_3,undefined4 param_4,code *param_5)
{
int iVar1;
char cVar2;
int iVar3;
int iVar4;
iVar3 = param_2;
while( true ) {
iVar1 = iVar3 * 2;
iVar4 = iVar1 + 2;
if (param_3 <= iVar4) break;
cVar2 = (*param_5)(*(undefined4 *)(param_1 + iVar4 * 4),
*(undefined4 *)(param_1 + -4 + iVar4 * 4));
if (cVar2 != '\0') {
iVar4 = iVar1 + 1;
}
*(undefined4 *)(param_1 + iVar3 * 4) = *(undefined4 *)(param_1 + iVar4 * 4);
iVar3 = iVar4;
}
if (iVar4 == param_3) {
*(undefined4 *)(param_1 + iVar3 * 4) = *(undefined4 *)(param_1 + -4 + iVar4 * 4);
iVar3 = iVar1 + 1;
}
FUN_0065c9c0(param_1,iVar3,param_2,param_4,param_5);
return;
}
// --- FUN_0065cc50 at 0x0065CC50 (size: 106) ---
undefined1 FUN_0065cc50(undefined4 *param_1)
{
char *pcVar1;
char cVar2;
int iVar3;
LONG LVar4;
undefined1 uVar5;
char *pcVar6;
char *local_4;
local_4 = PTR_DAT_00818344;
uVar5 = 0;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
cVar2 = FUN_00426020(&local_4);
pcVar1 = local_4;
if (cVar2 != '\0') {
iVar3 = _stricmp(local_4,(char *)*param_1);
if (iVar3 == 0) {
uVar5 = 1;
}
}
pcVar6 = pcVar1 + -0x14;
LVar4 = InterlockedDecrement((LONG *)(pcVar1 + -0x10));
if ((LVar4 == 0) && (pcVar6 != (char *)0x0)) {
(*(code *)**(undefined4 **)pcVar6)(1);
}
return uVar5;
}
// --- FUN_0065cd80 at 0x0065CD80 (size: 165) ---
undefined4 __thiscall FUN_0065cd80(int param_1,char *param_2)
{
LONG *lpAddend;
undefined4 *puVar1;
char *pcVar2;
undefined4 uVar3;
int iVar4;
LONG LVar5;
uint uVar6;
char *pcVar7;
puVar1 = (undefined4 *)param_2;
uVar6 = 0;
uVar3 = 0;
if (*(int *)(param_1 + 0x20) != 0) {
while( true ) {
param_2 = PTR_DAT_00818344;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
FUN_00426020(&param_2);
pcVar2 = param_2;
iVar4 = _stricmp(param_2,(char *)*puVar1);
pcVar7 = pcVar2 + -0x14;
lpAddend = (LONG *)(pcVar2 + -0x10);
if (iVar4 == 0) break;
LVar5 = InterlockedDecrement(lpAddend);
if ((LVar5 == 0) && (pcVar7 != (char *)0x0)) {
(*(code *)**(undefined4 **)pcVar7)(1);
}
uVar6 = uVar6 + 1;
if (*(uint *)(param_1 + 0x20) <= uVar6) {
return 0;
}
}
uVar3 = *(undefined4 *)(*(int *)(param_1 + 0x18) + uVar6 * 4);
LVar5 = InterlockedDecrement(lpAddend);
if ((LVar5 == 0) && (pcVar7 != (char *)0x0)) {
(*(code *)**(undefined4 **)pcVar7)(1);
}
}
return uVar3;
}
// --- thunk_FUN_0065cd80 at 0x0065CE30 (size: 5) ---
undefined4 __thiscall thunk_FUN_0065cd80(int param_1,char *param_2)
{
LONG *lpAddend;
undefined4 *puVar1;
char *pcVar2;
undefined4 uVar3;
int iVar4;
LONG LVar5;
uint uVar6;
char *pcVar7;
puVar1 = (undefined4 *)param_2;
uVar6 = 0;
uVar3 = 0;
if (*(int *)(param_1 + 0x20) != 0) {
while( true ) {
param_2 = PTR_DAT_00818344;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
FUN_00426020(&param_2);
pcVar2 = param_2;
iVar4 = _stricmp(param_2,(char *)*puVar1);
pcVar7 = pcVar2 + -0x14;
lpAddend = (LONG *)(pcVar2 + -0x10);
if (iVar4 == 0) break;
LVar5 = InterlockedDecrement(lpAddend);
if ((LVar5 == 0) && (pcVar7 != (char *)0x0)) {
(*(code *)**(undefined4 **)pcVar7)(1);
}
uVar6 = uVar6 + 1;
if (*(uint *)(param_1 + 0x20) <= uVar6) {
return 0;
}
}
uVar3 = *(undefined4 *)(*(int *)(param_1 + 0x18) + uVar6 * 4);
LVar5 = InterlockedDecrement(lpAddend);
if ((LVar5 == 0) && (pcVar7 != (char *)0x0)) {
(*(code *)**(undefined4 **)pcVar7)(1);
}
}
return uVar3;
}
// --- FUN_0065ce40 at 0x0065CE40 (size: 129) ---
undefined1 __thiscall FUN_0065ce40(int *param_1,undefined4 param_2)
{
undefined *puVar1;
char cVar2;
LONG LVar3;
LONG *lpAddend;
uint uVar4;
undefined4 uVar5;
undefined1 local_1;
puVar1 = (undefined *)param_1[4];
local_1 = 1;
if (puVar1 != PTR_DAT_00818344) {
LVar3 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
if ((LVar3 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
}
lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[4] = (int)PTR_DAT_00818344;
InterlockedIncrement(lpAddend);
}
if (((char)param_2 != '\0') && (uVar4 = 0, param_1[8] != 0)) {
do {
uVar5 = param_2;
(**(code **)(*param_1 + 8))(uVar4,param_2);
cVar2 = FUN_0065ce40(uVar5);
if (cVar2 == '\0') {
local_1 = 0;
}
uVar4 = uVar4 + 1;
} while (uVar4 < (uint)param_1[8]);
}
return local_1;
}
// --- FUN_0065ced0 at 0x0065CED0 (size: 95) ---
void __fastcall FUN_0065ced0(int param_1)
{
int iVar1;
LONG LVar2;
undefined4 *puVar3;
undefined *local_4;
local_4 = PTR_DAT_00818344;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
FUN_00426020(&local_4);
if (*(int *)(param_1 + 0x2c) == 0) {
iVar1 = *(int *)(param_1 + 0x28);
}
else {
iVar1 = FUN_0065ca20();
}
*(short *)(iVar1 + 0xc) = *(short *)(iVar1 + 0xc) + 1;
puVar3 = (undefined4 *)(local_4 + -0x14);
LVar2 = InterlockedDecrement((LONG *)(local_4 + -0x10));
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
(**(code **)*puVar3)(1);
}
return;
}
// --- FUN_0065cf30 at 0x0065CF30 (size: 95) ---
void __fastcall FUN_0065cf30(int param_1)
{
int iVar1;
LONG LVar2;
undefined4 *puVar3;
undefined *local_4;
local_4 = PTR_DAT_00818344;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
FUN_00426020(&local_4);
if (*(int *)(param_1 + 0x2c) == 0) {
iVar1 = *(int *)(param_1 + 0x28);
}
else {
iVar1 = FUN_0065ca20();
}
*(short *)(iVar1 + 0xe) = *(short *)(iVar1 + 0xe) + 1;
puVar3 = (undefined4 *)(local_4 + -0x14);
LVar2 = InterlockedDecrement((LONG *)(local_4 + -0x10));
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
(**(code **)*puVar3)(1);
}
return;
}
// --- FUN_0065cf90 at 0x0065CF90 (size: 43) ---
undefined4 * __thiscall FUN_0065cf90(undefined4 *param_1,undefined4 param_2)
{
LONG *lpAddend;
*param_1 = param_2;
param_1[1] = 0;
lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[2] = PTR_DAT_00818344;
InterlockedIncrement(lpAddend);
return param_1;
}
// --- FUN_0065cfc0 at 0x0065CFC0 (size: 116) ---
void __fastcall FUN_0065cfc0(int *param_1)
{
LONG LVar1;
undefined4 *puVar2;
LONG *lpAddend;
puVar2 = (undefined4 *)*param_1;
if (puVar2 != (undefined4 *)0x0) {
LVar1 = InterlockedDecrement(puVar2 + 1);
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
}
puVar2 = (undefined4 *)FUN_005df0f5(0x14);
if (puVar2 != (undefined4 *)0x0) {
puVar2[1] = 1;
*puVar2 = &PTR_FUN_007feadc;
lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10);
puVar2[2] = PTR_DAT_00818344;
InterlockedIncrement(lpAddend);
*(undefined2 *)(puVar2 + 3) = 0;
*(undefined2 *)((int)puVar2 + 0xe) = 0;
puVar2[4] = 0;
*param_1 = (int)puVar2;
return;
}
*param_1 = 0;
return;
}
// --- FUN_0065d040 at 0x0065D040 (size: 133) ---
undefined4 __fastcall FUN_0065d040(int *param_1)
{
uint uVar1;
int iVar2;
int iVar3;
uVar1 = param_1[2];
if (uVar1 == (param_1[1] & 0x7fffffffU)) {
return 0;
}
if (uVar1 == 0) {
iVar2 = 0;
}
else {
iVar2 = thunk_FUN_005df0f5(uVar1 * 4);
if (iVar2 == 0) {
return 0;
}
iVar3 = param_1[2] + -1;
while (-1 < iVar3) {
iVar3 = iVar3 + -1;
*(undefined4 *)(iVar2 + 4 + iVar3 * 4) = *(undefined4 *)(*param_1 + 4 + iVar3 * 4);
}
}
if ((param_1[1] & 0x80000000U) == 0x80000000) {
operator_delete__((void *)*param_1);
}
*param_1 = iVar2;
param_1[1] = param_1[2] | 0x80000000;
return 1;
}
// --- FUN_0065d0d0 at 0x0065D0D0 (size: 108) ---
undefined4 * FUN_0065d0d0(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,code *param_4)
{
undefined4 uVar1;
char cVar2;
undefined4 *puVar3;
while( true ) {
cVar2 = (*param_4)(*param_1,param_3);
while (cVar2 != '\0') {
puVar3 = param_1 + 1;
param_1 = param_1 + 1;
cVar2 = (*param_4)(*puVar3,param_3);
}
cVar2 = (*param_4)(param_3,param_2[-1]);
puVar3 = param_2;
while (param_2 = puVar3 + -1, cVar2 != '\0') {
cVar2 = (*param_4)(param_3,puVar3[-2]);
puVar3 = param_2;
}
if (param_2 <= param_1) break;
uVar1 = *param_1;
*param_1 = *param_2;
*param_2 = uVar1;
param_1 = param_1 + 1;
}
return param_1;
}
// --- FUN_0065d140 at 0x0065D140 (size: 85) ---
void FUN_0065d140(int param_1,int param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
int iVar3;
iVar2 = param_2 - param_1 >> 2;
if (1 < iVar2) {
iVar3 = (iVar2 + -2) / 2;
FUN_0065cbd0(param_1,iVar3,iVar2,*(undefined4 *)(param_1 + iVar3 * 4),param_3);
while (iVar3 != 0) {
iVar1 = iVar3 * 4;
iVar3 = iVar3 + -1;
FUN_0065cbd0(param_1,iVar3,iVar2,*(undefined4 *)(param_1 + -4 + iVar1),param_3);
}
}
return;
}
// --- FUN_0065d1a0 at 0x0065D1A0 (size: 97) ---
undefined4 * __fastcall FUN_0065d1a0(undefined4 *param_1)
{
LONG *pLVar1;
param_1[1] = 1;
*param_1 = &PTR_FUN_007feae0;
param_1[2] = 0;
*(undefined2 *)(param_1 + 3) = 0;
*(undefined2 *)((int)param_1 + 0xe) = 0;
pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[4] = PTR_DAT_00818344;
InterlockedIncrement(pLVar1);
pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[5] = PTR_DAT_00818344;
InterlockedIncrement(pLVar1);
param_1[6] = 0;
param_1[7] = 0;
param_1[8] = 0;
*(undefined1 *)(param_1 + 9) = 0;
param_1[10] = 0;
param_1[0xb] = 0;
param_1[0xc] = 0;
return param_1;
}
// --- FUN_0065d210 at 0x0065D210 (size: 323) ---
void __fastcall FUN_0065d210(int *param_1)
{
undefined *puVar1;
undefined4 *puVar2;
int iVar3;
LONG LVar4;
LONG *pLVar5;
uint uVar6;
undefined4 *puVar7;
undefined4 *puVar8;
if ((undefined4 *)param_1[2] != (undefined4 *)0x0) {
(*(code *)**(undefined4 **)param_1[2])(1);
}
uVar6 = param_1[8];
param_1[2] = 0;
while (uVar6 != 0) {
uVar6 = uVar6 - 1;
if (uVar6 < (uint)param_1[8]) {
puVar2 = (undefined4 *)(**(code **)(*param_1 + 8))(uVar6);
if (uVar6 < (uint)param_1[8]) {
iVar3 = param_1[8] - 1;
puVar7 = (undefined4 *)(param_1[6] + uVar6 * 4);
puVar8 = (undefined4 *)(param_1[6] + iVar3 * 4);
param_1[8] = iVar3;
if (puVar7 < puVar8) {
iVar3 = ((uint)((int)puVar8 + (-1 - (int)puVar7)) >> 2) + 1;
puVar8 = puVar7;
for (; puVar7 = puVar7 + 1, iVar3 != 0; iVar3 = iVar3 + -1) {
*puVar8 = *puVar7;
puVar8 = puVar8 + 1;
}
}
*(undefined4 *)(param_1[6] + param_1[8] * 4) = 0;
}
puVar2[0xb] = 0;
LVar4 = InterlockedDecrement(puVar2 + 1);
if (LVar4 == 0) {
(**(code **)*puVar2)(1);
}
}
}
*(undefined2 *)(param_1 + 3) = 0;
*(undefined2 *)((int)param_1 + 0xe) = 0;
puVar1 = (undefined *)param_1[4];
if (puVar1 != PTR_DAT_00818344) {
LVar4 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
if ((LVar4 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
}
pLVar5 = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[4] = (int)PTR_DAT_00818344;
InterlockedIncrement(pLVar5);
}
*(undefined1 *)(param_1 + 9) = 0;
puVar2 = (undefined4 *)param_1[10];
if (((puVar2 != (undefined4 *)0x0) && (LVar4 = InterlockedDecrement(puVar2 + 1), LVar4 == 0)) &&
(puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
param_1[10] = 0;
puVar1 = (undefined *)param_1[5];
if (puVar1 != PTR_DAT_00818344) {
LVar4 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
if ((LVar4 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
}
pLVar5 = (LONG *)(PTR_DAT_00818344 + -0x10);
param_1[5] = (int)PTR_DAT_00818344;
InterlockedIncrement(pLVar5);
}
return;
}
// --- FUN_0065d360 at 0x0065D360 (size: 139) ---
undefined4 __thiscall FUN_0065d360(int *param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
uint uVar3;
undefined4 *puVar4;
LONG LVar5;
iVar1 = param_1[6];
iVar2 = FUN_0065c880(iVar1,iVar1 + param_1[8] * 4,&param_2,&param_2);
if ((iVar2 != iVar1 + param_1[8] * 4) && (uVar3 = iVar2 - iVar1 >> 2, uVar3 != 0xffffffff)) {
if (uVar3 < (uint)param_1[8]) {
puVar4 = (undefined4 *)(**(code **)(*param_1 + 8))(uVar3);
FUN_0065c830(uVar3);
puVar4[0xb] = 0;
LVar5 = InterlockedDecrement(puVar4 + 1);
if (LVar5 == 0) {
(**(code **)*puVar4)(1);
}
}
return 1;
}
return 0;
}
// --- FUN_0065d3f0 at 0x0065D3F0 (size: 91) ---
void __thiscall FUN_0065d3f0(int param_1,int *param_2)
{
int iVar1;
int iVar2;
LONG LVar3;
if (*(int *)(param_1 + 0x28) == 0) {
FUN_0065cfc0();
}
iVar1 = *(int *)(param_1 + 0x28);
if ((iVar1 != 0) && (iVar2 = *(int *)(iVar1 + 8), iVar2 != *param_2)) {
LVar3 = InterlockedDecrement((LONG *)(iVar2 + -0x10));
if ((LVar3 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(iVar2 + -0x14))(1);
}
iVar2 = *param_2;
*(int *)(iVar1 + 8) = iVar2;
/* WARNING: Could not recover jumptable at 0x0065d440. Too many branches */
/* WARNING: Treating indirect jump as call */
InterlockedIncrement((LONG *)(iVar2 + -0x10));
return;
}
return;
}
// --- FUN_0065d450 at 0x0065D450 (size: 126) ---
void FUN_0065d450(undefined4 param_1,int *param_2,uint param_3)
{
uint uVar1;
uint uVar2;
byte *pbVar3;
int iVar4;
uVar1 = param_3;
uVar2 = param_3;
if ((*(byte *)(param_3 + 4) & 1) != 0) {
uVar2 = FUN_0065af90(*param_2);
}
param_3 = uVar2 & 0xff;
FUN_0040ad10(1);
pbVar3 = (byte *)FUN_0040acf0(1);
if (pbVar3 != (byte *)0x0) {
if ((*(byte *)(uVar1 + 4) & 1) == 0) {
param_3 = (uint)*pbVar3;
}
else {
*pbVar3 = (byte)uVar2;
}
}
if ((*(byte *)(uVar1 + 4) & 5) == 0) {
uVar2 = param_3;
}
if ((~*(byte *)(uVar1 + 4) & 1) != 0) {
iVar4 = FUN_0065b7c0(uVar2);
*param_2 = iVar4;
}
if ((int *)*param_2 != (int *)0x0) {
(**(code **)(*(int *)*param_2 + 0x18))(uVar1);
}
return;
}
// --- FUN_0065d4d0 at 0x0065D4D0 (size: 144) ---
void __fastcall FUN_0065d4d0(undefined4 *param_1)
{
LONG LVar1;
undefined4 *puVar2;
*param_1 = &PTR_FUN_007feae0;
FUN_0065d210();
puVar2 = (undefined4 *)param_1[10];
if (puVar2 != (undefined4 *)0x0) {
LVar1 = InterlockedDecrement(puVar2 + 1);
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
}
if ((param_1[7] & 0x80000000) == 0x80000000) {
operator_delete__((void *)param_1[6]);
}
puVar2 = (undefined4 *)(param_1[5] + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_1[5] + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
puVar2 = (undefined4 *)(param_1[4] + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_1[4] + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
*param_1 = &PTR_FUN_007952f4;
return;
}
// --- FUN_0065d560 at 0x0065D560 (size: 82) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * __fastcall FUN_0065d560(int param_1)
{
int iVar1;
if ((_DAT_008f8620 & 1) == 0) {
_DAT_008f8620 = _DAT_008f8620 | 1;
FUN_00401340("<unknown>");
_atexit((_func_4879 *)&LAB_0077fd00);
}
if (*(int *)(param_1 + 0x2c) == 0) {
iVar1 = *(int *)(param_1 + 0x28);
}
else {
iVar1 = FUN_0065ca20();
}
if (iVar1 != 0) {
return (undefined4 *)(iVar1 + 8);
}
return &DAT_008f861c;
}
// --- FUN_0065d5c0 at 0x0065D5C0 (size: 92) ---
undefined4 FUN_0065d5c0(int *param_1)
{
uint uVar1;
int iVar2;
uint uVar3;
int *piVar4;
piVar4 = param_1;
iVar2 = *(int *)(*param_1 + -4);
if (iVar2 != 1) {
if (iVar2 != 1) {
FUN_00404ef0(*param_1,iVar2 + -1);
}
uVar3 = *(uint *)(*piVar4 + -4);
uVar1 = iVar2 - 2;
if (uVar3 <= uVar1) {
uVar1 = uVar3 - 1;
}
if (*(char *)(uVar1 + *piVar4) != '\n') {
param_1 = (int *)CONCAT31(param_1._1_3_,10);
FUN_00404ef0(&param_1,1);
}
}
return 1;
}
// --- FUN_0065d620 at 0x0065D620 (size: 69) ---
void FUN_0065d620(undefined4 param_1,int param_2)
{
LONG LVar1;
undefined4 *puVar2;
FUN_00402390(param_2,&stack0x0000000c);
FUN_0065ced0(&param_2);
puVar2 = (undefined4 *)(param_2 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
return;
}
// --- FUN_0065d670 at 0x0065D670 (size: 69) ---
void FUN_0065d670(undefined4 param_1,int param_2)
{
LONG LVar1;
undefined4 *puVar2;
FUN_00402390(param_2,&stack0x0000000c);
FUN_0065cf30(&param_2);
puVar2 = (undefined4 *)(param_2 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
return;
}
// --- FUN_0065d6c0 at 0x0065D6C0 (size: 107) ---
void FUN_0065d6c0(undefined4 *param_1,undefined4 *param_2,code *param_3)
{
undefined4 uVar1;
char cVar2;
undefined4 *puVar3;
size_t _Size;
if ((param_1 != param_2) && (puVar3 = param_1 + 1, puVar3 != param_2)) {
_Size = (int)puVar3 - (int)param_1;
do {
uVar1 = *puVar3;
cVar2 = (*param_3)(uVar1,*param_1);
if (cVar2 == '\0') {
FUN_0065c980(puVar3,uVar1,param_3);
}
else {
if (0 < (int)_Size) {
memmove((void *)((int)puVar3 + (4 - _Size)),param_1,_Size);
}
*param_1 = uVar1;
}
puVar3 = puVar3 + 1;
_Size = _Size + 4;
} while (puVar3 != param_2);
}
return;
}
// --- FUN_0065d730 at 0x0065D730 (size: 77) ---
void FUN_0065d730(undefined4 *param_1,int param_2,undefined4 param_3)
{
undefined4 uVar1;
uint uVar2;
uVar2 = param_2 - (int)param_1;
while (4 < (int)(uVar2 & 0xfffffffc)) {
uVar1 = *(undefined4 *)((int)param_1 + (uVar2 - 4));
*(undefined4 *)((int)param_1 + (uVar2 - 4)) = *param_1;
FUN_0065cbd0(param_1,0,(int)(uVar2 - 4) >> 2,uVar1,param_3);
uVar2 = uVar2 - 4;
}
return;
}
// --- FUN_0065d780 at 0x0065D780 (size: 34) ---
undefined4 * __thiscall FUN_0065d780(undefined4 *param_1,byte param_2)
{
FUN_0065d4d0();
if ((param_2 & 1) != 0) {
*param_1 = DAT_008f8638;
DAT_008f8638 = param_1;
}
return param_1;
}
// --- FUN_0065d7b0 at 0x0065D7B0 (size: 73) ---
void __thiscall FUN_0065d7b0(int param_1,int param_2)
{
char cVar1;
uint uVar2;
undefined4 uVar3;
if (param_2 == 0) {
return;
}
uVar2 = *(uint *)(param_1 + 0x1c) & 0x7fffffff;
if (uVar2 <= *(uint *)(param_1 + 0x20)) {
uVar3 = FUN_004077f0(uVar2 + 1);
cVar1 = FUN_00408220(uVar3);
if (cVar1 == '\0') goto LAB_0065d7f0;
}
*(int *)(*(int *)(param_1 + 0x18) + *(int *)(param_1 + 0x20) * 4) = param_2;
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
LAB_0065d7f0:
*(int *)(param_2 + 0x2c) = param_1;
return;
}
// --- FUN_0065d800 at 0x0065D800 (size: 268) ---
void FUN_0065d800(undefined4 param_1,int *param_2,int param_3)
{
bool bVar1;
int *piVar2;
uint uVar3;
int iVar4;
uint uVar5;
int iVar6;
int *piVar7;
iVar4 = param_3;
piVar2 = param_2;
param_2 = (int *)param_2[2];
FUN_0065bd90(param_1,&param_2,param_3);
bVar1 = false;
if ((~*(byte *)(iVar4 + 4) & 1) != 0) {
uVar5 = FUN_0040a8f0();
uVar3 = (uint)param_2;
if (uVar5 < param_2) {
FUN_0040aa50();
return;
}
if ((uint)piVar2[2] < param_2) {
FUN_00408220(param_2);
piVar2[2] = uVar3;
}
else if (param_2 < (uint)piVar2[2]) {
piVar2[2] = (int)param_2;
FUN_0065d040();
}
bVar1 = true;
}
piVar7 = (int *)*piVar2;
if (piVar7 != piVar7 + piVar2[2]) {
do {
if ((*(uint *)(iVar4 + 4) >> 2 & 1) == 0) {
if ((~*(byte *)(iVar4 + 4) & 1) != 0) {
if (DAT_008f8638 == (undefined4 *)0x0) {
FUN_00661110();
}
DAT_008f8638 = (undefined4 *)*DAT_008f8638;
iVar6 = FUN_0065d1a0();
*piVar7 = iVar6;
}
if ((int *)*piVar7 == (int *)0x0) {
FUN_0040aa50();
}
else {
(**(code **)(*(int *)*piVar7 + 0x14))(iVar4);
}
}
if ((*(uint *)(iVar4 + 4) >> 2 & 1) != 0) {
if (!bVar1) {
return;
}
if (piVar2[2] == 0) {
return;
}
piVar2[2] = 0;
FUN_0065d040();
return;
}
piVar7 = piVar7 + 1;
} while (piVar7 != (int *)(*piVar2 + piVar2[2] * 4));
}
return;
}
// --- FUN_0065d910 at 0x0065D910 (size: 72) ---
void FUN_0065d910(int param_1,int param_2,undefined4 param_3)
{
if (0x40 < (int)(param_2 - param_1 & 0xfffffffcU)) {
FUN_0065d6c0(param_1,param_1 + 0x40,param_3);
FUN_0065cb70(param_1 + 0x40,param_2,0,param_3);
return;
}
FUN_0065d6c0(param_1,param_2,param_3);
return;
}
// --- FUN_0065d960 at 0x0065D960 (size: 106) ---
void FUN_0065d960(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
code *param_5)
{
undefined4 uVar1;
char cVar2;
undefined4 *puVar3;
FUN_0065d140(param_1,param_2,param_5,0,0);
for (puVar3 = param_2; puVar3 < param_3; puVar3 = puVar3 + 1) {
cVar2 = (*param_5)(*puVar3,*param_1);
if (cVar2 != '\0') {
uVar1 = *puVar3;
*puVar3 = *param_1;
FUN_0065cbd0(param_1,0,(int)param_2 - (int)param_1 >> 2,uVar1,param_5);
}
}
FUN_0065d730(param_1,param_2,param_5);
return;
}
// --- FUN_0065da10 at 0x0065DA10 (size: 103) ---
void __thiscall FUN_0065da10(int param_1,int param_2)
{
int iVar1;
uint uVar2;
uint uVar3;
iVar1 = param_2;
if ((~*(byte *)(param_2 + 4) & 1) != 0) {
FUN_0065d210();
*(undefined4 *)(param_1 + 0x2c) = 0;
}
FUN_0065d450(&param_2,param_1 + 8,iVar1);
FUN_0065d800(&param_2,(int *)(param_1 + 0x18),iVar1);
if ((~*(byte *)(iVar1 + 4) & 1) != 0) {
uVar2 = *(uint *)(param_1 + 0x20);
uVar3 = 0;
if (uVar2 != 0) {
do {
iVar1 = uVar3 * 4;
uVar3 = uVar3 + 1;
*(int *)(*(int *)(*(int *)(param_1 + 0x18) + iVar1) + 0x2c) = param_1;
} while (uVar3 < uVar2);
}
}
return;
}
// --- FUN_0065da80 at 0x0065DA80 (size: 134) ---
void FUN_0065da80(int param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5)
{
undefined4 *puVar1;
int iVar2;
if (0x40 < (int)(param_2 - param_1 & 0xfffffffcU)) {
while (param_4 != 0) {
param_4 = param_4 + -1;
puVar1 = (undefined4 *)
FUN_0065c900(param_1,param_1 + ((param_2 - param_1 >> 2) -
(param_2 - param_1 >> 0x1f) >> 1) * 4,param_2 + -4);
iVar2 = FUN_0065d0d0(param_1,param_2,*puVar1,param_5);
FUN_0065da80(iVar2,param_2,0,param_4,param_5);
param_2 = iVar2;
if ((int)(iVar2 - param_1 & 0xfffffffcU) < 0x41) {
return;
}
}
FUN_0065d960(param_1,param_2,param_2,0,param_5);
}
return;
}
// --- FUN_0065db10 at 0x0065DB10 (size: 76) ---
void FUN_0065db10(int param_1,int param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
if (param_1 != param_2) {
iVar2 = 0;
for (iVar1 = param_2 - param_1 >> 2; iVar1 != 1; iVar1 = iVar1 >> 1) {
iVar2 = iVar2 + 1;
}
FUN_0065da80(param_1,param_2,0,iVar2 * 2,param_3);
FUN_0065d910(param_1,param_2,param_3);
}
return;
}
// --- FUN_0065db80 at 0x0065DB80 (size: 678) ---
/* WARNING: Removing unreachable block (ram,0x0065dce6) */
/* WARNING: Removing unreachable block (ram,0x0065dd89) */
ulonglong FUN_0065db80(byte *param_1,undefined4 *param_2,uint param_3,uint param_4)
{
ulonglong uVar1;
int iVar2;
int iVar3;
int *piVar4;
uint extraout_ECX;
undefined4 unaff_EBX;
uint uVar5;
byte *pbVar6;
ulonglong uVar7;
longlong lVar8;
byte local_21;
int local_20;
local_21 = *param_1;
uVar1 = 0;
iVar2 = isspace((uint)local_21);
pbVar6 = param_1;
while (pbVar6 = pbVar6 + 1, iVar2 != 0) {
local_21 = *pbVar6;
iVar2 = isspace((uint)local_21);
}
if (local_21 == 0x2d) {
local_21 = *pbVar6;
param_4 = param_4 | 2;
LAB_0065dbe7:
pbVar6 = pbVar6 + 1;
}
else if (local_21 == 0x2b) {
local_21 = *pbVar6;
goto LAB_0065dbe7;
}
iVar2 = CONCAT31((int3)((uint)unaff_EBX >> 8),local_21);
if ((((int)param_3 < 0) || (param_3 == 1)) || (0x24 < (int)param_3)) {
if (param_2 != (undefined4 *)0x0) {
*param_2 = param_1;
}
return 0;
}
if (param_3 == 0) {
if (local_21 != 0x30) {
param_3 = 10;
goto LAB_0065dc6a;
}
if ((*pbVar6 != 0x78) && (*pbVar6 != 0x58)) {
param_3 = 8;
goto LAB_0065dc6a;
}
param_3 = 0x10;
}
else if ((param_3 != 0x10) || (local_21 != 0x30)) goto LAB_0065dc6a;
if ((*pbVar6 == 0x78) || (*pbVar6 == 0x58)) {
local_21 = pbVar6[1];
pbVar6 = pbVar6 + 2;
}
LAB_0065dc6a:
uVar7 = __aulldvrm(0xffffffff,0xffffffff,param_3,(int)param_3 >> 0x1f);
do {
iVar3 = isdigit((uint)local_21);
if (iVar3 == 0) {
iVar3 = isalpha((uint)local_21);
if (iVar3 == 0) {
LAB_0065dd50:
pbVar6 = pbVar6 + -1;
if ((param_4 & 8) == 0) {
if (param_2 != (undefined4 *)0x0) {
pbVar6 = param_1;
}
uVar1 = 0;
}
else if (((param_4 & 4) != 0) ||
(((param_4 & 1) == 0 &&
((((param_4 & 2) != 0 && (0x8000000000000000 < uVar1)) ||
(((param_4 & 2) == 0 &&
((0x7ffffffeffffffff < uVar1 && (0x7fffffffffffffff < uVar1)))))))))) {
piVar4 = _errno();
*piVar4 = 0x22;
if ((param_4 & 1) == 0) {
if ((param_4 & 2) == 0) {
uVar1 = 0x7fffffffffffffff;
}
else {
uVar1 = 0x8000000000000000;
}
}
else {
uVar1 = 0xffffffffffffffff;
}
}
local_20 = (int)uVar1;
if (param_2 != (undefined4 *)0x0) {
*param_2 = pbVar6;
}
if ((param_4 & 2) != 0) {
uVar1 = CONCAT44(-((int)(uVar1 >> 0x20) + (uint)(local_20 != 0)),-local_20);
}
return uVar1;
}
iVar3 = toupper((int)(char)local_21);
uVar5 = iVar3 - 0x37;
}
else {
uVar5 = (int)(char)local_21 - 0x30;
}
if (param_3 <= uVar5) goto LAB_0065dd50;
if ((uVar1 < uVar7) || ((uVar7 == uVar1 && ((iVar2 != 0 || (uVar5 <= extraout_ECX)))))) {
lVar8 = __allmul(param_3,(int)param_3 >> 0x1f,uVar1);
uVar1 = lVar8 + (ulonglong)uVar5;
local_21 = *pbVar6;
pbVar6 = pbVar6 + 1;
param_4 = param_4 | 8;
}
else {
local_21 = *pbVar6;
pbVar6 = pbVar6 + 1;
param_4 = param_4 | 0xc;
}
} while( true );
}
// --- FUN_0065de30 at 0x0065DE30 (size: 26) ---
void FUN_0065de30(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
FUN_0065db80(param_1,param_2,param_3,0);
return;
}
// --- FUN_0065de50 at 0x0065DE50 (size: 26) ---
void FUN_0065de50(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
FUN_0065db80(param_1,param_2,param_3,1);
return;
}
// --- FUN_0065de70 at 0x0065DE70 (size: 433) ---
void FUN_0065de70(void)
{
return;
}
// --- FUN_0065e030 at 0x0065E030 (size: 69) ---
void __thiscall
FUN_0065e030(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
param_1[3] = 0;
param_1[2] = 0;
param_1[1] = 0;
param_1[7] = 0;
param_1[6] = 0;
param_1[4] = 0;
param_1[0xb] = 0;
param_1[9] = 0;
param_1[8] = 0;
param_1[0xf] = 0x3f800000;
param_1[10] = 0x3f800000;
param_1[5] = 0x3f800000;
*param_1 = 0x3f800000;
param_1[0xc] = param_2;
param_1[0xd] = param_3;
param_1[0xe] = param_4;
return;
}
// --- FUN_0065e080 at 0x0065E080 (size: 65) ---
void __thiscall FUN_0065e080(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
param_1[3] = 0;
param_1[2] = 0;
param_1[1] = 0;
param_1[7] = 0;
param_1[6] = 0;
param_1[4] = 0;
param_1[0xb] = 0;
param_1[0xe] = 0;
param_1[0xd] = 0;
param_1[0xc] = 0;
param_1[0xf] = 0x3f800000;
param_1[10] = 0x3f800000;
param_1[5] = 0x3f800000;
*param_1 = 0x3f800000;
param_1[8] = param_2;
param_1[9] = param_3;
return;
}
// --- FUN_0065e0d0 at 0x0065E0D0 (size: 76) ---
void __thiscall FUN_0065e0d0(undefined4 *param_1,float param_2)
{
float10 fVar1;
float10 fVar2;
fVar1 = (float10)fcos((float10)param_2);
param_1[3] = 0;
param_1[2] = 0;
param_1[1] = 0;
param_1[7] = 0;
param_1[4] = 0;
param_1[0xb] = 0;
param_1[8] = 0;
param_1[0xe] = 0;
param_1[0xd] = 0;
param_1[0xc] = 0;
param_1[0xf] = 0x3f800000;
*param_1 = 0x3f800000;
fVar2 = (float10)fsin((float10)param_2);
param_1[5] = (float)fVar1;
param_1[6] = (float)fVar2;
param_1[9] = (float)-fVar2;
param_1[10] = (float)fVar1;
return;
}
// --- FUN_0065e120 at 0x0065E120 (size: 75) ---
void __thiscall FUN_0065e120(float *param_1,float param_2)
{
float10 fVar1;
float10 fVar2;
fVar1 = (float10)fcos((float10)param_2);
param_1[3] = 0.0;
param_1[1] = 0.0;
param_1[7] = 0.0;
param_1[6] = 0.0;
param_1[4] = 0.0;
param_1[0xb] = 0.0;
param_1[9] = 0.0;
param_1[0xe] = 0.0;
param_1[0xd] = 0.0;
param_1[0xc] = 0.0;
param_1[0xf] = 1.0;
param_1[5] = 1.0;
fVar2 = (float10)fsin((float10)param_2);
*param_1 = (float)fVar1;
param_1[2] = (float)-fVar2;
param_1[8] = (float)fVar2;
param_1[10] = (float)fVar1;
return;
}
// --- FUN_0065e170 at 0x0065E170 (size: 73) ---
void __thiscall FUN_0065e170(float *param_1,float param_2)
{
float10 fVar1;
float10 fVar2;
fVar1 = (float10)fcos((float10)param_2);
param_1[3] = 0.0;
param_1[2] = 0.0;
param_1[7] = 0.0;
param_1[6] = 0.0;
param_1[0xb] = 0.0;
param_1[9] = 0.0;
param_1[8] = 0.0;
param_1[0xe] = 0.0;
param_1[0xd] = 0.0;
param_1[0xc] = 0.0;
param_1[0xf] = 1.0;
param_1[10] = 1.0;
fVar2 = (float10)fsin((float10)param_2);
*param_1 = (float)fVar1;
param_1[1] = (float)fVar2;
param_1[4] = (float)-fVar2;
param_1[5] = (float)fVar1;
return;
}
// --- FUN_0065e1c0 at 0x0065E1C0 (size: 68) ---
void __thiscall
FUN_0065e1c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
param_1[3] = 0;
param_1[2] = 0;
param_1[1] = 0;
param_1[7] = 0;
param_1[6] = 0;
param_1[4] = 0;
param_1[0xb] = 0;
param_1[9] = 0;
param_1[8] = 0;
param_1[0xe] = 0;
param_1[0xd] = 0;
param_1[0xc] = 0;
*param_1 = param_2;
param_1[0xf] = 0x3f800000;
param_1[5] = param_3;
param_1[10] = param_4;
return;
}
// --- FUN_0065e210 at 0x0065E210 (size: 901) ---
void __thiscall FUN_0065e210(float *param_1,float *param_2)
{
float fVar1;
float fVar2;
float fVar3;
float fVar4;
float fVar5;
float fVar6;
float fVar7;
float fVar8;
float fVar9;
float fVar10;
float fVar11;
float fVar12;
float fVar13;
float fVar14;
float fVar15;
float fVar16;
float fVar17;
float fVar18;
float fVar19;
float fVar20;
float fVar21;
float fVar22;
fVar7 = param_2[6];
fVar1 = *param_2;
fVar2 = param_2[1];
fVar8 = param_2[7];
fVar3 = param_2[2];
fVar4 = param_2[3];
fVar9 = param_2[8];
fVar5 = param_2[4];
fVar6 = param_2[5];
fVar10 = param_2[9];
fVar11 = param_2[10];
fVar12 = param_2[0xb];
fVar13 = param_2[0xc];
fVar14 = param_2[0xd];
fVar15 = param_2[0xe];
fVar16 = param_2[0xf];
fVar17 = fVar16 * fVar11 - fVar15 * fVar12;
fVar18 = fVar16 * fVar10 - fVar14 * fVar12;
fVar19 = fVar15 * fVar10 - fVar14 * fVar11;
*param_1 = fVar19 * fVar8 + (fVar17 * fVar6 - fVar18 * fVar7);
fVar20 = fVar16 * fVar9 - fVar13 * fVar12;
fVar21 = fVar15 * fVar9 - fVar13 * fVar11;
param_1[4] = -(fVar21 * fVar8 + (fVar17 * fVar5 - fVar20 * fVar7));
fVar22 = fVar14 * fVar9 - fVar13 * fVar10;
param_1[8] = fVar22 * fVar8 + (fVar18 * fVar5 - fVar20 * fVar6);
param_1[0xc] = -(fVar22 * fVar7 + (fVar19 * fVar5 - fVar21 * fVar6));
param_1[1] = -(fVar19 * fVar4 + (fVar17 * fVar2 - fVar18 * fVar3));
param_1[5] = fVar21 * fVar4 + (fVar17 * fVar1 - fVar20 * fVar3);
param_1[9] = -(fVar22 * fVar4 + (fVar18 * fVar1 - fVar20 * fVar2));
param_1[0xd] = fVar22 * fVar3 + (fVar19 * fVar1 - fVar21 * fVar2);
fVar19 = fVar16 * fVar7 - fVar15 * fVar8;
fVar18 = fVar16 * fVar6 - fVar14 * fVar8;
fVar17 = fVar15 * fVar6 - fVar14 * fVar7;
param_1[2] = fVar17 * fVar4 + (fVar19 * fVar2 - fVar18 * fVar3);
fVar16 = fVar16 * fVar5 - fVar13 * fVar8;
fVar15 = fVar15 * fVar5 - fVar13 * fVar7;
param_1[6] = -(fVar15 * fVar4 + (fVar19 * fVar1 - fVar16 * fVar3));
fVar13 = fVar14 * fVar5 - fVar13 * fVar6;
param_1[10] = fVar13 * fVar4 + (fVar18 * fVar1 - fVar16 * fVar2);
param_1[0xe] = -(fVar13 * fVar3 + (fVar17 * fVar1 - fVar15 * fVar2));
fVar15 = fVar12 * fVar7 - fVar11 * fVar8;
fVar14 = fVar12 * fVar6 - fVar10 * fVar8;
fVar13 = fVar11 * fVar6 - fVar10 * fVar7;
param_1[3] = -(fVar13 * fVar4 + (fVar15 * fVar2 - fVar14 * fVar3));
fVar8 = fVar12 * fVar5 - fVar9 * fVar8;
fVar7 = fVar11 * fVar5 - fVar9 * fVar7;
param_1[7] = fVar7 * fVar4 + (fVar15 * fVar1 - fVar8 * fVar3);
fVar5 = fVar10 * fVar5 - fVar9 * fVar6;
param_1[0xb] = -(fVar5 * fVar4 + (fVar14 * fVar1 - fVar8 * fVar2));
param_1[0xf] = fVar5 * fVar3 + (fVar13 * fVar1 - fVar7 * fVar2);
return;
}
// --- FUN_0065e5a0 at 0x0065E5A0 (size: 445) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 FUN_0065e5a0(float *param_1,float *param_2)
{
char cVar1;
if ((((ABS(*param_1 - *param_2) < _DAT_007feaf8 != (ABS(*param_1 - *param_2) == _DAT_007feaf8)) &&
(ABS(param_1[4] - param_2[4]) < _DAT_007feaf8 !=
(ABS(param_1[4] - param_2[4]) == _DAT_007feaf8))) &&
(ABS(param_1[8] - param_2[8]) < _DAT_007feaf8 !=
(ABS(param_1[8] - param_2[8]) == _DAT_007feaf8))) &&
((ABS(param_1[0xc] - param_2[0xc]) < _DAT_007feaf8 !=
(ABS(param_1[0xc] - param_2[0xc]) == _DAT_007feaf8) &&
(ABS(param_1[1] - param_2[1]) < _DAT_007feaf8 !=
(ABS(param_1[1] - param_2[1]) == _DAT_007feaf8))))) {
cVar1 = FUN_0043d870(param_1[5],param_2[5],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[9],param_2[9],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[0xd],param_2[0xd],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[2],param_2[2],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[6],param_2[6],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[10],param_2[10],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[0xe],param_2[0xe],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[3],param_2[3],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[7],param_2[7],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[0xb],param_2[0xb],0x3951b717);
if (cVar1 != '\0') {
cVar1 = FUN_0043d870(param_1[0xf],param_2[0xf],0x3951b717);
if (cVar1 != '\0') {
return 1;
}
}
}
}
}
}
}
}
}
}
}
}
return 0;
}
// --- FUN_0065e760 at 0x0065E760 (size: 109) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 FUN_0065e760(undefined4 param_1)
{
float *pfVar1;
int extraout_ECX;
int iVar2;
float10 fVar3;
float10 fVar4;
FUN_0065e210(param_1);
fVar3 = (float10)FUN_0065de70();
if (ABS(fVar3) < (float10)_DAT_007feaf8) {
return (float10)DAT_00796344;
}
fVar4 = (float10)_DAT_007938c0 / fVar3;
iVar2 = 4;
pfVar1 = (float *)(extraout_ECX + 8);
do {
iVar2 = iVar2 + -1;
pfVar1[-2] = (float)(fVar4 * (float10)pfVar1[-2]);
pfVar1[-1] = (float)(fVar4 * (float10)pfVar1[-1]);
*pfVar1 = (float)(fVar4 * (float10)*pfVar1);
pfVar1[1] = (float)(fVar4 * (float10)pfVar1[1]);
pfVar1 = pfVar1 + 4;
} while (iVar2 != 0);
return fVar3;
}
// --- FUN_0065e850 at 0x0065E850 (size: 60) ---
void __fastcall FUN_0065e850(int param_1)
{
char cVar1;
int local_4;
*(undefined1 *)(param_1 + 0x80) = 1;
if ((~(byte)(*(uint *)(param_1 + 4) >> 2) & 1) != 0) {
local_4 = param_1;
cVar1 = FUN_0040ab90(*(undefined4 *)(param_1 + 0x2c),&local_4);
if (cVar1 != '\0') {
FUN_004106f0(*(undefined4 *)(param_1 + 0x28),param_1);
}
}
return;
}
// --- FUN_0065e890 at 0x0065E890 (size: 18) ---
void __thiscall FUN_0065e890(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
*param_1 = param_2;
param_1[1] = param_3;
return;
}
// --- FUN_0065e8b0 at 0x0065E8B0 (size: 31) ---
undefined4 * __fastcall FUN_0065e8b0(undefined4 *param_1)
{
param_1[7] = 0;
param_1[8] = 0;
*param_1 = &PTR_FUN_007feb0c;
InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
return param_1;
}
// --- FUN_0065e8d0 at 0x0065E8D0 (size: 17) ---
void __fastcall FUN_0065e8d0(undefined4 *param_1)
{
*param_1 = &PTR_FUN_007feb0c;
DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
return;
}
// --- FUN_0065e8f0 at 0x0065E8F0 (size: 28) ---
void __fastcall FUN_0065e8f0(int param_1)
{
DWORD DVar1;
EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
DVar1 = GetCurrentThreadId();
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
*(DWORD *)(param_1 + 0x1c) = DVar1;
return;
}
// --- FUN_0065e910 at 0x0065E910 (size: 24) ---
void __fastcall FUN_0065e910(int param_1)
{
int *piVar1;
piVar1 = (int *)(param_1 + 0x20);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
*(undefined4 *)(param_1 + 0x1c) = 0;
}
LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
return;
}
// --- FUN_0065e930 at 0x0065E930 (size: 41) ---
undefined4 * __thiscall FUN_0065e930(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007feb0c;
DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 1));
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065e960 at 0x0065E960 (size: 52) ---
void __fastcall FUN_0065e960(undefined4 *param_1)
{
undefined4 *local_4;
*param_1 = &PTR_LAB_007feb14;
local_4 = param_1;
if (*(char *)(param_1 + 3) != '\0') {
local_4 = (undefined4 *)0x0;
GetExitCodeThread((HANDLE)param_1[1],(LPDWORD)&local_4);
}
CloseHandle((HANDLE)param_1[1]);
return;
}
// --- FUN_0065e9a0 at 0x0065E9A0 (size: 51) ---
undefined4 __fastcall FUN_0065e9a0(int param_1)
{
char cVar1;
DWORD DVar2;
DVar2 = ResumeThread(*(HANDLE *)(param_1 + 4));
if (DVar2 == 1) {
cVar1 = *(char *)(param_1 + 0xe);
while (cVar1 == '\0') {
Sleep(0);
cVar1 = *(char *)(param_1 + 0xe);
}
return 1;
}
return 0;
}
// --- FUN_0065ea50 at 0x0065EA50 (size: 57) ---
void FUN_0065ea50(int *param_1)
{
char cVar1;
*(undefined1 *)(param_1 + 3) = 1;
*(undefined1 *)((int)param_1 + 0xe) = 1;
cVar1 = FUN_00405e90(0x400);
if (cVar1 != '\0') {
FUN_00405fa0(1,8);
}
(**(code **)(*param_1 + 4))();
*(undefined1 *)(param_1 + 3) = 0;
return;
}
// --- FUN_0065ea90 at 0x0065EA90 (size: 73) ---
undefined4 * __thiscall FUN_0065ea90(undefined4 *param_1,SIZE_T param_2)
{
HANDLE pvVar1;
*param_1 = &PTR_LAB_007feb14;
param_1[1] = 0;
*(undefined1 *)(param_1 + 3) = 0;
*(undefined1 *)((int)param_1 + 0xd) = 0;
*(undefined1 *)((int)param_1 + 0xe) = 0;
pvVar1 = CreateThread((LPSECURITY_ATTRIBUTES)0x0,param_2,FUN_0065ea50,param_1,4,param_1 + 2);
param_1[1] = pvVar1;
if (pvVar1 == (HANDLE)0x0) {
GetLastError();
FUN_00661190();
}
return param_1;
}
// --- FUN_0065eae0 at 0x0065EAE0 (size: 29) ---
undefined4 * __fastcall FUN_0065eae0(undefined4 *param_1)
{
HANDLE pvVar1;
*param_1 = 0;
pvVar1 = CreateEventA((LPSECURITY_ATTRIBUTES)0x0,0,0,(LPCSTR)0x0);
*param_1 = pvVar1;
return param_1;
}
// --- FUN_0065eb00 at 0x0065EB00 (size: 24) ---
void __fastcall FUN_0065eb00(undefined4 *param_1)
{
if ((HANDLE)*param_1 != (HANDLE)0x0) {
CloseHandle((HANDLE)*param_1);
*param_1 = 0;
}
return;
}
// --- FUN_0065eb20 at 0x0065EB20 (size: 15) ---
bool __fastcall FUN_0065eb20(undefined4 *param_1)
{
BOOL BVar1;
BVar1 = SetEvent((HANDLE)*param_1);
return BVar1 != 0;
}
// --- FUN_0065eb30 at 0x0065EB30 (size: 28) ---
undefined4 __thiscall FUN_0065eb30(undefined4 *param_1,DWORD param_2)
{
DWORD DVar1;
DVar1 = WaitForSingleObject((HANDLE)*param_1,param_2);
if (DVar1 != 0) {
return 0;
}
return 1;
}
// --- FUN_0065eb50 at 0x0065EB50 (size: 8) ---
void __fastcall FUN_0065eb50(int param_1)
{
/* WARNING: Could not recover jumptable at 0x0065eb55. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(**(int **)(param_1 + 0x14) + 0x18))();
return;
}
// --- FUN_0065eb60 at 0x0065EB60 (size: 8) ---
void __fastcall FUN_0065eb60(int param_1)
{
/* WARNING: Could not recover jumptable at 0x0065eb65. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(**(int **)(param_1 + 0x14) + 0x1c))();
return;
}
// --- FUN_0065eb70 at 0x0065EB70 (size: 81) ---
void __thiscall FUN_0065eb70(int param_1,undefined4 *param_2)
{
undefined4 *puVar1;
LONG LVar2;
puVar1 = *(undefined4 **)(param_1 + 0x170);
if (puVar1 != param_2) {
if (puVar1 != (undefined4 *)0x0) {
LVar2 = InterlockedDecrement(puVar1 + 1);
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(1);
}
*(undefined4 *)(param_1 + 0x170) = 0;
}
*(undefined4 **)(param_1 + 0x170) = param_2;
InterlockedIncrement(param_2 + 1);
}
return;
}
// --- FUN_0065ebd0 at 0x0065EBD0 (size: 64) ---
undefined4 * __thiscall FUN_0065ebd0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007feb24;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065ec10 at 0x0065EC10 (size: 64) ---
undefined4 * __thiscall FUN_0065ec10(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007feb28;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065ec50 at 0x0065EC50 (size: 64) ---
undefined4 * __thiscall FUN_0065ec50(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007feb2c;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065ec90 at 0x0065EC90 (size: 76) ---
void __thiscall FUN_0065ec90(int param_1,uint param_2)
{
undefined4 *puVar1;
uint uVar2;
int iVar3;
*(uint *)(param_1 + 0x68) = param_2;
if (param_2 < 0x18) {
puVar1 = (undefined4 *)(param_1 + 4);
}
else {
puVar1 = (undefined4 *)thunk_FUN_005df0f5(param_2 * 4);
}
*(undefined4 **)(param_1 + 100) = puVar1 + *(uint *)(param_1 + 0x68);
*(undefined4 **)(param_1 + 0x60) = puVar1;
for (uVar2 = *(uint *)(param_1 + 0x68) & 0x3fffffff; uVar2 != 0; uVar2 = uVar2 - 1) {
*puVar1 = 0;
puVar1 = puVar1 + 1;
}
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
*(undefined1 *)puVar1 = 0;
puVar1 = (undefined4 *)((int)puVar1 + 1);
}
return;
}
// --- FUN_0065ece0 at 0x0065ECE0 (size: 32) ---
void __thiscall FUN_0065ece0(undefined4 *param_1,undefined4 param_2)
{
param_1[1] = param_2;
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
*param_1 = &PTR_FUN_007feb30;
param_1[5] = 0;
return;
}
// --- FUN_0065ed80 at 0x0065ED80 (size: 91) ---
void __thiscall FUN_0065ed80(int param_1,int *param_2,int *param_3)
{
int iVar1;
uint uVar2;
int iVar3;
char cVar4;
uint uVar5;
iVar1 = *param_3;
uVar5 = *(uint *)(iVar1 + -8);
uVar2 = *(uint *)(param_1 + 0x68);
if (uVar5 == 0xffffffff) {
uVar5 = FUN_0040a980(iVar1);
*(uint *)(iVar1 + -8) = uVar5;
}
uVar5 = uVar5 % uVar2;
iVar1 = *(int *)(param_1 + 0x60);
iVar3 = *(int *)(iVar1 + uVar5 * 4);
while ((iVar3 != 0 && (cVar4 = FUN_00401920(param_3), cVar4 == '\0'))) {
iVar3 = *(int *)(iVar3 + 4);
}
*param_2 = param_1;
param_2[2] = iVar3;
param_2[1] = iVar1 + uVar5 * 4;
return;
}
// --- FUN_0065ede0 at 0x0065EDE0 (size: 45) ---
undefined4 __thiscall FUN_0065ede0(int param_1,uint *param_2)
{
uint uVar1;
int iVar2;
bool bVar3;
uVar1 = *param_2;
iVar2 = *(int *)(*(int *)(param_1 + 0x60) + (uVar1 % *(uint *)(param_1 + 0x68)) * 4);
bVar3 = iVar2 == 0;
if (!bVar3) {
do {
if (*(uint *)(iVar2 + 4) == uVar1) break;
iVar2 = *(int *)(iVar2 + 8);
} while (iVar2 != 0);
bVar3 = iVar2 == 0;
}
return CONCAT31((int3)((ulonglong)uVar1 / (ulonglong)*(uint *)(param_1 + 0x68) >> 8),!bVar3);
}
// --- FUN_0065ee10 at 0x0065EE10 (size: 39) ---
undefined4 * __thiscall FUN_0065ee10(undefined4 *param_1,byte param_2)
{
FUN_004020c0();
*param_1 = &PTR_FUN_007952f4;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_0065ee40 at 0x0065EE40 (size: 164) ---
undefined4 __thiscall FUN_0065ee40(int *param_1,uint param_2)
{
undefined8 uVar1;
int *piVar2;
undefined4 uVar3;
int iVar4;
iVar4 = *(int *)(param_1[0x38] + (param_2 % (uint)param_1[0x3a]) * 4);
if (iVar4 != 0) {
while (*(uint *)(iVar4 + 8) != param_2) {
iVar4 = *(int *)(iVar4 + 0xc);
if (iVar4 == 0) {
return 5;
}
}
if (iVar4 != 0) {
uVar1 = *(undefined8 *)(param_1[0x5c] + 0x60);
*(undefined4 *)(iVar4 + 0x24) = 1;
*(undefined8 *)(iVar4 + 0x38) = uVar1;
(**(code **)(*param_1 + 8))(param_2);
if ((param_1[0x1c] != 0) && (piVar2 = (int *)param_1[0x1d], piVar2 != (int *)0x0)) {
while (piVar2 + -3 != (int *)0x0) {
(**(code **)(piVar2[-3] + 4))(param_2);
piVar2 = (int *)*piVar2;
if ((piVar2 == (int *)0x0) || (piVar2 == (int *)0x8)) break;
}
}
uVar3 = (**(code **)(*param_1 + 0x18))(param_2,param_2);
return uVar3;
}
}
return 5;
}
// --- FUN_0065eef0 at 0x0065EEF0 (size: 68) ---
undefined4 __thiscall FUN_0065eef0(int param_1,uint param_2,int param_3)
{
int iVar1;
iVar1 = *(int *)(*(int *)(param_1 + 0xe0) + (param_2 % *(uint *)(param_1 + 0xe8)) * 4);
while( true ) {
if (iVar1 == 0) {
return 0;
}
if (*(uint *)(iVar1 + 8) == param_2) break;
iVar1 = *(int *)(iVar1 + 0xc);
}
if (iVar1 == 0) {
return 0;
}
return *(undefined4 *)(*(int *)(iVar1 + 0x18) + param_3 * 4);
}
// --- FUN_0065ef40 at 0x0065EF40 (size: 74) ---
undefined4 __thiscall FUN_0065ef40(int param_1,uint param_2,int param_3,undefined4 param_4)
{
int iVar1;
iVar1 = *(int *)(*(int *)(param_1 + 0xe0) + (param_2 % *(uint *)(param_1 + 0xe8)) * 4);
while( true ) {
if (iVar1 == 0) {
return 0;
}
if (*(uint *)(iVar1 + 8) == param_2) break;
iVar1 = *(int *)(iVar1 + 0xc);
}
if (iVar1 == 0) {
return 0;
}
*(undefined4 *)(*(int *)(iVar1 + 0x18) + param_3 * 4) = param_4;
return 1;
}
// --- FUN_0065f170 at 0x0065F170 (size: 82) ---
void __fastcall FUN_0065f170(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
uint local_8;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
local_8 = local_8 & 0xffffff00;
puVar2 = (undefined4 *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_8,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_0065f520(*puVar2);
return;
}
// --- FUN_0065f1d0 at 0x0065F1D0 (size: 82) ---
void __fastcall FUN_0065f1d0(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
uint local_8;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
local_8 = local_8 & 0xffffff00;
puVar2 = (undefined4 *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_8,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_0065f610(*puVar2);
return;
}
// --- FUN_0065f230 at 0x0065F230 (size: 8) ---
void FUN_0065f230(void)
{
FUN_0065eef0();
return;
}
// --- FUN_0065f240 at 0x0065F240 (size: 8) ---
void FUN_0065f240(void)
{
FUN_0065ef40();
return;
}
// --- FUN_0065f250 at 0x0065F250 (size: 67) ---
void __fastcall FUN_0065f250(int *param_1)
{
int unaff_ESI;
int *unaff_retaddr;
int *local_4;
local_4 = param_1;
(**(code **)(*param_1 + 4))(&local_4);
if (unaff_ESI != DAT_008f86a0) {
FUN_0065ee40(unaff_ESI,0x80000100);
*unaff_retaddr = unaff_ESI;
return;
}
*unaff_retaddr = unaff_ESI;
return;
}
// --- FUN_0065f2a0 at 0x0065F2A0 (size: 151) ---
undefined4 * __thiscall FUN_0065f2a0(undefined4 *param_1,uint param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
uint local_4;
local_4 = param_2;
param_2 = param_2 & 0xffffff00;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007feb24;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 * 4);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_0065f340 at 0x0065F340 (size: 151) ---
undefined4 * __thiscall FUN_0065f340(undefined4 *param_1,uint param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
uint local_4;
local_4 = param_2;
param_2 = param_2 & 0xffffff00;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007feb28;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 * 4);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_0065f3e0 at 0x0065F3E0 (size: 151) ---
undefined4 * __thiscall FUN_0065f3e0(undefined4 *param_1,uint param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
uint local_4;
local_4 = param_2;
param_2 = param_2 & 0xffffff00;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007feb2c;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 * 4);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_0065f480 at 0x0065F480 (size: 82) ---
void __fastcall FUN_0065f480(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
uint local_8;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
local_8 = local_8 & 0xffffff00;
puVar2 = (undefined4 *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_8,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_0065f770(*puVar2);
return;
}
// --- FUN_0065f4e0 at 0x0065F4E0 (size: 58) ---
void __thiscall FUN_0065f4e0(int param_1,undefined4 param_2,int *param_3,int param_4)
{
int iVar1;
int iVar2;
iVar2 = *param_3;
if (iVar2 != param_4) {
do {
iVar1 = iVar2;
iVar2 = *(int *)(iVar1 + 0xc);
} while (iVar2 != param_4);
if (iVar1 != 0) {
*(undefined4 *)(iVar1 + 0xc) = *(undefined4 *)(iVar2 + 0xc);
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
return;
}
}
*param_3 = *(int *)(iVar2 + 0xc);
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
return;
}
// --- FUN_0065f520 at 0x0065F520 (size: 235) ---
undefined4 __thiscall FUN_0065f520(int param_1,int param_2)
{
int iVar1;
int iVar2;
int *piVar3;
uint uVar4;
int iVar5;
if (param_2 == *(int *)(param_1 + 0x68)) {
return 0;
}
iVar1 = *(int *)(param_1 + 0x6c);
iVar2 = 0;
do {
if (iVar1 == 0) {
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_0065ec90(param_2);
while (iVar2 != 0) {
iVar1 = *(int *)(iVar2 + 8);
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f170();
}
uVar4 = *(uint *)(iVar2 + 4) % *(uint *)(param_1 + 0x68);
iVar5 = *(int *)(param_1 + 0x60);
*(undefined4 *)(iVar2 + 8) = *(undefined4 *)(iVar5 + uVar4 * 4);
*(int *)(iVar5 + uVar4 * 4) = iVar2;
uVar4 = iVar5 + uVar4 * 4;
if (uVar4 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar4;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
iVar2 = iVar1;
}
return 1;
}
piVar3 = *(int **)(param_1 + 100);
while (piVar3 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar3 = *(int **)(param_1 + 100);
iVar5 = *piVar3;
goto LAB_0065f56e;
}
piVar3 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar3;
}
piVar3 = (int *)0x0;
iVar5 = 0;
LAB_0065f56e:
FUN_0065fc20(param_1,piVar3,iVar5);
*(int *)(iVar5 + 8) = iVar2;
iVar1 = *(int *)(param_1 + 0x6c);
iVar2 = iVar5;
} while( true );
}
// --- FUN_0065f610 at 0x0065F610 (size: 248) ---
undefined4 __thiscall FUN_0065f610(int param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
uint uVar5;
int *piVar6;
if (param_2 == *(int *)(param_1 + 0x68)) {
return 0;
}
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = 0;
do {
if (iVar3 == 0) {
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_0065ec90(param_2);
while (iVar1 != 0) {
iVar3 = *(int *)(iVar1 + 0xc);
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f1d0();
}
uVar5 = *(uint *)(iVar1 + 8) % *(uint *)(param_1 + 0x68);
iVar4 = *(int *)(param_1 + 0x60);
*(undefined4 *)(iVar1 + 0xc) = *(undefined4 *)(iVar4 + uVar5 * 4);
*(int *)(iVar4 + uVar5 * 4) = iVar1;
uVar5 = iVar4 + uVar5 * 4;
if (uVar5 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar5;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
iVar1 = iVar3;
}
return 1;
}
piVar6 = *(int **)(param_1 + 100);
while (piVar6 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar6 = *(int **)(param_1 + 100);
iVar4 = *piVar6;
goto LAB_0065f65f;
}
piVar6 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar6;
}
piVar6 = (int *)0x0;
iVar4 = 0;
LAB_0065f65f:
iVar3 = *piVar6;
if (iVar3 == iVar4) {
LAB_0065f673:
*piVar6 = *(int *)(iVar3 + 0xc);
}
else {
do {
iVar2 = iVar3;
iVar3 = *(int *)(iVar2 + 0xc);
} while (iVar3 != iVar4);
if (iVar2 == 0) goto LAB_0065f673;
*(undefined4 *)(iVar2 + 0xc) = *(undefined4 *)(iVar3 + 0xc);
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
*(int *)(iVar4 + 0xc) = iVar1;
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = iVar4;
} while( true );
}
// --- FUN_0065f710 at 0x0065F710 (size: 95) ---
void __thiscall FUN_0065f710(int param_1,int *param_2)
{
uint uVar1;
int iVar2;
uint uVar3;
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f480();
}
uVar1 = *(uint *)(param_1 + 0x68);
iVar2 = *param_2;
uVar3 = *(uint *)(iVar2 + -8);
if (uVar3 == 0xffffffff) {
uVar3 = FUN_0040a980(iVar2);
*(uint *)(iVar2 + -8) = uVar3;
}
uVar3 = uVar3 % uVar1;
iVar2 = *(int *)(param_1 + 0x60);
param_2[1] = *(int *)(iVar2 + uVar3 * 4);
*(int **)(iVar2 + uVar3 * 4) = param_2;
uVar1 = iVar2 + uVar3 * 4;
if (uVar1 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar1;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
return;
}
// --- FUN_0065f770 at 0x0065F770 (size: 278) ---
undefined4 __thiscall FUN_0065f770(int param_1,int param_2)
{
int iVar1;
uint uVar2;
int *piVar3;
int *piVar4;
uint uVar5;
int *piVar6;
int *piVar7;
int *piVar8;
if (param_2 == *(int *)(param_1 + 0x68)) {
return 0;
}
piVar7 = (int *)0x0;
if (*(int *)(param_1 + 0x6c) != 0) {
piVar8 = (int *)0x0;
do {
piVar7 = *(int **)(param_1 + 100);
while (piVar7 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar6 = *(int **)(param_1 + 100);
piVar7 = (int *)*piVar6;
goto LAB_0065f7be;
}
piVar7 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar7;
}
piVar6 = (int *)0x0;
piVar7 = (int *)0x0;
LAB_0065f7be:
piVar4 = (int *)*piVar6;
if (piVar4 == piVar7) {
LAB_0065f7d2:
*piVar6 = piVar4[1];
}
else {
do {
piVar3 = piVar4;
piVar4 = (int *)piVar3[1];
} while (piVar4 != piVar7);
if (piVar3 == (int *)0x0) goto LAB_0065f7d2;
piVar3[1] = piVar4[1];
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
piVar7[1] = (int)piVar8;
piVar8 = piVar7;
} while (*(int *)(param_1 + 0x6c) != 0);
}
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_0065ec90(param_2);
while (piVar7 != (int *)0x0) {
piVar8 = (int *)piVar7[1];
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f480();
}
iVar1 = *piVar7;
uVar5 = *(uint *)(iVar1 + -8);
uVar2 = *(uint *)(param_1 + 0x68);
if (uVar5 == 0xffffffff) {
uVar5 = FUN_0040a980(iVar1);
*(uint *)(iVar1 + -8) = uVar5;
}
uVar5 = uVar5 % uVar2;
iVar1 = *(int *)(param_1 + 0x60);
piVar7[1] = *(int *)(iVar1 + uVar5 * 4);
*(int **)(iVar1 + uVar5 * 4) = piVar7;
uVar5 = iVar1 + uVar5 * 4;
if (uVar5 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar5;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
piVar7 = piVar8;
}
return 1;
}
// --- FUN_0065f890 at 0x0065F890 (size: 119) ---
uint __thiscall FUN_0065f890(int param_1,int param_2)
{
int iVar1;
uint uVar2;
iVar1 = *(int *)(*(uint *)(param_1 + 0x60) +
(*(uint *)(param_2 + 4) % *(uint *)(param_1 + 0x68)) * 4);
do {
if (iVar1 == 0) {
LAB_0065f8bc:
if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f170();
}
uVar2 = *(uint *)(param_2 + 4) % *(uint *)(param_1 + 0x68);
iVar1 = *(int *)(param_1 + 0x60);
*(undefined4 *)(param_2 + 8) = *(undefined4 *)(iVar1 + uVar2 * 4);
*(int *)(iVar1 + uVar2 * 4) = param_2;
uVar2 = iVar1 + uVar2 * 4;
if (uVar2 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar2;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
return CONCAT31((int3)(uVar2 >> 8),1);
}
if (*(uint *)(iVar1 + 4) == *(uint *)(param_2 + 4)) {
if (iVar1 != 0) {
return *(uint *)(param_1 + 0x60) & 0xffffff00;
}
goto LAB_0065f8bc;
}
iVar1 = *(int *)(iVar1 + 8);
} while( true );
}
// --- FUN_0065f910 at 0x0065F910 (size: 119) ---
uint __thiscall FUN_0065f910(int param_1,int param_2)
{
int iVar1;
uint uVar2;
iVar1 = *(int *)(*(uint *)(param_1 + 0x60) +
(*(uint *)(param_2 + 8) % *(uint *)(param_1 + 0x68)) * 4);
do {
if (iVar1 == 0) {
LAB_0065f93c:
if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) {
FUN_0065f1d0();
}
uVar2 = *(uint *)(param_2 + 8) % *(uint *)(param_1 + 0x68);
iVar1 = *(int *)(param_1 + 0x60);
*(undefined4 *)(param_2 + 0xc) = *(undefined4 *)(iVar1 + uVar2 * 4);
*(int *)(iVar1 + uVar2 * 4) = param_2;
uVar2 = iVar1 + uVar2 * 4;
if (uVar2 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar2;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
return CONCAT31((int3)(uVar2 >> 8),1);
}
if (*(uint *)(iVar1 + 8) == *(uint *)(param_2 + 8)) {
if (iVar1 != 0) {
return *(uint *)(param_1 + 0x60) & 0xffffff00;
}
goto LAB_0065f93c;
}
iVar1 = *(int *)(iVar1 + 0xc);
} while( true );
}
// --- FUN_0065f990 at 0x0065F990 (size: 82) ---
int __thiscall FUN_0065f990(int param_1,uint *param_2)
{
int iVar1;
uint uVar2;
uVar2 = *param_2 % *(uint *)(param_1 + 0x68);
iVar1 = *(int *)(*(int *)(param_1 + 0x60) + uVar2 * 4);
while( true ) {
if (iVar1 == 0) {
return 0;
}
if (*(uint *)(iVar1 + 8) == *param_2) break;
iVar1 = *(int *)(iVar1 + 0xc);
}
if (iVar1 == 0) {
return 0;
}
FUN_0065f4e0(param_1,*(int *)(param_1 + 0x60) + uVar2 * 4,iVar1);
return iVar1;
}
// --- FUN_0065f9f0 at 0x0065F9F0 (size: 129) ---
uint __thiscall FUN_0065f9f0(int param_1,int param_2)
{
int iVar1;
undefined4 *puVar2;
undefined3 uVar3;
iVar1 = *(int *)(*(uint *)(param_1 + 0x60) +
(*(uint *)(param_2 + 4) % *(uint *)(param_1 + 0x68)) * 4);
do {
if (iVar1 == 0) {
LAB_0065fa1c:
FUN_0065f890(param_2);
if (param_2 == -4) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = (undefined4 *)(param_2 + 0xc);
}
*puVar2 = *(undefined4 *)(param_1 + 0x70);
uVar3 = (undefined3)((uint)puVar2 >> 8);
if (*(int *)(param_1 + 0x70) == 0) {
*(undefined4 **)(param_1 + 0x74) = puVar2;
*(undefined4 **)(param_1 + 0x70) = puVar2;
puVar2[1] = 0;
return CONCAT31(uVar3,1);
}
*(undefined4 **)(*(int *)(param_1 + 0x70) + 4) = puVar2;
*(undefined4 **)(param_1 + 0x70) = puVar2;
puVar2[1] = 0;
return CONCAT31(uVar3,1);
}
if (*(uint *)(iVar1 + 4) == *(uint *)(param_2 + 4)) {
if (iVar1 != 0) {
return *(uint *)(param_1 + 0x60) & 0xffffff00;
}
goto LAB_0065fa1c;
}
iVar1 = *(int *)(iVar1 + 8);
} while( true );
}
// --- FUN_0065fa80 at 0x0065FA80 (size: 96) ---
undefined4 __thiscall FUN_0065fa80(int param_1,int param_2)
{
int iVar1;
iVar1 = *(int *)(*(int *)(param_1 + 0x60) +
(*(uint *)(param_2 + 4) % *(uint *)(param_1 + 0x68)) * 4);
do {
if (iVar1 == 0) {
LAB_0065faac:
FUN_0065f890(param_2);
if (param_2 == -4) {
param_2 = 0;
}
else {
param_2 = param_2 + 0xc;
}
FUN_00410820(param_2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*(uint *)(iVar1 + 4) == *(uint *)(param_2 + 4)) {
if (iVar1 != 0) {
return 0;
}
goto LAB_0065faac;
}
iVar1 = *(int *)(iVar1 + 8);
} while( true );
}
// --- FUN_0065fae0 at 0x0065FAE0 (size: 124) ---
undefined4 FUN_0065fae0(int param_1,int param_2)
{
char cVar1;
undefined4 uVar2;
if (param_1 == 0) {
uVar2 = FUN_0065f9f0(param_2);
return uVar2;
}
cVar1 = FUN_0065ede0(param_2 + 4);
if (cVar1 != '\0') {
return 0;
}
FUN_0065f890(param_2);
if (param_1 == -4) {
param_1 = 0;
}
else {
param_1 = param_1 + 0xc;
}
if (param_2 + 4 != 0) {
FUN_00410820(param_2 + 0xc,param_1);
return 1;
}
FUN_00410820(0,param_1);
return 1;
}
// --- FUN_0065fb60 at 0x0065FB60 (size: 96) ---
undefined4 __thiscall FUN_0065fb60(int param_1,int param_2)
{
int iVar1;
iVar1 = *(int *)(*(int *)(param_1 + 0x60) +
(*(uint *)(param_2 + 8) % *(uint *)(param_1 + 0x68)) * 4);
do {
if (iVar1 == 0) {
LAB_0065fb8c:
FUN_0065f910(param_2);
if (param_2 == -8) {
param_2 = 0;
}
else {
param_2 = param_2 + 0x10;
}
FUN_00410820(param_2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*(uint *)(iVar1 + 8) == *(uint *)(param_2 + 8)) {
if (iVar1 != 0) {
return 0;
}
goto LAB_0065fb8c;
}
iVar1 = *(int *)(iVar1 + 0xc);
} while( true );
}
// --- FUN_0065fbc0 at 0x0065FBC0 (size: 95) ---
int __thiscall FUN_0065fbc0(int param_1,uint *param_2)
{
int iVar1;
int iVar2;
iVar2 = *(int *)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
if (iVar2 != 0) {
while (*(uint *)(iVar2 + 8) != *param_2) {
iVar2 = *(int *)(iVar2 + 0xc);
if (iVar2 == 0) {
return 0;
}
}
if (iVar2 != 0) {
if (iVar2 == -8) {
iVar1 = 0;
}
else {
iVar1 = iVar2 + 0x10;
}
FUN_00410880(iVar1);
FUN_0065f990(param_2);
}
}
return iVar2;
}
// --- FUN_0065fc20 at 0x0065FC20 (size: 58) ---
void __thiscall FUN_0065fc20(int param_1,undefined4 param_2,int *param_3,int param_4)
{
int iVar1;
int iVar2;
iVar2 = *param_3;
if (iVar2 != param_4) {
do {
iVar1 = iVar2;
iVar2 = *(int *)(iVar1 + 8);
} while (iVar2 != param_4);
if (iVar1 != 0) {
*(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar2 + 8);
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
return;
}
}
*param_3 = *(int *)(iVar2 + 8);
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
return;
}
// --- FUN_0065fc60 at 0x0065FC60 (size: 327) ---
undefined1 __thiscall FUN_0065fc60(int param_1,int *param_2)
{
int iVar1;
uint uVar2;
int iVar3;
int local_10;
local_10 = 0;
if (*(int *)(param_1 + 0x70) != 0) {
if (*(int *)(param_1 + 0x74) == 0) {
local_10 = 0;
}
else {
local_10 = *(int *)(param_1 + 0x74) + -0xc;
}
}
iVar3 = 0;
if (*(int *)(param_1 + 0x70) != 0) {
if (*(int *)(param_1 + 0x78) == 0) {
iVar3 = 0;
}
else {
iVar3 = *(int *)(param_1 + 0x78) + -0xc;
}
}
uVar2 = param_2[1];
if ((int)uVar2 < -0x7fffff00) {
return 0;
}
if (0x7ffffeff < (int)uVar2) {
if (uVar2 == 0x7ffffffd) {
iVar1 = iVar3;
for (uVar2 = 0x7ffffeff; (iVar1 != 0 && (*(uint *)(iVar1 + 4) == uVar2)); uVar2 = uVar2 - 1) {
iVar1 = *(int *)(iVar1 + 0x10);
if ((iVar1 == 0) || (iVar1 == 8)) {
iVar1 = 0;
}
else {
iVar1 = iVar1 + -0xc;
}
}
param_2[1] = uVar2;
}
if (0x7ffffeff < (int)uVar2) {
return 0;
}
}
iVar1 = *(int *)(*(int *)(param_1 + 100) + (uVar2 % *(uint *)(param_1 + 0x6c)) * 4);
do {
if (iVar1 == 0) {
LAB_0065fd1d:
if ((iVar3 == 0) || (*(int *)(iVar3 + 4) < (int)uVar2)) {
FUN_0065fa80(param_2);
}
else if ((int)uVar2 < *(int *)(local_10 + 4)) {
FUN_0065f9f0(param_2);
}
else {
if (local_10 == iVar3) {
return 0;
}
while( true ) {
iVar3 = *(int *)(iVar3 + 0x10);
if ((iVar3 == 0) || (iVar3 == 8)) {
iVar3 = 0;
}
else {
iVar3 = iVar3 + -0xc;
}
if (*(int *)(iVar3 + 4) < (int)uVar2) break;
if (local_10 == iVar3) {
return 0;
}
}
FUN_0065fae0(iVar3,param_2);
}
param_2[5] = param_1;
(**(code **)(*param_2 + 0x18))();
return 1;
}
if (*(uint *)(iVar1 + 4) == uVar2) {
if (iVar1 != 0) {
return 0;
}
goto LAB_0065fd1d;
}
iVar1 = *(int *)(iVar1 + 8);
} while( true );
}
// --- FUN_0065fe70 at 0x0065FE70 (size: 316) ---
void __thiscall FUN_0065fe70(int *param_1,uint param_2,undefined4 param_3)
{
int iVar1;
LONG LVar2;
int *unaff_EBP;
undefined4 *puVar3;
int *piVar4;
undefined1 auStack_8 [4];
int *local_4;
local_4 = param_1 + 0x20;
puVar3 = *(undefined4 **)(param_1[0x38] + (param_2 % (uint)param_1[0x3a]) * 4);
if (puVar3 != (undefined4 *)0x0) {
while (puVar3[2] != param_2) {
puVar3 = (undefined4 *)puVar3[3];
if (puVar3 == (undefined4 *)0x0) {
return;
}
}
if ((puVar3 != (undefined4 *)0x0) && (iVar1 = puVar3[9], iVar1 < 2)) {
puVar3[9] = param_3;
if ((iVar1 == 1) && ((int *)puVar3[0xc] != (int *)0x0)) {
(**(code **)(*(int *)puVar3[0xc] + 0xc))(param_2,param_3);
}
piVar4 = (int *)0x0;
if (param_1[0x1c] != 0) {
if (param_1[0x1d] == 0) {
piVar4 = (int *)0x0;
}
else {
piVar4 = (int *)(param_1[0x1d] + -0xc);
}
}
(**(code **)(*param_1 + 0xc))(param_2,param_3);
while (piVar4 != (int *)0x0) {
(**(code **)(*piVar4 + 0x10))(param_2,param_3);
iVar1 = piVar4[3];
if ((iVar1 == 0) || (iVar1 == 8)) break;
piVar4 = (int *)(iVar1 + -0xc);
}
(**(code **)(*unaff_EBP + 0x10))(param_2);
piVar4 = (int *)0x0;
if (local_4[0x1b] != 0) {
if (local_4[0x1c] == 0) {
piVar4 = (int *)0x0;
}
else {
piVar4 = (int *)(local_4[0x1c] + -0xc);
}
}
while (piVar4 != (int *)0x0) {
(**(code **)(*piVar4 + 0x14))(param_2);
iVar1 = piVar4[3];
if ((iVar1 == 0) || (iVar1 == 8)) break;
piVar4 = (int *)(iVar1 + -0xc);
}
FUN_0065fbc0(auStack_8);
LVar2 = InterlockedDecrement(puVar3 + 1);
if (LVar2 == 0) {
(**(code **)*puVar3)(1);
}
}
}
return;
}
// --- FUN_0065ffb0 at 0x0065FFB0 (size: 46) ---
int __thiscall FUN_0065ffb0(int *param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
iVar1 = (**(code **)(*param_1 + 0x14))(param_2,param_3);
if (iVar1 != 1) {
FUN_0065fe70(param_2,iVar1);
}
return iVar1;
}
// --- FUN_0065fff0 at 0x0065FFF0 (size: 156) ---
undefined4 FUN_0065fff0(int *param_1,int *param_2)
{
int iVar1;
int *piVar2;
LONG LVar3;
undefined4 *puVar4;
undefined1 local_c [8];
int local_4;
piVar2 = (int *)FUN_005df0f5(0xc);
if (piVar2 == (int *)0x0) {
piVar2 = (int *)0x0;
}
else {
iVar1 = *param_1;
*piVar2 = iVar1;
InterlockedIncrement((LONG *)(iVar1 + -0x10));
piVar2[1] = 0;
piVar2[2] = *param_2;
}
FUN_0065ed80(local_c,piVar2);
if (local_4 == 0) {
FUN_0065f710(piVar2);
return 1;
}
if (piVar2 != (int *)0x0) {
puVar4 = (undefined4 *)(*piVar2 + -0x14);
LVar3 = InterlockedDecrement((LONG *)(*piVar2 + -0x10));
if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) {
(**(code **)*puVar4)(1);
}
operator_delete(piVar2);
}
return 0;
}