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>
11050 lines
430 KiB
C
11050 lines
430 KiB
C
// Decompiled from acclient.exe — chunk 0x00640000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_006415e0 at 0x006415E0 (size: 102) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00641604) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x006415ed) */
|
|
|
|
|
|
|
|
undefined8 __fastcall FUN_006415e0(undefined4 param_1,undefined4 param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
undefined4 in_EAX;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
|
|
|
|
piVar1 = (int *)cpuid_basic_info(0);
|
|
|
|
iVar3 = *piVar1;
|
|
|
|
uVar5 = piVar1[2];
|
|
|
|
uVar4 = piVar1[3];
|
|
|
|
param_3[6] = piVar1[1];
|
|
|
|
param_3[7] = uVar5;
|
|
|
|
param_3[8] = uVar4;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
puVar2 = (uint *)cpuid_Version_info(1);
|
|
|
|
uVar4 = *puVar2;
|
|
|
|
uVar6 = puVar2[2];
|
|
|
|
uVar5 = uVar4 & 0x3fff;
|
|
|
|
*param_3 = puVar2[1] & 0xff;
|
|
|
|
param_3[1] = uVar5 >> 0xc;
|
|
|
|
param_3[2] = uVar5 >> 8 & 0xf;
|
|
|
|
param_3[3] = uVar5 >> 4 & 0xf;
|
|
|
|
param_3[4] = uVar4 & 0xf;
|
|
|
|
param_3[5] = uVar6;
|
|
|
|
}
|
|
|
|
return CONCAT44(param_2,in_EAX);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641670 at 0x00641670 (size: 6) ---
|
|
|
|
|
|
undefined1 FUN_00641670(undefined1 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641680 at 0x00641680 (size: 426) ---
|
|
|
|
|
|
int FUN_00641680(int param_1,uint param_2,int *param_3,int *param_4,undefined4 *param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
undefined4 local_2c;
|
|
|
|
void *local_14;
|
|
|
|
undefined *puStack_10;
|
|
|
|
undefined *puStack_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
puStack_c = &DAT_00908aac;
|
|
|
|
puStack_10 = &DAT_005df82c;
|
|
|
|
local_14 = ExceptionList;
|
|
|
|
local_8 = 0;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
*param_3 = 0;
|
|
|
|
if (*(uint *)(param_1 + 0x24) < param_2) {
|
|
|
|
iVar1 = FUN_005df0f5(param_2,&local_3c);
|
|
|
|
*param_3 = iVar1;
|
|
|
|
if (*param_3 == 0) {
|
|
|
|
local_3c = -5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_4 = *param_3;
|
|
|
|
local_38 = *param_3;
|
|
|
|
*param_5 = 1;
|
|
|
|
local_34 = param_2;
|
|
|
|
if (*(uint *)(param_1 + 0x24) <= param_2) {
|
|
|
|
local_34 = *(uint *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
(*DAT_008f85a8)(local_38,*(undefined4 *)(param_1 + 0x10),local_34,&local_3c);
|
|
|
|
local_38 = local_38 + local_34;
|
|
|
|
param_2 = param_2 - local_34;
|
|
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + local_34;
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + local_34;
|
|
|
|
*(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) - local_34;
|
|
|
|
local_30 = param_2;
|
|
|
|
uVar2 = param_2;
|
|
|
|
while (param_2 = uVar3, uVar2 != 0) {
|
|
|
|
if (0xffff < param_2) {
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_3c;
|
|
|
|
}
|
|
|
|
uVar3 = param_2;
|
|
|
|
if (0xfff < param_2) {
|
|
|
|
uVar3 = 0x1000;
|
|
|
|
}
|
|
|
|
local_3c = FUN_006495d0(param_1,uVar3,&local_2c,&local_3c);
|
|
|
|
if (local_3c != 0) {
|
|
|
|
local_3c = -0x15;
|
|
|
|
operator_delete((void *)*param_3);
|
|
|
|
*param_3 = 0;
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_3c;
|
|
|
|
}
|
|
|
|
uVar3 = param_2;
|
|
|
|
if (0xfff < param_2) {
|
|
|
|
uVar3 = 0x1000;
|
|
|
|
}
|
|
|
|
(*DAT_008f85a8)(local_38,local_2c,uVar3,&local_3c);
|
|
|
|
uVar3 = param_2;
|
|
|
|
if (0xfff < param_2) {
|
|
|
|
uVar3 = 0x1000;
|
|
|
|
}
|
|
|
|
local_38 = local_38 + uVar3;
|
|
|
|
uVar3 = param_2 - 0x1000;
|
|
|
|
uVar2 = uVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_3c = FUN_006495d0(param_1,param_2,param_4,&local_3c);
|
|
|
|
}
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_3c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641860 at 0x00641860 (size: 117) ---
|
|
|
|
|
|
int FUN_00641860(undefined4 param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int local_14;
|
|
|
|
undefined1 *local_10;
|
|
|
|
void *local_c;
|
|
|
|
|
|
|
|
local_14 = 0;
|
|
|
|
iVar1 = FUN_00641680(param_1,2,&local_c,&local_10,&local_14);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*param_2 = (uint)CONCAT11(*local_10,local_10[1]);
|
|
|
|
}
|
|
|
|
if ((local_14 != 0) && (local_c != (void *)0x0)) {
|
|
|
|
operator_delete(local_c);
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006418e0 at 0x006418E0 (size: 122) ---
|
|
|
|
|
|
int FUN_006418e0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined1 *local_c;
|
|
|
|
|
|
|
|
cVar1 = *(char *)(param_1 + 0x30);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
iVar3 = FUN_00649660(param_1);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = FUN_006495d0(param_1,1,&local_c);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
*param_2 = 0x100;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_00641670(*local_c);
|
|
|
|
*param_2 = uVar2;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 *)(param_1 + 0x30) = 0;
|
|
|
|
uVar2 = FUN_00641670(cVar1);
|
|
|
|
*param_2 = uVar2;
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641960 at 0x00641960 (size: 194) ---
|
|
|
|
|
|
int FUN_00641960(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int local_14;
|
|
|
|
undefined1 local_10 [8];
|
|
|
|
|
|
|
|
iVar2 = FUN_00641860(param_1,&local_14);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
if (local_14 < 2) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
local_14 = local_14 + -2;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
if (iVar1 <= local_14) {
|
|
|
|
iVar2 = FUN_006495d0(param_1,iVar1,local_10);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
local_14 = local_14 - iVar1;
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
for (; (0 < local_14 && (local_14 < 0x10000)); local_14 = local_14 + -0x1000) {
|
|
|
|
iVar2 = local_14;
|
|
|
|
if (0xfff < local_14) {
|
|
|
|
iVar2 = 0x1000;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_006495d0(param_1,iVar2,local_10);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641a30 at 0x00641A30 (size: 168) ---
|
|
|
|
|
|
int FUN_00641a30(undefined4 param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *local_1c;
|
|
|
|
void *local_18;
|
|
|
|
int local_14;
|
|
|
|
int local_10;
|
|
|
|
|
|
|
|
local_1c = (undefined1 *)0x0;
|
|
|
|
local_18 = (void *)0x0;
|
|
|
|
local_14 = 0;
|
|
|
|
*param_2 = 0;
|
|
|
|
iVar1 = FUN_00641860(param_1,&local_10);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
if (local_10 < 2) {
|
|
|
|
iVar1 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_10 = local_10 + -2;
|
|
|
|
iVar1 = FUN_00641680(param_1,local_10,&local_18,&local_1c,&local_14);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*param_2 = (uint)CONCAT11(*local_1c,local_1c[1]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((local_14 != 0) && (local_18 != (void *)0x0)) {
|
|
|
|
operator_delete(local_18);
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641ae0 at 0x00641AE0 (size: 593) ---
|
|
|
|
|
|
int FUN_00641ae0(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
byte *pbVar10;
|
|
|
|
byte *local_34;
|
|
|
|
void *local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int iStack_24;
|
|
|
|
undefined4 uStack_20;
|
|
|
|
undefined4 uStack_1c;
|
|
|
|
int iStack_18;
|
|
|
|
|
|
|
|
local_34 = (byte *)0x0;
|
|
|
|
local_30 = (void *)0x0;
|
|
|
|
local_2c = 0;
|
|
|
|
iVar4 = FUN_00641860(param_1,&local_28);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
if (local_28 < 2) {
|
|
|
|
iVar4 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_28 = local_28 + -2;
|
|
|
|
iVar4 = FUN_00641680(param_1,local_28,&local_30,&local_34,&local_2c);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
(*DAT_008f85a4)(*(undefined4 *)(param_2 + 0x37cc),0x40);
|
|
|
|
bVar1 = *local_34;
|
|
|
|
*(uint *)(param_2 + 0x37a4) = (uint)bVar1;
|
|
|
|
bVar2 = local_34[1];
|
|
|
|
*(uint *)(param_2 + 0x37ac) = (uint)bVar2 << 8;
|
|
|
|
uVar7 = (uint)CONCAT11(bVar2,local_34[2]);
|
|
|
|
*(uint *)(param_2 + 0x37ac) = uVar7;
|
|
|
|
bVar2 = local_34[3];
|
|
|
|
*(uint *)(param_2 + 0x37a8) = (uint)bVar2 << 8;
|
|
|
|
uVar9 = (uint)CONCAT11(bVar2,local_34[4]);
|
|
|
|
pbVar10 = local_34 + 6;
|
|
|
|
*(uint *)(param_2 + 0x37a8) = uVar9;
|
|
|
|
bVar2 = local_34[5];
|
|
|
|
*(uint *)(param_2 + 0x37c0) = (uint)bVar2;
|
|
|
|
local_34 = pbVar10;
|
|
|
|
if (bVar1 == 8) {
|
|
|
|
if (uVar7 == 0) {
|
|
|
|
iVar4 = -0x10;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iStack_18 = 0;
|
|
|
|
uStack_1c = 0;
|
|
|
|
iVar6 = 0;
|
|
|
|
if (bVar2 != 0) {
|
|
|
|
iVar6 = *(int *)(param_2 + 0x37cc);
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar8 = 0;
|
|
|
|
iStack_24 = 0;
|
|
|
|
do {
|
|
|
|
*(uint *)(iVar5 + iVar6) = (uint)*pbVar10;
|
|
|
|
*(int *)(iVar5 + 4 + *(int *)(param_2 + 0x37cc)) = (int)(uint)pbVar10[1] >> 4;
|
|
|
|
*(uint *)(iVar5 + 8 + *(int *)(param_2 + 0x37cc)) = pbVar10[1] & 0xf;
|
|
|
|
local_34 = pbVar10 + 3;
|
|
|
|
*(uint *)(iVar5 + 0xc + *(int *)(param_2 + 0x37cc)) = (uint)pbVar10[2];
|
|
|
|
iVar6 = *(int *)(param_2 + 0x37cc);
|
|
|
|
iVar3 = *(int *)(iVar5 + 4 + iVar6);
|
|
|
|
if (iStack_24 < iVar3) {
|
|
|
|
iStack_24 = iVar3;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(iVar5 + 8 + iVar6);
|
|
|
|
if (iStack_18 < iVar3) {
|
|
|
|
iStack_18 = iVar3;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
pbVar10 = local_34;
|
|
|
|
} while (iVar8 < *(int *)(param_2 + 0x37c0));
|
|
|
|
uVar7 = *(uint *)(param_2 + 0x37ac);
|
|
|
|
uVar9 = *(uint *)(param_2 + 0x37a8);
|
|
|
|
uStack_20 = 0;
|
|
|
|
iVar6 = iStack_24;
|
|
|
|
}
|
|
|
|
iVar6 = (int)((uVar9 - 1) + iVar6 * 8) / (iVar6 << 3);
|
|
|
|
*(int *)(param_2 + 0x37c4) = iVar6;
|
|
|
|
*(int *)(param_2 + 0x37c8) =
|
|
|
|
((int)((uVar7 - 1) + iStack_18 * 8) / (iStack_18 * 8)) * iVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = -0x1d;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((local_2c != 0) && (local_30 != (void *)0x0)) {
|
|
|
|
operator_delete(local_30);
|
|
|
|
}
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641d40 at 0x00641D40 (size: 354) ---
|
|
|
|
|
|
int FUN_00641d40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
int iVar2;
|
|
|
|
char *local_1c;
|
|
|
|
void *local_18;
|
|
|
|
int local_14;
|
|
|
|
int local_10;
|
|
|
|
|
|
|
|
local_1c = (char *)0x0;
|
|
|
|
local_18 = (void *)0x0;
|
|
|
|
local_14 = 0;
|
|
|
|
iVar2 = FUN_00641860(param_1 + 0x37e8,&local_10);
|
|
|
|
pcVar1 = local_1c;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
if (local_10 < 2) {
|
|
|
|
iVar2 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_10 = local_10 + -2;
|
|
|
|
if (0xb < local_10) {
|
|
|
|
iVar2 = FUN_00641680(param_1 + 0x37e8,local_10,&local_18,&local_1c,&local_14);
|
|
|
|
pcVar1 = local_1c;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
pcVar1 = local_1c + 1;
|
|
|
|
if ((((*local_1c == 'A') && (pcVar1 = local_1c + 2, local_1c[1] == 'd')) &&
|
|
|
|
(pcVar1 = local_1c + 3, local_1c[2] == 'o')) &&
|
|
|
|
((pcVar1 = local_1c + 4, local_1c[3] == 'b' &&
|
|
|
|
(pcVar1 = local_1c + 5, local_1c[4] == 'e')))) {
|
|
|
|
*(ushort *)(param_1 + 0x4df0) = CONCAT11(local_1c[5],local_1c[6]);
|
|
|
|
*(ushort *)(param_1 + 0x4df2) = CONCAT11(local_1c[7],local_1c[8]);
|
|
|
|
*(ushort *)(param_1 + 0x4df4) = CONCAT11(local_1c[9],local_1c[10]);
|
|
|
|
*(uint *)(param_1 + 0x482c) = (uint)(byte)local_1c[0xb];
|
|
|
|
*(undefined4 *)(param_1 + 0x4828) = 1;
|
|
|
|
pcVar1 = local_1c + 0xc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_1c = pcVar1;
|
|
|
|
if ((local_14 != 0) && (local_18 != (void *)0x0)) {
|
|
|
|
operator_delete(local_18);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00641eb0 at 0x00641EB0 (size: 1175) ---
|
|
|
|
|
|
undefined4 FUN_00641eb0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
byte bVar2;
|
|
|
|
int iVar3;
|
|
|
|
byte *pbVar4;
|
|
|
|
byte *pbVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
byte *local_34;
|
|
|
|
void *local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
uint local_24;
|
|
|
|
uint local_20;
|
|
|
|
int local_1c;
|
|
|
|
byte local_18;
|
|
|
|
byte local_14;
|
|
|
|
|
|
|
|
local_34 = (byte *)0x0;
|
|
|
|
local_30 = (void *)0x0;
|
|
|
|
local_2c = 0;
|
|
|
|
iVar3 = FUN_00641860(param_1 + 0xdfa,&local_28);
|
|
|
|
pbVar5 = local_34;
|
|
|
|
if ((((iVar3 == 0) && (1 < local_28)) && (local_28 = local_28 + -2, 0xd < local_28)) &&
|
|
|
|
(local_28 < 0x3000f)) {
|
|
|
|
iVar3 = FUN_00641680(param_1 + 0xdfa,local_28,&local_30,&local_34,&local_2c);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
if ((local_2c != 0) && (local_30 != (void *)0x0)) {
|
|
|
|
operator_delete(local_30);
|
|
|
|
}
|
|
|
|
return 0xffffffeb;
|
|
|
|
}
|
|
|
|
pbVar5 = local_34;
|
|
|
|
if (param_1[0xdf7] != 0) {
|
|
|
|
if (((*local_34 == 0x4a) && (local_34[1] == 0x46)) &&
|
|
|
|
((local_34[2] == 0x58 && ((local_34[3] == 0x58 && (local_34[4] == 0)))))) {
|
|
|
|
bVar2 = local_34[5];
|
|
|
|
pbVar5 = local_34 + 5;
|
|
|
|
if (bVar2 == 0x10) goto LAB_00641eff;
|
|
|
|
if (bVar2 == 0x11) {
|
|
|
|
pbVar5 = local_34 + 8;
|
|
|
|
uVar6 = (uint)local_34[6];
|
|
|
|
uVar8 = (uint)local_34[7];
|
|
|
|
if (((*param_1 == 0x14) || (*param_1 == 0x15)) &&
|
|
|
|
((int)(uVar6 * uVar8 + 0x308) <= local_28)) {
|
|
|
|
param_1[0x19] = uVar8;
|
|
|
|
param_1[0x18] = uVar6;
|
|
|
|
local_34 = pbVar5;
|
|
|
|
pbVar4 = (byte *)FUN_005df0f5(0x300);
|
|
|
|
pbVar5 = local_34;
|
|
|
|
if (pbVar4 != (byte *)0x0) {
|
|
|
|
pbVar5 = pbVar4;
|
|
|
|
do {
|
|
|
|
*pbVar5 = *local_34;
|
|
|
|
pbVar5[1] = local_34[1];
|
|
|
|
pbVar1 = local_34 + 3;
|
|
|
|
pbVar5[2] = local_34[2];
|
|
|
|
local_34 = local_34 + 4;
|
|
|
|
pbVar5[3] = *pbVar1;
|
|
|
|
pbVar5 = pbVar5 + 4;
|
|
|
|
} while ((int)pbVar5 < (int)(pbVar4 + 0x300));
|
|
|
|
iVar3 = 0;
|
|
|
|
local_20 = uVar6;
|
|
|
|
if (uVar8 != 0) {
|
|
|
|
uVar6 = uVar6 * 3;
|
|
|
|
do {
|
|
|
|
if (uVar6 != 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
iVar9 = (uint)*local_34 * 3;
|
|
|
|
local_18 = pbVar4[iVar9];
|
|
|
|
local_14 = pbVar4[iVar9 + 1];
|
|
|
|
bVar2 = pbVar4[iVar9 + 2];
|
|
|
|
if (param_1[0xd] == 1) {
|
|
|
|
*(byte *)(iVar7 + param_1[0xf] * iVar3 + param_1[8]) = local_18;
|
|
|
|
*(byte *)(iVar7 + 1 + param_1[0xf] * iVar3 + param_1[8]) = local_14;
|
|
|
|
*(byte *)(iVar7 + 2 + param_1[0xf] * iVar3 + param_1[8]) = bVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(byte *)(iVar7 + param_1[0xf] * iVar3 + param_1[8]) = bVar2;
|
|
|
|
*(byte *)(iVar7 + 1 + param_1[0xf] * iVar3 + param_1[8]) = local_14;
|
|
|
|
*(byte *)(iVar7 + 2 + param_1[0xf] * iVar3 + param_1[8]) = local_18;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 3;
|
|
|
|
local_34 = local_34 + 1;
|
|
|
|
local_20 = uVar6;
|
|
|
|
local_1c = iVar3;
|
|
|
|
} while (iVar7 < (int)uVar6);
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < (int)uVar8);
|
|
|
|
}
|
|
|
|
local_24 = uVar8;
|
|
|
|
operator_delete(pbVar4);
|
|
|
|
pbVar5 = local_34;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
goto LAB_00641eff;
|
|
|
|
}
|
|
|
|
if (bVar2 != 0x13) goto LAB_00641eff;
|
|
|
|
pbVar5 = local_34 + 6;
|
|
|
|
iVar3 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((*local_34 != 0x4a) ||
|
|
|
|
((((local_34[1] != 0x46 || (local_34[2] != 0x49)) || (local_34[3] != 0x46)) ||
|
|
|
|
(local_34[4] != 0)))) goto LAB_00641eff;
|
|
|
|
param_1[0x137e] = 1;
|
|
|
|
*(ushort *)(param_1 + 0x137f) = CONCAT11(local_34[5],local_34[6]);
|
|
|
|
*(byte *)((int)param_1 + 0x4dfe) = local_34[7];
|
|
|
|
pbVar5 = local_34 + 0xc;
|
|
|
|
*(ushort *)(param_1 + 0x1380) = CONCAT11(local_34[8],local_34[9]);
|
|
|
|
iVar3 = 0xe;
|
|
|
|
*(ushort *)((int)param_1 + 0x4e02) = CONCAT11(local_34[10],local_34[0xb]);
|
|
|
|
}
|
|
|
|
uVar8 = (uint)*pbVar5;
|
|
|
|
pbVar4 = pbVar5 + 2;
|
|
|
|
uVar6 = (uint)pbVar5[1];
|
|
|
|
pbVar5 = pbVar4;
|
|
|
|
if ((uVar8 != 0) && (uVar6 != 0)) {
|
|
|
|
if ((*param_1 == 0x14) || (*param_1 == 0x15)) {
|
|
|
|
iVar7 = uVar8 * 3;
|
|
|
|
if (local_28 < (int)(iVar3 + uVar6 * iVar7)) {
|
|
|
|
param_1[0x18] = uVar8;
|
|
|
|
param_1[0x19] = uVar6;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[0x19] = uVar6;
|
|
|
|
param_1[0x18] = uVar8;
|
|
|
|
if (param_1[0xd] == 1) {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (uVar6 != 0) {
|
|
|
|
do {
|
|
|
|
local_34 = pbVar4;
|
|
|
|
(*DAT_008f85a8)(iVar3 * param_1[0xf] + param_1[8],pbVar4,iVar7);
|
|
|
|
pbVar4 = local_34 + iVar7;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
pbVar5 = pbVar4;
|
|
|
|
} while (iVar3 < (int)uVar6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_34 = pbVar4;
|
|
|
|
if (uVar6 != 0) {
|
|
|
|
do {
|
|
|
|
iVar9 = 0;
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
do {
|
|
|
|
*(byte *)(param_1[0xf] * iVar3 + param_1[8] + iVar9) = pbVar4[2];
|
|
|
|
*(byte *)(param_1[0xf] * iVar3 + 1 + param_1[8] + iVar9) = local_34[1];
|
|
|
|
*(byte *)(param_1[0xf] * iVar3 + 2 + param_1[8] + iVar9) = *local_34;
|
|
|
|
pbVar4 = local_34 + 3;
|
|
|
|
iVar9 = iVar9 + 3;
|
|
|
|
local_34 = pbVar4;
|
|
|
|
local_24 = uVar6;
|
|
|
|
} while (iVar9 < iVar7);
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
pbVar5 = local_34;
|
|
|
|
} while (iVar3 < (int)uVar6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[0x18] = uVar8;
|
|
|
|
param_1[0x19] = uVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_00641eff:
|
|
|
|
local_34 = pbVar5;
|
|
|
|
if ((local_2c != 0) && (local_30 != (void *)0x0)) {
|
|
|
|
operator_delete(local_30);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00642350 at 0x00642350 (size: 420) ---
|
|
|
|
|
|
int FUN_00642350(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
undefined1 *local_3c;
|
|
|
|
void *local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
void *local_14;
|
|
|
|
undefined *puStack_10;
|
|
|
|
undefined *puStack_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
puStack_c = &DAT_00908ac4;
|
|
|
|
puStack_10 = &DAT_005df82c;
|
|
|
|
local_14 = ExceptionList;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_3c = (undefined1 *)0x0;
|
|
|
|
local_38 = (void *)0x0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
local_40 = FUN_00641860(param_1 + 0x37e8,&local_44);
|
|
|
|
if (local_40 == 0) {
|
|
|
|
if (local_44 < 2) {
|
|
|
|
local_40 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_44 = local_44 + -2;
|
|
|
|
iVar2 = FUN_00641680(param_1 + 0x37e8,local_44,&local_38,&local_3c,&local_34,&local_44);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
local_40 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x37dc) != 0) && (iVar2 = *(int *)(param_1 + 0x4e04), iVar2 != 0)) {
|
|
|
|
if ((int)(uint)*(ushort *)(param_1 + 0x4e08) < local_44) {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_30 = 0;
|
|
|
|
if (*(ushort *)(param_1 + 0x4e08) != 0) {
|
|
|
|
while( true ) {
|
|
|
|
puVar1 = local_3c + 1;
|
|
|
|
*(undefined1 *)(iVar3 + iVar2) = *local_3c;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
local_3c = puVar1;
|
|
|
|
local_30 = iVar3;
|
|
|
|
if ((int)(uint)*(ushort *)(param_1 + 0x4e08) <= iVar3) break;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x4e04);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(short *)(param_1 + 0x4e08) = (short)local_44;
|
|
|
|
local_40 = -0x1e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_30 = 0;
|
|
|
|
if (0 < local_44) {
|
|
|
|
while( true ) {
|
|
|
|
puVar1 = local_3c + 1;
|
|
|
|
*(undefined1 *)(iVar3 + iVar2) = *local_3c;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
local_3c = puVar1;
|
|
|
|
local_30 = iVar3;
|
|
|
|
if (local_44 <= iVar3) break;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x4e04);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(short *)(param_1 + 0x4e08) = (short)local_44;
|
|
|
|
}
|
|
|
|
local_8 = 0xffffffff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_40 = -0x15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((local_34 != 0) && (local_38 != (void *)0x0)) {
|
|
|
|
operator_delete(local_38);
|
|
|
|
}
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_40;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00642510 at 0x00642510 (size: 969) ---
|
|
|
|
|
|
int FUN_00642510(int param_1,undefined4 param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
byte *local_3c;
|
|
|
|
void *local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
undefined4 *local_24;
|
|
|
|
int local_20;
|
|
|
|
byte *local_1c;
|
|
|
|
uint local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_3c = (byte *)0x0;
|
|
|
|
local_38 = (void *)0x0;
|
|
|
|
local_34 = 0;
|
|
|
|
iVar2 = FUN_00641860(param_2,&local_30);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
if (local_30 < 2) {
|
|
|
|
iVar2 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_30 = local_30 + -2;
|
|
|
|
if (local_30 < 0x205) {
|
|
|
|
iVar2 = FUN_00641680(param_2,local_30,&local_38,&local_3c,&local_34);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_14 = iVar2;
|
|
|
|
while (pbVar1 = local_3c, iVar2 = local_14, iVar5 < local_30) {
|
|
|
|
uVar3 = *local_3c & 0xf;
|
|
|
|
if (4 < uVar3) {
|
|
|
|
iVar2 = -7;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_28 = (int)(uint)*local_3c >> 4;
|
|
|
|
iVar2 = uVar3 * 0xb4;
|
|
|
|
*(int *)(param_1 + iVar2 + 0x94) = local_28;
|
|
|
|
local_1c = local_3c + 1;
|
|
|
|
if (*(int *)(param_1 + 0x84) <= (int)uVar3) {
|
|
|
|
*(uint *)(param_1 + 0x84) = uVar3 + 1;
|
|
|
|
}
|
|
|
|
if (local_28 == 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + iVar6 * 2) = (ushort)local_1c[iVar6];
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + 2 + iVar6 * 2) =
|
|
|
|
(ushort)local_1c[iVar6 + 1];
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + 4 + iVar6 * 2) =
|
|
|
|
(ushort)local_1c[iVar6 + 2];
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + 6 + iVar6 * 2) =
|
|
|
|
(ushort)local_1c[iVar6 + 3];
|
|
|
|
iVar6 = iVar6 + 4;
|
|
|
|
} while (iVar6 < 0x40);
|
|
|
|
local_3c = local_3c + 0x41;
|
|
|
|
iVar6 = iVar5 + 0x41;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + iVar6 * 2) =
|
|
|
|
*(ushort *)(local_1c + iVar6 * 2) >> 8 | *(ushort *)(local_1c + iVar6 * 2) << 8
|
|
|
|
;
|
|
|
|
*(ushort *)(*(int *)(iVar2 + 0x9c + param_1) + 2 + iVar6 * 2) =
|
|
|
|
*(ushort *)(local_3c + iVar6 * 2 + 3) >> 8 |
|
|
|
|
*(ushort *)(local_3c + iVar6 * 2 + 3) << 8;
|
|
|
|
iVar6 = iVar6 + 2;
|
|
|
|
} while (iVar6 < 0x40);
|
|
|
|
local_3c = local_3c + 0x81;
|
|
|
|
iVar6 = iVar5 + 0x81;
|
|
|
|
}
|
|
|
|
local_18 = 0;
|
|
|
|
puVar4 = (undefined4 *)(param_1 + 0x9c + iVar2);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x371c + uVar3 * 8);
|
|
|
|
local_20 = iVar5;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
*(char *)(param_1 + 0x3720 + uVar3 * 8) = (char)uVar3;
|
|
|
|
local_2c = uVar3;
|
|
|
|
local_24 = puVar4;
|
|
|
|
local_20 = iVar6;
|
|
|
|
if (local_28 == 0) {
|
|
|
|
local_28 = 0;
|
|
|
|
while( true ) {
|
|
|
|
*(byte *)(iVar2 + local_28) = local_1c[local_28];
|
|
|
|
*(byte *)(local_28 + 1 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_28 + 2];
|
|
|
|
*(byte *)(local_28 + 2 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_28 + 3];
|
|
|
|
*(byte *)(local_28 + 3 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_28 + 4];
|
|
|
|
local_28 = local_28 + 4;
|
|
|
|
if (0x3f < local_28) break;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x371c + uVar3 * 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_18 = 0;
|
|
|
|
while( true ) {
|
|
|
|
*(byte *)(iVar2 + local_18) = local_1c[local_18];
|
|
|
|
*(byte *)(local_18 + 1 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_18 + 2];
|
|
|
|
*(byte *)(local_18 + 2 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_18 + 3];
|
|
|
|
*(byte *)(local_18 + 3 + *(int *)(param_1 + 0x371c + uVar3 * 8)) =
|
|
|
|
pbVar1[local_18 + 4];
|
|
|
|
local_18 = local_18 + 4;
|
|
|
|
if (0x7f < local_18) break;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x371c + uVar3 * 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar5 = iVar6;
|
|
|
|
if (param_3 == 0) {
|
|
|
|
FUN_0061d7d0(*puVar4);
|
|
|
|
if (*(int *)(param_1 + 0x80) < 4) {
|
|
|
|
*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_3 == 1) {
|
|
|
|
FUN_00621640(*puVar4);
|
|
|
|
if (*(int *)(param_1 + 0x80) < 4) {
|
|
|
|
*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0061d7d0(*puVar4);
|
|
|
|
if (*(int *)(param_1 + 0x80) < 4) {
|
|
|
|
*(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = -0x15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((local_34 != 0) && (local_38 != (void *)0x0)) {
|
|
|
|
operator_delete(local_38);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00642940 at 0x00642940 (size: 1425) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00642ecc) */
|
|
|
|
|
|
|
|
int FUN_00642940(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
byte bVar3;
|
|
|
|
byte bVar4;
|
|
|
|
byte bVar5;
|
|
|
|
byte bVar6;
|
|
|
|
byte bVar7;
|
|
|
|
byte bVar8;
|
|
|
|
byte bVar9;
|
|
|
|
byte bVar10;
|
|
|
|
byte bVar11;
|
|
|
|
byte bVar12;
|
|
|
|
byte bVar13;
|
|
|
|
byte bVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
uint uVar17;
|
|
|
|
int iVar18;
|
|
|
|
uint uVar19;
|
|
|
|
byte *local_3c;
|
|
|
|
void *local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
uint local_24;
|
|
|
|
uint local_20;
|
|
|
|
int local_1c;
|
|
|
|
int *local_18;
|
|
|
|
|
|
|
|
local_3c = (byte *)0x0;
|
|
|
|
local_38 = (void *)0x0;
|
|
|
|
local_34 = 0;
|
|
|
|
iVar15 = FUN_00641860(param_2,&local_30);
|
|
|
|
if (iVar15 == 0) {
|
|
|
|
if (local_30 < 2) {
|
|
|
|
iVar15 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_30 = local_30 + -2;
|
|
|
|
if (local_30 < 0x444) {
|
|
|
|
iVar15 = FUN_00641680(param_2,local_30,&local_38,&local_3c,&local_34);
|
|
|
|
if (iVar15 == 0) {
|
|
|
|
for (; 0 < local_30; local_30 = (local_30 - iVar18) + -0x11) {
|
|
|
|
uVar17 = (int)(*local_3c & 0xf0) >> 4;
|
|
|
|
uVar16 = *local_3c & 0xf;
|
|
|
|
if (1 < uVar17) {
|
|
|
|
iVar15 = -6;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (3 < uVar16) {
|
|
|
|
iVar15 = -6;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x90) <= (int)uVar16) {
|
|
|
|
*(uint *)(param_1 + 0x90) = uVar16 + 1;
|
|
|
|
}
|
|
|
|
if ((*(int *)(uVar16 * 0xc + 0x373c + param_1) != 0) &&
|
|
|
|
(*(int *)(uVar16 * 0xc + 0x3740 + param_1) != 0)) {
|
|
|
|
local_2c = (uVar17 + uVar16 * 2) * 0xc;
|
|
|
|
iVar15 = param_1 + local_2c;
|
|
|
|
*(char *)(iVar15 + 0x3744) = (char)uVar17;
|
|
|
|
*(char *)(iVar15 + 0x3745) = (char)uVar16;
|
|
|
|
**(byte **)(iVar15 + 0x373c) = local_3c[1];
|
|
|
|
bVar1 = local_3c[1];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 1) = local_3c[2];
|
|
|
|
bVar2 = local_3c[2];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 2) = local_3c[3];
|
|
|
|
bVar3 = local_3c[3];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 3) = local_3c[4];
|
|
|
|
bVar4 = local_3c[4];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 4) = local_3c[5];
|
|
|
|
bVar5 = local_3c[5];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 5) = local_3c[6];
|
|
|
|
bVar6 = local_3c[6];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 6) = local_3c[7];
|
|
|
|
bVar7 = local_3c[7];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 7) = local_3c[8];
|
|
|
|
bVar8 = local_3c[8];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 8) = local_3c[9];
|
|
|
|
bVar9 = local_3c[9];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 9) = local_3c[10];
|
|
|
|
bVar10 = local_3c[10];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 10) = local_3c[0xb];
|
|
|
|
bVar11 = local_3c[0xb];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 0xb) = local_3c[0xc];
|
|
|
|
bVar12 = local_3c[0xc];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 0xc) = local_3c[0xd];
|
|
|
|
bVar13 = local_3c[0xd];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 0xd) = local_3c[0xe];
|
|
|
|
bVar14 = local_3c[0xe];
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 0xe) = local_3c[0xf];
|
|
|
|
iVar18 = (uint)local_3c[0xf] +
|
|
|
|
(uint)bVar14 +
|
|
|
|
(uint)bVar13 +
|
|
|
|
(uint)bVar12 +
|
|
|
|
(uint)bVar11 +
|
|
|
|
(uint)bVar10 +
|
|
|
|
(uint)bVar9 +
|
|
|
|
(uint)bVar8 +
|
|
|
|
(uint)bVar7 +
|
|
|
|
(uint)bVar6 +
|
|
|
|
(uint)bVar5 + (uint)bVar4 + (uint)bVar3 + (uint)bVar2 + (uint)bVar1;
|
|
|
|
*(byte *)(*(int *)(iVar15 + 0x373c) + 0xf) = local_3c[0x10];
|
|
|
|
uVar19 = (uint)local_3c[0x10];
|
|
|
|
local_1c = uVar19 + iVar18;
|
|
|
|
local_28 = 0;
|
|
|
|
if (local_1c != 0) {
|
|
|
|
if (5 < uVar19 + iVar18) {
|
|
|
|
local_28 = 0;
|
|
|
|
do {
|
|
|
|
*(byte *)(local_28 + *(int *)(local_2c + 0x3740 + param_1)) =
|
|
|
|
local_3c[local_28 + 0x11];
|
|
|
|
*(byte *)(local_28 + 1 + *(int *)(local_2c + 0x3740 + param_1)) =
|
|
|
|
local_3c[local_28 + 0x12];
|
|
|
|
*(byte *)(local_28 + 2 + *(int *)(local_2c + 0x3740 + param_1)) =
|
|
|
|
local_3c[local_28 + 0x13];
|
|
|
|
*(byte *)(local_28 + 3 + *(int *)(local_2c + 0x3740 + param_1)) =
|
|
|
|
local_3c[local_28 + 0x14];
|
|
|
|
*(byte *)(local_28 + 4 + *(int *)(local_2c + 0x3740 + param_1)) =
|
|
|
|
local_3c[local_28 + 0x15];
|
|
|
|
local_28 = local_28 + 5;
|
|
|
|
local_24 = uVar17;
|
|
|
|
local_20 = uVar16;
|
|
|
|
} while (local_28 <= (int)((uVar19 - 6) + iVar18));
|
|
|
|
}
|
|
|
|
local_18 = (int *)(param_1 + 0x3740 + local_2c);
|
|
|
|
iVar15 = local_28;
|
|
|
|
do {
|
|
|
|
*(byte *)(iVar15 + *local_18) = local_3c[iVar15 + 0x11];
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < local_1c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (uVar17 == 0) {
|
|
|
|
iVar15 = FUN_0061a690(local_3c + 1,local_3c + 0x11,0,uVar16,
|
|
|
|
param_1 + 0x1d24 + uVar16 * 0x670);
|
|
|
|
if (iVar15 != 0) {
|
|
|
|
iVar15 = -6;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x8c) < 4) {
|
|
|
|
*(int *)(param_1 + 0x8c) = *(int *)(param_1 + 0x8c) + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = FUN_0061a690(local_3c + 1,local_3c + 0x11,uVar17,uVar16,
|
|
|
|
param_1 + 0x364 + uVar16 * 0x670);
|
|
|
|
if (iVar15 != 0) {
|
|
|
|
iVar15 = -6;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x88) < 4) {
|
|
|
|
*(int *)(param_1 + 0x88) = *(int *)(param_1 + 0x88) + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar18 = (uint)local_3c[0x10] +
|
|
|
|
(uint)local_3c[0xf] +
|
|
|
|
(uint)local_3c[0xe] +
|
|
|
|
(uint)local_3c[0xd] +
|
|
|
|
(uint)local_3c[0xc] +
|
|
|
|
(uint)local_3c[0xb] +
|
|
|
|
(uint)local_3c[10] +
|
|
|
|
(uint)local_3c[9] +
|
|
|
|
(uint)local_3c[8] +
|
|
|
|
(uint)local_3c[7] +
|
|
|
|
(uint)local_3c[6] +
|
|
|
|
(uint)local_3c[5] +
|
|
|
|
(uint)local_3c[4] + (uint)local_3c[3] + (uint)local_3c[2] + (uint)local_3c[1];
|
|
|
|
local_3c = local_3c + iVar18 + 0x11;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = -0x15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((local_34 != 0) && (local_38 != (void *)0x0)) {
|
|
|
|
operator_delete(local_38);
|
|
|
|
}
|
|
|
|
return iVar15;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00642ef0 at 0x00642EF0 (size: 801) ---
|
|
|
|
|
|
int FUN_00642ef0(int param_1,int param_2,int param_3,uint *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
byte *local_74;
|
|
|
|
void *local_70;
|
|
|
|
int local_6c;
|
|
|
|
int local_68;
|
|
|
|
int *local_64;
|
|
|
|
int *local_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
int *local_54;
|
|
|
|
uint local_50;
|
|
|
|
uint local_4c;
|
|
|
|
uint local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_34;
|
|
|
|
void *local_14;
|
|
|
|
undefined *puStack_10;
|
|
|
|
undefined *puStack_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
puStack_c = &DAT_00908adc;
|
|
|
|
puStack_10 = &DAT_005df82c;
|
|
|
|
local_14 = ExceptionList;
|
|
|
|
local_74 = (byte *)0x0;
|
|
|
|
local_70 = (void *)0x0;
|
|
|
|
local_6c = 0;
|
|
|
|
local_68 = 0;
|
|
|
|
local_64 = (int *)0x0;
|
|
|
|
local_60 = *(int **)(param_2 + 8);
|
|
|
|
local_8 = 0;
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
local_68 = FUN_00641860(param_2,&local_5c);
|
|
|
|
if (local_68 == 0) {
|
|
|
|
if (local_5c < 2) {
|
|
|
|
local_68 = -0x15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*local_60 = local_5c + 2;
|
|
|
|
local_5c = local_5c + -2;
|
|
|
|
local_68 = FUN_00641680(param_2,local_5c,&local_70,&local_74,&local_6c,&local_74);
|
|
|
|
if (local_68 == 0) {
|
|
|
|
*param_4 = (uint)*local_74;
|
|
|
|
local_74 = local_74 + 1;
|
|
|
|
uVar4 = FUN_005df0f5(*param_4 * 0x18,&local_74);
|
|
|
|
param_4[0xd] = uVar4;
|
|
|
|
piVar2 = (int *)param_4[0xd];
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
local_68 = -5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_34 = 0;
|
|
|
|
local_58 = 0;
|
|
|
|
local_64 = piVar2;
|
|
|
|
if (0 < (int)*param_4) {
|
|
|
|
do {
|
|
|
|
local_50 = (uint)*local_74;
|
|
|
|
local_4c = (int)(uint)local_74[1] >> 4;
|
|
|
|
pbVar1 = local_74 + 2;
|
|
|
|
local_48 = local_74[1] & 0xf;
|
|
|
|
local_74 = pbVar1;
|
|
|
|
local_58 = local_34;
|
|
|
|
local_54 = piVar2;
|
|
|
|
if ((4 < local_4c) || (4 < local_48)) {
|
|
|
|
local_68 = -0x15;
|
|
|
|
operator_delete((void *)param_4[0xd]);
|
|
|
|
param_4[0xd] = 0;
|
|
|
|
goto LAB_00642f60;
|
|
|
|
}
|
|
|
|
local_44 = 0;
|
|
|
|
iVar3 = *(int *)(param_3 + 0x1c);
|
|
|
|
if (0 < iVar3) {
|
|
|
|
do {
|
|
|
|
if (local_50 == *(uint *)(local_44 * 0x10 + *(int *)(param_3 + 0x28))) break;
|
|
|
|
local_44 = local_44 + 1;
|
|
|
|
} while (local_44 < iVar3);
|
|
|
|
}
|
|
|
|
if (iVar3 <= local_44) {
|
|
|
|
LAB_006431e6:
|
|
|
|
local_68 = -0x15;
|
|
|
|
operator_delete((void *)param_4[0xd]);
|
|
|
|
param_4[0xd] = 0;
|
|
|
|
goto LAB_00642f60;
|
|
|
|
}
|
|
|
|
iVar5 = local_44 * 0x10;
|
|
|
|
iVar3 = *(int *)(iVar5 + 0xc + *(int *)(param_3 + 0x28));
|
|
|
|
if ((iVar3 < 0) || (4 < iVar3)) goto LAB_006431e6;
|
|
|
|
*local_64 = local_44;
|
|
|
|
local_64[1] = *(int *)(iVar5 + 4 + *(int *)(param_3 + 0x28));
|
|
|
|
local_64[2] = *(int *)(iVar5 + 8 + *(int *)(param_3 + 0x28));
|
|
|
|
local_64[3] = local_4c * 0x670 + 0x1d24 + param_1;
|
|
|
|
local_64[4] = local_48 * 0x670 + 0x364 + param_1;
|
|
|
|
local_64[5] = *(int *)(iVar5 + 0xc + *(int *)(param_3 + 0x28)) * 0xb4 + 0x94 + param_1
|
|
|
|
;
|
|
|
|
*(char *)(local_34 + 0x37a0 + param_1) = (char)local_4c;
|
|
|
|
*(char *)(param_1 + 0x379c + local_34) = (char)local_48;
|
|
|
|
local_58 = local_34 + 1;
|
|
|
|
local_64 = local_64 + 6;
|
|
|
|
local_34 = local_58;
|
|
|
|
} while (local_58 < (int)*param_4);
|
|
|
|
}
|
|
|
|
param_4[2] = (uint)*local_74;
|
|
|
|
param_4[3] = (uint)local_74[1];
|
|
|
|
param_4[4] = (int)(uint)local_74[2] >> 4;
|
|
|
|
param_4[5] = local_74[2] & 0xf;
|
|
|
|
local_8 = 0xffffffff;
|
|
|
|
local_74 = local_74 + 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_00642f60:
|
|
|
|
if ((local_6c != 0) && (local_70 != (void *)0x0)) {
|
|
|
|
operator_delete(local_70);
|
|
|
|
}
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_68;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00643250 at 0x00643250 (size: 5196) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_00643250(int param_1,int param_2,int *param_3,int param_4,int param_5,int param_6,int param_7,
|
|
|
|
int param_8,int param_9,int param_10,char param_11)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined2 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined2 *puVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
uint uVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
int iVar17;
|
|
|
|
undefined2 *puVar18;
|
|
|
|
undefined2 *puVar19;
|
|
|
|
undefined4 *puVar20;
|
|
|
|
undefined2 *puStack_50;
|
|
|
|
undefined2 *puStack_48;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_20;
|
|
|
|
|
|
|
|
local_28 = param_7;
|
|
|
|
iVar8 = *(int *)(param_2 + 8);
|
|
|
|
if (param_10 == 1) {
|
|
|
|
iVar9 = 8;
|
|
|
|
}
|
|
|
|
else if (param_10 == 2) {
|
|
|
|
iVar9 = 4;
|
|
|
|
}
|
|
|
|
else if (param_10 == 4) {
|
|
|
|
iVar9 = 2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 1;
|
|
|
|
}
|
|
|
|
local_20 = param_6 << 6;
|
|
|
|
if ((param_4 != param_8) && (param_5 != param_9)) {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x4de0);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
local_2c = *param_3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_2c = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
if (param_10 == 1) {
|
|
|
|
if (0 < param_6) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar8 + 0x48))(param_7);
|
|
|
|
param_7 = param_7 + 0x80;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < param_6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_10 == 2) {
|
|
|
|
if (param_11 == '\0') {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < param_6) {
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar8 + 0x4c))(param_7);
|
|
|
|
param_7 = param_7 + 0x80;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < param_6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (0 < local_2c) {
|
|
|
|
iVar12 = 0;
|
|
|
|
iVar15 = 0;
|
|
|
|
while( true ) {
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = *(int *)(iVar12 * 0x18 + 4 + param_3[0xd]) *
|
|
|
|
*(int *)(iVar12 * 0x18 + 8 + param_3[0xd]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(iVar12 * 0x10 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar12 * 0x10 + 8 + *(int *)(param_1 + 0x37cc));
|
|
|
|
}
|
|
|
|
if (iVar3 == 1) {
|
|
|
|
iVar11 = iVar15 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x48))(param_7 + iVar15 * 0x80);
|
|
|
|
local_20 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = iVar3 + -1;
|
|
|
|
iVar11 = iVar15;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
do {
|
|
|
|
iVar11 = iVar15 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x4c))(param_7 + iVar15 * 0x80);
|
|
|
|
local_20 = local_20 + -1;
|
|
|
|
iVar15 = iVar11;
|
|
|
|
} while (local_20 != -1);
|
|
|
|
local_20 = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
if (local_2c <= iVar12) break;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x4de0);
|
|
|
|
iVar15 = iVar11;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_10 == 4) {
|
|
|
|
if (param_11 == '\0') {
|
|
|
|
if (0 < param_6) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar8 + 0x50))(param_7);
|
|
|
|
param_7 = param_7 + 0x80;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < param_6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (0 < local_2c) {
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar12 = 0;
|
|
|
|
while( true ) {
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = *(int *)(iVar15 * 0x18 + 4 + param_3[0xd]) *
|
|
|
|
*(int *)(iVar15 * 0x18 + 8 + param_3[0xd]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(iVar15 * 0x10 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar15 * 0x10 + 8 + *(int *)(param_1 + 0x37cc));
|
|
|
|
}
|
|
|
|
if (iVar3 == 1) {
|
|
|
|
iVar11 = iVar12 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x4c))(param_7 + iVar12 * 0x80);
|
|
|
|
local_20 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = iVar3 + -1;
|
|
|
|
iVar11 = iVar12;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
do {
|
|
|
|
iVar11 = iVar12 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x50))(param_7 + iVar12 * 0x80);
|
|
|
|
local_20 = local_20 + -1;
|
|
|
|
iVar12 = iVar11;
|
|
|
|
} while (local_20 != -1);
|
|
|
|
local_20 = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
if (local_2c <= iVar15) break;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x4de0);
|
|
|
|
iVar12 = iVar11;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_10 == 8) {
|
|
|
|
if (param_11 == '\0') {
|
|
|
|
if (0 < param_6) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar8 + 0x54))(param_7);
|
|
|
|
param_7 = param_7 + 0x80;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < param_6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (0 < local_2c) {
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar12 = 0;
|
|
|
|
while( true ) {
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = *(int *)(iVar15 * 0x18 + 4 + param_3[0xd]) *
|
|
|
|
*(int *)(iVar15 * 0x18 + 8 + param_3[0xd]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(iVar15 * 0x10 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar15 * 0x10 + 8 + *(int *)(param_1 + 0x37cc));
|
|
|
|
}
|
|
|
|
if (iVar3 == 1) {
|
|
|
|
iVar11 = iVar12 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x50))(param_7 + iVar12 * 0x80);
|
|
|
|
local_20 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = iVar3 + -1;
|
|
|
|
iVar11 = iVar12;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
do {
|
|
|
|
iVar11 = iVar12 + 1;
|
|
|
|
(**(code **)(iVar8 + 0x54))(param_7 + iVar12 * 0x80);
|
|
|
|
local_20 = local_20 + -1;
|
|
|
|
iVar12 = iVar11;
|
|
|
|
} while (local_20 != -1);
|
|
|
|
local_20 = -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
if (local_2c <= iVar15) break;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x4de0);
|
|
|
|
iVar12 = iVar11;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x4ddc) != 0) {
|
|
|
|
iVar8 = *(int *)(param_1 + 0x37c0);
|
|
|
|
if (iVar8 < 1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar9 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
iVar12 = 0;
|
|
|
|
iVar11 = iVar3 * 0x10;
|
|
|
|
iVar15 = *(int *)(iVar11 + 8 + iVar9);
|
|
|
|
if (0 < iVar15) {
|
|
|
|
iVar8 = *(int *)(iVar11 + 4 + iVar9);
|
|
|
|
do {
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < iVar8) {
|
|
|
|
while( true ) {
|
|
|
|
iVar13 = iVar8 * param_4 * 0x10 +
|
|
|
|
*(int *)(*(int *)(param_1 + 0x4ddc) + 4 + iVar3 * 4) +
|
|
|
|
(iVar15 * param_5 + iVar12) * iVar8 * param_8 * 0x80 + iVar6 * 0x10;
|
|
|
|
iVar15 = 0;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar13,local_28,0x10);
|
|
|
|
iVar9 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar8 = *(int *)(iVar11 + 4 + iVar9);
|
|
|
|
iVar13 = iVar13 + param_8 * 0x10 * iVar8;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < 8);
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
if (iVar8 <= iVar6) break;
|
|
|
|
iVar15 = *(int *)(iVar11 + 8 + iVar9);
|
|
|
|
}
|
|
|
|
iVar15 = *(int *)(iVar11 + 8 + iVar9);
|
|
|
|
}
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
} while (iVar12 < iVar15);
|
|
|
|
iVar8 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar8);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x37b8);
|
|
|
|
if ((iVar3 == 2) && (*(int *)(param_1 + 0x37bc) == 1)) {
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
if (param_4 != param_8) {
|
|
|
|
if (param_4 == param_8 + -1) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0x4c) & 0xf;
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
puStack_48 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = (int)((uVar4 - 1) + param_10 * 2) / (param_10 * 2);
|
|
|
|
puStack_48 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
if (*(int *)(param_1 + 0x74) == 0) {
|
|
|
|
iVar12 = *(int *)(param_1 + 0x54);
|
|
|
|
if (0 < iVar12) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar13 = 0;
|
|
|
|
iVar11 = 0;
|
|
|
|
do {
|
|
|
|
iVar16 = *(int *)(iVar13 + 4 + iVar6);
|
|
|
|
if (iVar16 == 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
puVar18 = puStack_48;
|
|
|
|
do {
|
|
|
|
if (iVar15 < 8) {
|
|
|
|
iVar6 = iVar15;
|
|
|
|
if (5 < 8 - iVar15) {
|
|
|
|
do {
|
|
|
|
uVar1 = puVar18[iVar6 + -1];
|
|
|
|
puVar18[iVar6] = uVar1;
|
|
|
|
puVar18[iVar6 + 1] = uVar1;
|
|
|
|
puVar18[iVar6 + 2] = uVar1;
|
|
|
|
puVar18[iVar6 + 3] = uVar1;
|
|
|
|
puVar18[iVar6 + 4] = uVar1;
|
|
|
|
iVar6 = iVar6 + 5;
|
|
|
|
} while (iVar6 < 2);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
puVar18[iVar6] = puVar18[iVar6 + -1];
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < 8);
|
|
|
|
}
|
|
|
|
puVar18 = puVar18 + 8;
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
} while (iVar12 < 8);
|
|
|
|
iVar12 = *(int *)(param_1 + 0x54);
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar16 = *(int *)(iVar13 + 4 + iVar6);
|
|
|
|
}
|
|
|
|
puStack_48 = puStack_48 + iVar16 * 0x40;
|
|
|
|
iVar13 = iVar13 + 0x10;
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < iVar12);
|
|
|
|
puStack_48 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_3[0xd] + 4) == 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
do {
|
|
|
|
if (iVar15 < 8) {
|
|
|
|
iVar11 = iVar15;
|
|
|
|
if (5 < 8 - iVar15) {
|
|
|
|
do {
|
|
|
|
uVar1 = puStack_48[iVar11 + -1];
|
|
|
|
puStack_48[iVar11] = uVar1;
|
|
|
|
puStack_48[iVar11 + 1] = uVar1;
|
|
|
|
puStack_48[iVar11 + 2] = uVar1;
|
|
|
|
puStack_48[iVar11 + 3] = uVar1;
|
|
|
|
puStack_48[iVar11 + 4] = uVar1;
|
|
|
|
iVar11 = iVar11 + 5;
|
|
|
|
} while (iVar11 < 2);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
puStack_48[iVar11] = puStack_48[iVar11 + -1];
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < 8);
|
|
|
|
}
|
|
|
|
puStack_48 = puStack_48 + 8;
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
} while (iVar12 < 8);
|
|
|
|
puStack_48 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puStack_48 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
puVar18 = (undefined2 *)
|
|
|
|
(param_4 * 2 * local_20 + *(int *)(*(int *)(param_1 + 0x4dec) + 4) + local_20 * 2)
|
|
|
|
;
|
|
|
|
iVar15 = local_20 + -1;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puStack_48;
|
|
|
|
iVar15 = iVar15 + -1;
|
|
|
|
puStack_48 = puStack_48 + 1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
} while (iVar15 != -1);
|
|
|
|
}
|
|
|
|
if (param_4 == 0) {
|
|
|
|
puVar18 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 4) + -2 + iVar9 * 2);
|
|
|
|
puVar19 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
iVar15 = param_6 + -1;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
iVar12 = 7;
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
puVar19 = puVar19 + 8;
|
|
|
|
iVar12 = iVar12 + -1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 8;
|
|
|
|
} while (iVar12 != -1);
|
|
|
|
iVar15 = iVar15 + -1;
|
|
|
|
} while (iVar15 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_4 <= iVar3 / (iVar9 * 2)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
puVar19 = (undefined2 *)(param_4 * 2 * local_20 + *(int *)(*(int *)(param_1 + 0x4dec) + 4));
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
iVar3 = local_20 + -1;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
puVar19 = puVar19 + 1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
} while (iVar3 != -1);
|
|
|
|
}
|
|
|
|
param_4 = param_4 + -1;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x37b8);
|
|
|
|
}
|
|
|
|
if ((iVar3 == 2) && (*(int *)(param_1 + 0x37bc) == 2)) {
|
|
|
|
if (param_10 != 1) goto LAB_0064381c;
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
iVar15 = *(int *)(param_1 + 8);
|
|
|
|
puVar20 = *(undefined4 **)(param_1 + 0x4dec);
|
|
|
|
if (param_5 != puVar20[4]) {
|
|
|
|
uVar2 = *puVar20;
|
|
|
|
*puVar20 = puVar20[1];
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 8);
|
|
|
|
if (param_5 == param_9) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 8) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 0xc);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 0xc) = uVar2;
|
|
|
|
puVar20 = *(undefined4 **)(param_1 + 0x4dec);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x4dec) + 8) = uVar2;
|
|
|
|
puVar20 = *(undefined4 **)(param_1 + 0x4dec);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar20[4] = param_5;
|
|
|
|
if ((param_4 != param_8) && (param_5 != param_9)) {
|
|
|
|
iVar12 = param_8 + -1;
|
|
|
|
if (param_4 == iVar12) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0x4c) & 0xf;
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = (uVar4 + 1) / 2;
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
if (*(int *)(param_1 + 0x74) == 0) {
|
|
|
|
local_2c = *(int *)(param_1 + 0x54);
|
|
|
|
if (0 < local_2c) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar13 = 0;
|
|
|
|
iVar11 = 0;
|
|
|
|
do {
|
|
|
|
iVar16 = iVar6 + iVar13;
|
|
|
|
iVar10 = *(int *)(iVar16 + 4);
|
|
|
|
if (iVar10 == 1) {
|
|
|
|
iVar6 = 0;
|
|
|
|
puVar18 = puStack_50;
|
|
|
|
do {
|
|
|
|
if (uVar4 < 8) {
|
|
|
|
uVar14 = uVar4;
|
|
|
|
if (5 < (int)(8 - uVar4)) {
|
|
|
|
do {
|
|
|
|
uVar1 = puVar18[uVar14 - 1];
|
|
|
|
puVar18[uVar14] = uVar1;
|
|
|
|
puVar18[uVar14 + 1] = uVar1;
|
|
|
|
puVar18[uVar14 + 2] = uVar1;
|
|
|
|
puVar18[uVar14 + 3] = uVar1;
|
|
|
|
puVar18[uVar14 + 4] = uVar1;
|
|
|
|
uVar14 = uVar14 + 5;
|
|
|
|
} while ((int)uVar14 < 2);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
puVar18[uVar14] = puVar18[uVar14 - 1];
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
} while ((int)uVar14 < 8);
|
|
|
|
}
|
|
|
|
puVar18 = puVar18 + 8;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < 8);
|
|
|
|
local_2c = *(int *)(param_1 + 0x54);
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar16 = iVar6 + iVar13;
|
|
|
|
iVar10 = *(int *)(iVar16 + 4);
|
|
|
|
}
|
|
|
|
iVar13 = iVar13 + 0x10;
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
puStack_50 = (undefined2 *)
|
|
|
|
((int)puStack_50 + iVar10 * 0x80 * *(int *)(iVar16 + 8));
|
|
|
|
} while (iVar11 < local_2c);
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_3[0xd] + 4) == 1) {
|
|
|
|
iVar11 = 0;
|
|
|
|
do {
|
|
|
|
if (uVar4 < 8) {
|
|
|
|
uVar14 = uVar4;
|
|
|
|
if (5 < (int)(8 - uVar4)) {
|
|
|
|
do {
|
|
|
|
uVar1 = puStack_50[uVar14 - 1];
|
|
|
|
puStack_50[uVar14] = uVar1;
|
|
|
|
puStack_50[uVar14 + 1] = uVar1;
|
|
|
|
puStack_50[uVar14 + 2] = uVar1;
|
|
|
|
puStack_50[uVar14 + 3] = uVar1;
|
|
|
|
puStack_50[uVar14 + 4] = uVar1;
|
|
|
|
uVar14 = uVar14 + 5;
|
|
|
|
} while ((int)uVar14 < 2);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
puStack_50[uVar14] = puStack_50[uVar14 - 1];
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
} while ((int)uVar14 < 8);
|
|
|
|
}
|
|
|
|
puStack_50 = puStack_50 + 8;
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < 8);
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
if ((param_5 == param_9 + -1) && (uVar4 = *(uint *)(param_1 + 0x50) & 0xf, uVar4 != 0)) {
|
|
|
|
uVar4 = (uVar4 + 1) / 2;
|
|
|
|
iVar11 = *(int *)(param_1 + 0x54);
|
|
|
|
if (0 < iVar11) {
|
|
|
|
iVar13 = *(int *)(param_1 + 0x37cc);
|
|
|
|
uVar14 = uVar4 * 8;
|
|
|
|
iVar16 = 0;
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
iVar10 = iVar13 + iVar16;
|
|
|
|
iVar17 = *(int *)(iVar10 + 8);
|
|
|
|
if (iVar17 == 1) {
|
|
|
|
iVar11 = 0;
|
|
|
|
puVar18 = puStack_50;
|
|
|
|
do {
|
|
|
|
if (uVar14 < 0x40) {
|
|
|
|
uVar5 = uVar14;
|
|
|
|
if (0x2f < (int)(uVar4 * -8 + 0x40)) {
|
|
|
|
do {
|
|
|
|
uVar1 = puVar18[uVar5 - 8];
|
|
|
|
puVar18[uVar5] = uVar1;
|
|
|
|
puVar18[uVar5 + 8] = uVar1;
|
|
|
|
puVar18[uVar5 + 0x10] = uVar1;
|
|
|
|
puVar18[uVar5 + 0x18] = uVar1;
|
|
|
|
puVar18[uVar5 + 0x20] = uVar1;
|
|
|
|
uVar5 = uVar5 + 0x28;
|
|
|
|
} while ((int)uVar5 < 0x10);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
puVar18[uVar5] = puVar18[uVar5 - 8];
|
|
|
|
uVar5 = uVar5 + 8;
|
|
|
|
} while ((int)uVar5 < 0x40);
|
|
|
|
}
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < 8);
|
|
|
|
iVar11 = *(int *)(param_1 + 0x54);
|
|
|
|
iVar13 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar10 = iVar13 + iVar16;
|
|
|
|
iVar17 = *(int *)(iVar10 + 8);
|
|
|
|
}
|
|
|
|
puStack_50 = (undefined2 *)((int)puStack_50 + iVar17 * *(int *)(iVar10 + 4) * 0x80);
|
|
|
|
iVar16 = iVar16 + 0x10;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar11);
|
|
|
|
puStack_50 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar13 = local_20 * 2 * param_4;
|
|
|
|
iVar6 = local_20 * 2;
|
|
|
|
puVar18 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 8) + local_20 * 2 + iVar13);
|
|
|
|
iVar11 = local_20 + -1;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puStack_50;
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
puStack_50 = puStack_50 + 1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
if (param_4 == 0) {
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 8) + 0xe);
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
iVar11 = param_6 + -1;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
iVar16 = 7;
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar18;
|
|
|
|
puVar18 = puVar18 + 8;
|
|
|
|
iVar16 = iVar16 + -1;
|
|
|
|
*puVar19 = uVar1;
|
|
|
|
puVar19 = puVar19 + 8;
|
|
|
|
} while (iVar16 != -1);
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_4 == iVar12) {
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(param_1 + 0x4834) + 0xe);
|
|
|
|
puVar18 = (undefined2 *)
|
|
|
|
(param_8 * 2 * local_20 + *(int *)(*(int *)(param_1 + 0x4dec) + 8) + iVar6);
|
|
|
|
iVar11 = param_6 + -1;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
iVar16 = 7;
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
puVar19 = puVar19 + 8;
|
|
|
|
iVar16 = iVar16 + -1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 8;
|
|
|
|
} while (iVar16 != -1);
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_5 == 0) {
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 4) + iVar6 + iVar13);
|
|
|
|
iVar11 = param_6 + -1;
|
|
|
|
iVar16 = iVar11;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
puVar19 = puVar19 + 0x38;
|
|
|
|
iVar10 = 7;
|
|
|
|
do {
|
|
|
|
puVar7 = puVar18;
|
|
|
|
iVar10 = iVar10 + -1;
|
|
|
|
*puVar19 = *puVar7;
|
|
|
|
puVar19 = puVar19 + 1;
|
|
|
|
puVar18 = puVar7 + 1;
|
|
|
|
} while (iVar10 != -1);
|
|
|
|
puVar18 = puVar7 + 0x39;
|
|
|
|
iVar16 = iVar16 + -1;
|
|
|
|
} while (iVar16 != -1);
|
|
|
|
}
|
|
|
|
if (param_4 == 0) {
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 4) + 0x7e);
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
iVar16 = iVar11;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar18;
|
|
|
|
puVar18 = puVar18 + 0x40;
|
|
|
|
iVar16 = iVar16 + -1;
|
|
|
|
*puVar19 = uVar1;
|
|
|
|
puVar19 = puVar19 + 0x40;
|
|
|
|
} while (iVar16 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_4 == iVar12) {
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(param_1 + 0x4834) + 0xe);
|
|
|
|
puVar18 = (undefined2 *)
|
|
|
|
(param_8 * 2 * local_20 + *(int *)(*(int *)(param_1 + 0x4dec) + 4) + 0x70 +
|
|
|
|
iVar6);
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
puVar19 = puVar19 + 0x40;
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 0x40;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_5 == param_9 + -1) {
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 0xc) + iVar6 + iVar13);
|
|
|
|
iVar11 = param_6 + -1;
|
|
|
|
iVar13 = iVar11;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
puVar18 = puVar18 + 0x38;
|
|
|
|
iVar16 = 7;
|
|
|
|
do {
|
|
|
|
puVar7 = puVar19;
|
|
|
|
uVar1 = *puVar18;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
iVar16 = iVar16 + -1;
|
|
|
|
*puVar7 = uVar1;
|
|
|
|
puVar19 = puVar7 + 1;
|
|
|
|
} while (iVar16 != -1);
|
|
|
|
puVar19 = puVar7 + 0x39;
|
|
|
|
iVar13 = iVar13 + -1;
|
|
|
|
} while (iVar13 != -1);
|
|
|
|
}
|
|
|
|
if (param_4 == 0) {
|
|
|
|
puVar18 = (undefined2 *)(*(int *)(*(int *)(param_1 + 0x4dec) + 0xc) + 0xe);
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(param_1 + 0x4834) + 0x70);
|
|
|
|
iVar13 = iVar11;
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
puVar19 = puVar19 + 0x40;
|
|
|
|
iVar13 = iVar13 + -1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 0x40;
|
|
|
|
} while (iVar13 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_4 == iVar12) {
|
|
|
|
puVar19 = (undefined2 *)(*(int *)(param_1 + 0x4834) + 0x7e);
|
|
|
|
puVar18 = (undefined2 *)
|
|
|
|
(param_8 * 2 * local_20 + *(int *)(*(int *)(param_1 + 0x4dec) + 0xc) + iVar6);
|
|
|
|
if (param_6 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
puVar19 = puVar19 + 0x40;
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 0x40;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((param_4 <= iVar3 >> 4) || (param_5 <= iVar15 >> 4)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
puVar19 = (undefined2 *)(local_20 * 2 * param_4 + *(int *)(*(int *)(param_1 + 0x4dec) + 4));
|
|
|
|
puVar18 = *(undefined2 **)(param_1 + 0x4834);
|
|
|
|
iVar3 = local_20 + -1;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar19;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
puVar19 = puVar19 + 1;
|
|
|
|
*puVar18 = uVar1;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
} while (iVar3 != -1);
|
|
|
|
}
|
|
|
|
param_4 = param_4 + -1;
|
|
|
|
param_5 = param_5 + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_10 == 1) {
|
|
|
|
(**(code **)(iVar8 + 0xa0))(param_1,param_4,param_5);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
LAB_0064381c:
|
|
|
|
FUN_00632ba0(param_1,param_2,param_3,param_4,param_5,iVar9,param_11);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006446e0 at 0x006446E0 (size: 266) ---
|
|
|
|
|
|
undefined4 FUN_006446e0(int param_1,undefined4 *param_2,int param_3,int *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
param_1 = param_1 * 0x28;
|
|
|
|
uVar1 = *(undefined4 *)(param_4[0x120c] + 0x1c + param_1);
|
|
|
|
*param_2 = *(undefined4 *)(param_4[0x120c] + 0x18 + param_1);
|
|
|
|
param_2[1] = uVar1;
|
|
|
|
param_2[3] = *(undefined4 *)(param_4[0x120c] + 0x20 + param_1);
|
|
|
|
*(undefined1 *)(param_2 + 0xc) = *(undefined1 *)(param_4[0x120c] + 0x24 + param_1);
|
|
|
|
*(undefined4 *)(param_3 + 0x24) = *(undefined4 *)(param_4[0x120c] + 4 + param_1);
|
|
|
|
*(undefined4 *)(param_3 + 0x28) = *(undefined4 *)(param_4[0x120c] + 8 + param_1);
|
|
|
|
*(undefined4 *)(param_3 + 0x2c) = *(undefined4 *)(param_4[0x120c] + 0xc + param_1);
|
|
|
|
*(undefined4 *)(param_3 + 0x30) = *(undefined4 *)(param_4[0x120c] + 0x10 + param_1);
|
|
|
|
iVar2 = *param_4;
|
|
|
|
if ((((iVar2 == 2) || (iVar2 == 6)) || (iVar2 == 0xe)) || ((iVar2 == 0x12 || (iVar2 == 0x10)))) {
|
|
|
|
uVar1 = *(undefined4 *)(param_4[0x120c] + param_1);
|
|
|
|
param_2[7] = uVar1;
|
|
|
|
iVar2 = FUN_00619570(param_2[0xf],uVar1,0);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0xffffffe9;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00649570(param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return 0xffffffe9;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(param_4[0x120c] + param_1);
|
|
|
|
param_2[4] = iVar2;
|
|
|
|
iVar2 = iVar2 - param_4[0x11];
|
|
|
|
param_2[7] = iVar2;
|
|
|
|
param_2[9] = param_2[8] - iVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006447f0 at 0x006447F0 (size: 184) ---
|
|
|
|
|
|
void FUN_006447f0(int param_1,undefined4 *param_2,int param_3,int *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
param_1 = param_1 * 0x28;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 4 + param_1) = *(undefined4 *)(param_3 + 0x24);
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 8 + param_1) = *(undefined4 *)(param_3 + 0x28);
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0xc + param_1) = *(undefined4 *)(param_3 + 0x2c);
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0x10 + param_1) = *(undefined4 *)(param_3 + 0x30);
|
|
|
|
uVar1 = param_2[1];
|
|
|
|
iVar2 = param_4[0x120c];
|
|
|
|
*(undefined4 *)(iVar2 + 0x18 + param_1) = *param_2;
|
|
|
|
*(undefined4 *)(iVar2 + 0x1c + param_1) = uVar1;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0x20 + param_1) = param_2[3];
|
|
|
|
*(undefined1 *)(param_4[0x120c] + 0x24 + param_1) = *(undefined1 *)(param_2 + 0xc);
|
|
|
|
iVar2 = *param_4;
|
|
|
|
if ((((iVar2 != 2) && (iVar2 != 0xe)) && (iVar2 != 0x10)) && ((iVar2 != 6 && (iVar2 != 0x12)))) {
|
|
|
|
*(undefined4 *)(param_4[0x120c] + param_1) = param_2[4];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_4[0x120c] + param_1) = param_2[7];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006448b0 at 0x006448B0 (size: 128) ---
|
|
|
|
|
|
int FUN_006448b0(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined1 local_14 [4];
|
|
|
|
|
|
|
|
if (((*(uint *)(param_2 + 0x18) != 0) &&
|
|
|
|
(uVar1 = param_5 + 1 + param_6 * param_3, uVar1 % *(uint *)(param_2 + 0x18) == 0)) &&
|
|
|
|
((int)uVar1 < param_4 * param_3)) {
|
|
|
|
*(undefined4 *)(param_2 + 0x24) = 0;
|
|
|
|
*(undefined4 *)(param_2 + 0x28) = 0;
|
|
|
|
*(undefined4 *)(param_2 + 0x2c) = 0;
|
|
|
|
*(undefined4 *)(param_2 + 0x30) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
if (*(char *)(param_1 + 0x30) == '\0') {
|
|
|
|
iVar2 = FUN_006418e0(param_1,local_14);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 *)(param_1 + 0x30) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00644930 at 0x00644930 (size: 4853) ---
|
|
|
|
|
|
undefined4 FUN_00644930(int param_1,int *param_2,int param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
undefined4 local_94 [4];
|
|
|
|
undefined4 auStack_84 [4];
|
|
|
|
int aiStack_74 [4];
|
|
|
|
short asStack_64 [2];
|
|
|
|
int local_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
int local_54;
|
|
|
|
int local_50;
|
|
|
|
int local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int *local_34;
|
|
|
|
int local_30;
|
|
|
|
int *local_2c;
|
|
|
|
int local_28;
|
|
|
|
int *local_24;
|
|
|
|
int local_20;
|
|
|
|
char local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_20 = *(int *)(param_1 + 8);
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
iVar2 = *param_2;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar4 = param_2[0xd];
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
local_94[iVar5] = *(undefined4 *)(iVar1 + 0x10 + iVar4);
|
|
|
|
auStack_84[iVar5] = *(undefined4 *)(iVar1 + 0xc + iVar4);
|
|
|
|
aiStack_74[iVar5] = *(int *)(iVar1 + 4 + iVar4) * *(int *)(iVar1 + 8 + iVar4);
|
|
|
|
iVar1 = iVar1 + 0x18;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
}
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37c0);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
local_18 = local_18 +
|
|
|
|
*(int *)(iVar1 + 4 + *(int *)(param_3 + 0x37cc)) *
|
|
|
|
*(int *)(iVar1 + 8 + *(int *)(param_3 + 0x37cc));
|
|
|
|
iVar1 = iVar1 + 0x10;
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37b8);
|
|
|
|
if ((iVar5 == 1) && (*(int *)(param_3 + 0x37bc) == 1)) {
|
|
|
|
local_1c = '\0';
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0;
|
|
|
|
local_1c = '\x01';
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar4 = 0;
|
|
|
|
local_24 = (int *)iVar5;
|
|
|
|
local_1c = '\x01';
|
|
|
|
do {
|
|
|
|
if (local_1c == '\0') {
|
|
|
|
goto LAB_00644a63;
|
|
|
|
}
|
|
|
|
iVar8 = *(int *)(*(int *)(param_3 + 0x37cc) + 4 + iVar4);
|
|
|
|
if (iVar8 != *(int *)(*(int *)(param_3 + 0x37cc) + 8 + iVar4)) {
|
|
|
|
local_1c = '\0';
|
|
|
|
}
|
|
|
|
if ((iVar8 != 1) && (iVar8 != 2)) {
|
|
|
|
local_1c = '\0';
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 0x10;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_00644a63:
|
|
|
|
if (((iVar5 == 2) && (*(int *)(param_3 + 0x37bc) < 3)) && (*(int *)(param_3 + 0x4de8) == 1)) {
|
|
|
|
local_44 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_44 = 0;
|
|
|
|
}
|
|
|
|
if (((iVar5 == 2) && (*(int *)(param_3 + 0x37bc) == 2)) && (*(int *)(param_3 + 0x4de8) == 1)) {
|
|
|
|
local_14 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_14 = 0;
|
|
|
|
}
|
|
|
|
if ((param_2[2] == 0) || (param_2[3] == 0)) {
|
|
|
|
iVar2 = param_2[8];
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
if (iVar2 < iVar5) {
|
|
|
|
local_50 = local_18 << 7;
|
|
|
|
local_4c = local_18 << 7;
|
|
|
|
local_48 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar2 = param_2[7];
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
if (iVar2 < iVar1) {
|
|
|
|
local_58 = local_48 << 7;
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_3c = *(int *)param_2[0xd];
|
|
|
|
iVar4 = (iVar1 * local_48 + iVar2) * local_4c + *(int *)(param_3 + 0x4de4);
|
|
|
|
if (0 < local_3c) {
|
|
|
|
local_5c = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_60 = iVar1;
|
|
|
|
do {
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar4 = iVar4 + *(int *)(iVar8 + 4 + local_5c) * 0x80 *
|
|
|
|
*(int *)(iVar8 + 8 + local_5c);
|
|
|
|
iVar8 = iVar8 + 0x10;
|
|
|
|
local_54 = iVar2;
|
|
|
|
} while (iVar5 < local_3c);
|
|
|
|
}
|
|
|
|
if (param_2[4] == 0) {
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_54 = iVar2;
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
if (0 < aiStack_74[iVar2]) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a4)(iVar4,0x80);
|
|
|
|
asStack_64[0] = (short)param_2[iVar2 + 9];
|
|
|
|
FUN_00621030(param_1,auStack_84[iVar2],iVar4,asStack_64,param_2[5]);
|
|
|
|
iVar4 = iVar4 + 0x80;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
param_2[iVar2 + 9] = (int)asStack_64[0];
|
|
|
|
} while (iVar5 < aiStack_74[iVar2]);
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar5);
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = local_54;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_54 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < aiStack_74[iVar8]) {
|
|
|
|
do {
|
|
|
|
local_3c = iVar8;
|
|
|
|
FUN_00621110(param_1,iVar4,param_2[5]);
|
|
|
|
iVar4 = iVar4 + 0x80;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar8 = local_3c;
|
|
|
|
} while (iVar2 < aiStack_74[local_3c]);
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < iVar5);
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = local_54;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar5 = FUN_006448b0(param_1,param_2,iVar1,*(undefined4 *)(param_3 + 0x7c),iVar2,
|
|
|
|
local_48);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
return 0xffffffe7;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
if (*(int *)(param_3 + 0x37d4) < iVar5) {
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_3 + 0x37d8) < iVar5) {
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar4 = (iVar1 * local_48 + iVar2) * local_4c + *(int *)(param_3 + 0x4de4);
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) == 0)
|
|
|
|
) {
|
|
|
|
local_5c = *(int *)(param_3 + 0x4834);
|
|
|
|
(*DAT_008f85a8)(local_5c,iVar4,local_50);
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_60 = local_5c;
|
|
|
|
local_54 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar8 = iVar1 * 0x10 + *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar7 = *(int *)(iVar8 + 4) * *(int *)(iVar8 + 8);
|
|
|
|
iVar2 = local_60;
|
|
|
|
iVar4 = iVar1 * 0x10;
|
|
|
|
if (0 < iVar7) {
|
|
|
|
while( true ) {
|
|
|
|
local_3c = iVar4;
|
|
|
|
local_40 = iVar1;
|
|
|
|
(**(code **)(local_20 + 0x110))
|
|
|
|
(iVar2,*(undefined4 *)
|
|
|
|
(*(int *)(iVar8 + 0xc) * 0xb4 + 0x9c + param_3));
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
iVar1 = local_40;
|
|
|
|
if (iVar7 <= iVar9) break;
|
|
|
|
iVar8 = *(int *)(param_3 + 0x37cc) + local_3c;
|
|
|
|
iVar2 = iVar2 + 0x80;
|
|
|
|
iVar4 = local_3c;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_60 = iVar2 + 0x80;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar2 = local_54;
|
|
|
|
} while (iVar1 < iVar5);
|
|
|
|
}
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar2,local_48,local_18,local_5c,
|
|
|
|
*(undefined4 *)(param_3 + 0x78),*(undefined4 *)(param_3 + 0x7c),param_4
|
|
|
|
,local_1c);
|
|
|
|
iVar1 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_3c = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar9 = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = 0;
|
|
|
|
local_5c = iVar9;
|
|
|
|
local_40 = iVar2 << 4;
|
|
|
|
local_28 = iVar4;
|
|
|
|
local_60 = iVar1;
|
|
|
|
local_54 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar1 = 0;
|
|
|
|
piVar6 = (int *)(iVar8 * 0x10);
|
|
|
|
iVar2 = *(int *)((int)piVar6 + 8 + iVar9);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_24 = (int *)(iVar8 * 2);
|
|
|
|
iVar5 = *(int *)((int)piVar6 + 4 + iVar9);
|
|
|
|
local_3c = iVar8;
|
|
|
|
do {
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_34 = (int *)(iVar1 << 7);
|
|
|
|
iVar8 = local_60;
|
|
|
|
local_38 = iVar1;
|
|
|
|
local_2c = piVar6;
|
|
|
|
while( true ) {
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar7 = iVar4 * 0x10 +
|
|
|
|
*(int *)(*(int *)(param_3 + 0x4ddc) + 4 + (int)local_24 * 2) +
|
|
|
|
iVar2 * local_58 * iVar8 * iVar5 + iVar8 * iVar5 * (int)local_34
|
|
|
|
+ iVar5 * local_40;
|
|
|
|
iVar2 = local_28;
|
|
|
|
local_30 = iVar4;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar7,iVar2,0x10);
|
|
|
|
iVar9 = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar5 = *(int *)((int)local_2c + 4 + iVar9);
|
|
|
|
iVar7 = iVar7 + iVar8 * 0x10 * iVar5;
|
|
|
|
iVar2 = iVar2 + 0x10;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < 8);
|
|
|
|
local_28 = iVar2;
|
|
|
|
iVar4 = local_30 + 1;
|
|
|
|
if (iVar5 <= iVar4) break;
|
|
|
|
iVar2 = *(int *)((int)local_2c + 8 + iVar9);
|
|
|
|
}
|
|
|
|
local_60 = iVar8;
|
|
|
|
iVar2 = *(int *)((int)local_2c + 8 + iVar9);
|
|
|
|
iVar1 = local_38;
|
|
|
|
piVar6 = local_2c;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar2);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar8 = local_3c;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
iVar1 = local_60;
|
|
|
|
iVar2 = local_54;
|
|
|
|
} while (iVar8 < iVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (((*(int *)(param_3 + 0x1c) != 0) && ((local_44 == 0 || (iVar2 != 0)))) &&
|
|
|
|
((local_14 == 0 || (local_48 != 0)))) {
|
|
|
|
iVar5 = (iVar2 + 1) % (iVar1 + local_44);
|
|
|
|
param_2[7] = iVar5;
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
param_2[8] = local_48 + 1;
|
|
|
|
if (local_48 + 1 == local_14 + *(int *)(param_3 + 0x7c)) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_48;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar2 - local_44;
|
|
|
|
*(int *)(param_3 + 0x10) = local_48 - local_14;
|
|
|
|
*(int *)(param_3 + 4) = iVar2 - local_44;
|
|
|
|
*(int *)(param_3 + 8) = local_48 - local_14;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar1);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
if (local_44 != 0) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar2,local_48,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),iVar1,iVar5,param_4,local_1c);
|
|
|
|
if (*(int *)(param_3 + 0x1c) == 0) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
else if (iVar2 == 0) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((local_14 == 0) || (local_48 != 0)) {
|
|
|
|
iVar5 = (iVar2 + 1) % (local_44 + *(int *)(param_3 + 0x78));
|
|
|
|
param_2[7] = iVar5;
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
iVar5 = local_48 + 1;
|
|
|
|
param_2[8] = iVar5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_48;
|
|
|
|
iVar5 = local_48;
|
|
|
|
}
|
|
|
|
if (iVar5 != local_14 + *(int *)(param_3 + 0x7c)) {
|
|
|
|
*(int *)(param_3 + 0xc) = iVar2 - local_44;
|
|
|
|
*(int *)(param_3 + 0x10) = local_48 - local_14;
|
|
|
|
*(int *)(param_3 + 4) = iVar2 - local_44;
|
|
|
|
*(int *)(param_3 + 8) = local_48 - local_14;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar2 = local_48 + 1;
|
|
|
|
local_48 = iVar2;
|
|
|
|
} while (iVar2 < iVar5);
|
|
|
|
}
|
|
|
|
if (local_14 != 0) {
|
|
|
|
iVar1 = param_2[7];
|
|
|
|
iVar4 = *(int *)(param_3 + 0x78);
|
|
|
|
local_24 = (int *)iVar1;
|
|
|
|
if (iVar1 <= iVar4) {
|
|
|
|
while( true ) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar1,iVar2,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),iVar4,iVar5,param_4,local_1c);
|
|
|
|
if (((*(int *)(param_3 + 0x1c) != 0) && ((local_44 == 0 || (iVar1 != 0)))) &&
|
|
|
|
((local_14 == 0 || (iVar2 != 0)))) {
|
|
|
|
iVar5 = (iVar1 + 1) % (local_44 + *(int *)(param_3 + 0x78));
|
|
|
|
param_2[7] = iVar5;
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
param_2[8] = iVar2 + 1;
|
|
|
|
if (iVar2 + 1 == local_14 + *(int *)(param_3 + 0x7c)) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = iVar2;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar1 - local_44;
|
|
|
|
*(int *)(param_3 + 0x10) = iVar2 - local_14;
|
|
|
|
*(int *)(param_3 + 4) = iVar1 - local_44;
|
|
|
|
*(int *)(param_3 + 8) = iVar2 - local_14;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar4 = *(int *)(param_3 + 0x78);
|
|
|
|
if (iVar4 < iVar1) break;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar6 = (int *)param_2[0xd];
|
|
|
|
local_30 = (iVar5 * 8) / piVar6[1];
|
|
|
|
piVar3 = (int *)piVar6[2];
|
|
|
|
iVar1 = (*(int *)(param_3 + 0x37bc) * 8) / (int)piVar3;
|
|
|
|
local_30 = (local_30 + -1 + *(int *)(param_3 + 0x4c)) / local_30;
|
|
|
|
iVar2 = param_2[8];
|
|
|
|
local_28 = *(int *)(param_3 + 0x7c);
|
|
|
|
local_2c = piVar6;
|
|
|
|
iVar5 = local_28;
|
|
|
|
local_24 = piVar3;
|
|
|
|
if (iVar2 < local_28) {
|
|
|
|
local_44 = local_18 << 7;
|
|
|
|
local_48 = local_18 << 7;
|
|
|
|
local_3c = (iVar1 + -1 + *(int *)(param_3 + 0x50)) / iVar1;
|
|
|
|
do {
|
|
|
|
if (0 < (int)piVar3) {
|
|
|
|
local_50 = iVar2 << 3;
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar1 = 0;
|
|
|
|
local_40 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar2 = local_40;
|
|
|
|
if (*(int *)(param_3 + 0x50) <= (int)piVar3 * local_50 + iVar5) break;
|
|
|
|
iVar2 = param_2[7];
|
|
|
|
iVar4 = *(int *)(param_3 + 0x78);
|
|
|
|
if (iVar2 < iVar4) {
|
|
|
|
iVar8 = piVar6[1];
|
|
|
|
local_54 = iVar5;
|
|
|
|
local_4c = iVar1;
|
|
|
|
local_2c = piVar6;
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_24 = (int *)*local_2c;
|
|
|
|
iVar1 = (iVar4 * local_40 + iVar2) * local_44 + *(int *)(param_3 + 0x4de4);
|
|
|
|
if (0 < (int)local_24) {
|
|
|
|
local_34 = *(int **)(param_3 + 0x37cc);
|
|
|
|
iVar9 = 0;
|
|
|
|
local_28 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar1 = iVar1 + *(int *)(iVar9 + 4 + (int)local_34) * 0x80 *
|
|
|
|
*(int *)(iVar9 + 8 + (int)local_34);
|
|
|
|
iVar9 = iVar9 + 0x10;
|
|
|
|
local_5c = iVar8;
|
|
|
|
local_58 = iVar4;
|
|
|
|
local_38 = iVar2;
|
|
|
|
} while (iVar5 < (int)local_24);
|
|
|
|
}
|
|
|
|
iVar1 = iVar8 * 0x80 * local_4c + iVar1;
|
|
|
|
if (0 < iVar8) {
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar4 = 0;
|
|
|
|
local_38 = iVar2;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_3 + 0x4c) <= iVar8 * 8 * local_38 + iVar5) {
|
|
|
|
iVar4 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = local_38;
|
|
|
|
goto LAB_00644d54;
|
|
|
|
}
|
|
|
|
if (param_2[4] == 0) {
|
|
|
|
FUN_00621180(param_1,iVar1,local_94[0],param_2[2],param_2[3],param_2[5]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00621330(param_1,iVar1,local_94[0],param_2[2],param_2[3],param_2[5]);
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 0x80;
|
|
|
|
iVar2 = FUN_006448b0(param_1,param_2,local_30,local_3c,
|
|
|
|
local_38 * *(int *)(param_2[0xd] + 4) + iVar4,
|
|
|
|
local_40 * *(int *)(param_2[0xd] + 8) + local_4c);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return 0xffffffe7;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 8;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
local_2c = (int *)param_2[0xd];
|
|
|
|
iVar8 = local_2c[1];
|
|
|
|
} while (iVar4 < iVar8);
|
|
|
|
iVar4 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = local_38;
|
|
|
|
}
|
|
|
|
LAB_00644d54:
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar4);
|
|
|
|
piVar3 = (int *)local_2c[2];
|
|
|
|
piVar6 = local_2c;
|
|
|
|
iVar1 = local_4c;
|
|
|
|
iVar5 = local_54;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 8;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar2 = local_40;
|
|
|
|
} while (iVar1 < (int)piVar3);
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
if ((iVar5 <= *(int *)(param_3 + 0x37d4)) && (iVar5 <= *(int *)(param_3 + 0x37d8))) {
|
|
|
|
piVar6 = *(int **)(param_3 + 0x4ddc);
|
|
|
|
if ((piVar6 == (int *)0x0) || (*piVar6 != 0)) {
|
|
|
|
iVar1 = 0;
|
|
|
|
piVar3 = *(int **)(param_3 + 0x78);
|
|
|
|
if (0 < (int)piVar3) {
|
|
|
|
do {
|
|
|
|
piVar6 = *(int **)(param_3 + 0x4834);
|
|
|
|
(*DAT_008f85a8)(piVar6,((int)piVar3 * iVar2 + iVar1) * local_44 +
|
|
|
|
*(int *)(param_3 + 0x4de4),local_48);
|
|
|
|
iVar4 = 0;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
piVar3 = piVar6;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
do {
|
|
|
|
local_2c = piVar6;
|
|
|
|
local_34 = piVar3;
|
|
|
|
local_38 = iVar1;
|
|
|
|
local_40 = iVar2;
|
|
|
|
iVar2 = iVar4 * 0x10 + *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar8 = *(int *)(iVar2 + 4) * *(int *)(iVar2 + 8);
|
|
|
|
piVar6 = local_34;
|
|
|
|
piVar3 = (int *)(iVar4 * 0x10);
|
|
|
|
if (0 < iVar8) {
|
|
|
|
while( true ) {
|
|
|
|
local_24 = piVar3;
|
|
|
|
local_28 = iVar4;
|
|
|
|
(**(code **)(local_20 + 0x110))
|
|
|
|
(piVar6,*(undefined4 *)
|
|
|
|
(*(int *)(iVar2 + 0xc) * 0xb4 + 0x9c + param_3));
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar4 = local_28;
|
|
|
|
if (iVar8 <= iVar1) break;
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37cc) + (int)local_24;
|
|
|
|
piVar6 = piVar6 + 0x20;
|
|
|
|
piVar3 = local_24;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_34 = piVar6 + 0x20;
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
iVar1 = local_38;
|
|
|
|
iVar2 = local_40;
|
|
|
|
piVar6 = local_2c;
|
|
|
|
piVar3 = local_34;
|
|
|
|
} while (iVar4 < iVar5);
|
|
|
|
}
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar1,iVar2,local_18,piVar6,
|
|
|
|
*(undefined4 *)(param_3 + 0x78),*(undefined4 *)(param_3 + 0x7c),param_4
|
|
|
|
,local_1c);
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
piVar3 = *(int **)(param_3 + 0x78);
|
|
|
|
} while (iVar1 < (int)piVar3);
|
|
|
|
piVar6 = *(int **)(param_3 + 0x4ddc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0;
|
|
|
|
piVar3 = *(int **)(param_3 + 0x78);
|
|
|
|
if (0 < (int)piVar3) {
|
|
|
|
local_4c = iVar2 << 7;
|
|
|
|
local_40 = iVar2;
|
|
|
|
local_34 = piVar3;
|
|
|
|
local_24 = piVar6;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar4 = *(int *)(param_3 + 0x37cc);
|
|
|
|
local_50 = iVar1 << 4;
|
|
|
|
local_38 = iVar1;
|
|
|
|
local_2c = (int *)(((int)local_34 * local_40 + iVar1) * local_44 +
|
|
|
|
*(int *)(param_3 + 0x4de4));
|
|
|
|
do {
|
|
|
|
iVar8 = 0;
|
|
|
|
iVar9 = iVar2 * 0x10;
|
|
|
|
iVar1 = *(int *)(iVar9 + 8 + iVar4);
|
|
|
|
if (0 < iVar1) {
|
|
|
|
local_28 = iVar2 * 2;
|
|
|
|
iVar5 = *(int *)(iVar9 + 4 + iVar4);
|
|
|
|
piVar6 = local_24;
|
|
|
|
local_60 = iVar9;
|
|
|
|
local_54 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
piVar3 = local_34;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
while( true ) {
|
|
|
|
local_5c = iVar8;
|
|
|
|
iVar1 = iVar1 * local_4c * (int)piVar3 * iVar5 +
|
|
|
|
*(int *)((int)piVar6 + local_28 * 2 + 4) + local_50 * iVar5 +
|
|
|
|
iVar5 * (int)piVar3 * 0x80 * local_5c + iVar2 * 0x10;
|
|
|
|
iVar8 = 0;
|
|
|
|
piVar6 = local_2c;
|
|
|
|
local_58 = iVar2;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar1,piVar6,0x10);
|
|
|
|
iVar4 = *(int *)(param_3 + 0x37cc);
|
|
|
|
piVar3 = *(int **)(param_3 + 0x78);
|
|
|
|
iVar5 = *(int *)(local_60 + 4 + iVar4);
|
|
|
|
iVar1 = iVar1 + (int)piVar3 * 0x10 * iVar5;
|
|
|
|
piVar6 = piVar6 + 4;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < 8);
|
|
|
|
iVar2 = local_58 + 1;
|
|
|
|
iVar8 = local_5c;
|
|
|
|
local_2c = piVar6;
|
|
|
|
if (iVar5 <= iVar2) break;
|
|
|
|
piVar6 = *(int **)(param_3 + 0x4ddc);
|
|
|
|
iVar1 = *(int *)(local_60 + 8 + iVar4);
|
|
|
|
}
|
|
|
|
piVar6 = *(int **)(param_3 + 0x4ddc);
|
|
|
|
iVar1 = *(int *)(local_60 + 8 + iVar4);
|
|
|
|
local_34 = piVar3;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < iVar1);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar2 = local_54;
|
|
|
|
local_24 = piVar6;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar1 = local_38;
|
|
|
|
} while (iVar2 < iVar5);
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
piVar6 = local_24;
|
|
|
|
piVar3 = local_34;
|
|
|
|
iVar2 = local_40;
|
|
|
|
} while (iVar1 < (int)local_34);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((piVar6 == (int *)0x0) || (*piVar6 != 0)) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar1,iVar2,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),piVar3,*(undefined4 *)(param_3 + 0x7c),
|
|
|
|
param_4,local_1c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0x1c) != 0) {
|
|
|
|
param_2[8] = iVar2 + 1;
|
|
|
|
param_2[7] = 0;
|
|
|
|
if (iVar2 + 1 != local_14 + *(int *)(param_3 + 0x7c)) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x78) + -1;
|
|
|
|
*(int *)(param_3 + 0xc) = iVar5;
|
|
|
|
*(int *)(param_3 + 0x10) = iVar2;
|
|
|
|
*(int *)(param_3 + 4) = iVar5;
|
|
|
|
*(int *)(param_3 + 8) = iVar2;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
if (*(int *)(param_3 + 0x7c) <= iVar2) break;
|
|
|
|
piVar6 = (int *)param_2[0xd];
|
|
|
|
piVar3 = (int *)piVar6[2];
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
local_28 = iVar5;
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
iVar4 = 0;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar1 = local_28;
|
|
|
|
if (iVar5 != -1 && -1 < iVar5 + 1) {
|
|
|
|
while( true ) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar4,iVar2,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),iVar5,iVar1,param_4,local_1c);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x78);
|
|
|
|
if (iVar5 + 1 <= iVar4) break;
|
|
|
|
iVar1 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00645ce0 at 0x00645CE0 (size: 4771) ---
|
|
|
|
|
|
undefined4 FUN_00645ce0(int param_1,int *param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
undefined4 local_ac [4];
|
|
|
|
undefined4 auStack_9c [4];
|
|
|
|
int local_8c [4];
|
|
|
|
short asStack_7c [2];
|
|
|
|
int local_78;
|
|
|
|
int *local_74;
|
|
|
|
int local_70;
|
|
|
|
int local_6c;
|
|
|
|
int local_68;
|
|
|
|
int local_64;
|
|
|
|
int local_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
int local_54;
|
|
|
|
int local_50;
|
|
|
|
int local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
bool local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_24 = *(int *)(param_1 + 8);
|
|
|
|
iVar6 = 0;
|
|
|
|
local_4c = 0;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_3 + 0x37e0) == 0) {
|
|
|
|
param_2[iVar6 + 9] = 0;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar8 = param_2[0xd];
|
|
|
|
local_ac[iVar6] = *(undefined4 *)(iVar2 + 0x10 + iVar8);
|
|
|
|
auStack_9c[iVar6] = *(undefined4 *)(iVar2 + 0xc + iVar8);
|
|
|
|
iVar9 = iVar2 + 4;
|
|
|
|
iVar3 = iVar2 + 8;
|
|
|
|
iVar2 = iVar2 + 0x18;
|
|
|
|
local_8c[iVar6] = *(int *)(iVar9 + iVar8) * *(int *)(iVar3 + iVar8);
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
}
|
|
|
|
if (iVar5 == 1) {
|
|
|
|
local_8c[0] = 1;
|
|
|
|
}
|
|
|
|
local_2c = *(int *)(param_3 + 0x37b8);
|
|
|
|
if (local_2c == 1) {
|
|
|
|
local_34 = *(int *)(param_3 + 0x37bc);
|
|
|
|
if (*(int *)(param_3 + 0x37bc) == 1) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_3c = false;
|
|
|
|
goto LAB_00645dde;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_34 = *(int *)(param_3 + 0x37bc);
|
|
|
|
}
|
|
|
|
bVar1 = true;
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_3c = true;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
if (!bVar1) {
|
|
|
|
local_3c = bVar1;
|
|
|
|
goto LAB_00645dde;
|
|
|
|
}
|
|
|
|
iVar9 = *(int *)(*(int *)(param_3 + 0x37cc) + 4 + iVar2);
|
|
|
|
if (iVar9 != *(int *)(*(int *)(param_3 + 0x37cc) + 8 + iVar2)) {
|
|
|
|
bVar1 = false;
|
|
|
|
}
|
|
|
|
if ((iVar9 != 1) && (iVar9 != 2)) {
|
|
|
|
bVar1 = false;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x10;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
local_3c = bVar1;
|
|
|
|
}
|
|
|
|
LAB_00645dde:
|
|
|
|
local_28 = (int)(8 / (longlong)param_4);
|
|
|
|
local_44 = local_2c * local_28;
|
|
|
|
local_40 = *(int *)(param_3 + 4) / local_44;
|
|
|
|
local_44 = (*(int *)(param_3 + 0xc) + -1 + local_44) / local_44;
|
|
|
|
local_1c = local_34 * local_28;
|
|
|
|
local_20 = *(int *)(param_3 + 8) / local_1c;
|
|
|
|
local_1c = (*(int *)(param_3 + 0x10) + -1 + local_1c) / local_1c;
|
|
|
|
if ((*(int *)(param_3 + 0x4de8) == 1) && (local_2c == 2)) {
|
|
|
|
local_18 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_3 + 0x4de8) == 1) && (local_34 == 2)) {
|
|
|
|
local_48 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_48 = 0;
|
|
|
|
}
|
|
|
|
if (local_40 != 0) {
|
|
|
|
local_40 = local_40 - local_18;
|
|
|
|
}
|
|
|
|
if (local_20 != 0) {
|
|
|
|
local_20 = local_20 - local_48;
|
|
|
|
}
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
if (local_44 < iVar6) {
|
|
|
|
local_44 = local_44 + local_18;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_3 + 0x7c);
|
|
|
|
local_60 = iVar2;
|
|
|
|
if (local_1c < iVar2) {
|
|
|
|
local_1c = local_1c + local_48;
|
|
|
|
}
|
|
|
|
iVar9 = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_50 = iVar6;
|
|
|
|
do {
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
local_4c = local_4c +
|
|
|
|
*(int *)(iVar3 + 4 + *(int *)(param_3 + 0x37cc)) *
|
|
|
|
*(int *)(iVar3 + 8 + *(int *)(param_3 + 0x37cc));
|
|
|
|
iVar3 = iVar3 + 0x10;
|
|
|
|
} while (iVar9 < iVar5);
|
|
|
|
}
|
|
|
|
if ((param_2[2] == 0) || (param_2[3] == 0)) {
|
|
|
|
local_6c = param_2[8];
|
|
|
|
if (local_6c < iVar2) {
|
|
|
|
local_74 = (int *)(local_4c << 7);
|
|
|
|
local_70 = local_4c << 7;
|
|
|
|
do {
|
|
|
|
iVar5 = param_2[7];
|
|
|
|
if (iVar5 < iVar6) {
|
|
|
|
local_78 = local_6c << 7;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
local_30 = *(int *)param_2[0xd];
|
|
|
|
iVar9 = (iVar6 * local_6c + iVar5) * local_70 + *(int *)(param_3 + 0x4de4);
|
|
|
|
if (0 < local_30) {
|
|
|
|
local_54 = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar3 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_50 = iVar6;
|
|
|
|
do {
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar9 = iVar9 + *(int *)(iVar3 + 4 + local_54) * 0x80 *
|
|
|
|
*(int *)(iVar3 + 8 + local_54);
|
|
|
|
iVar3 = iVar3 + 0x10;
|
|
|
|
local_38 = iVar5;
|
|
|
|
} while (iVar2 < local_30);
|
|
|
|
}
|
|
|
|
if (param_2[4] == 0) {
|
|
|
|
iVar2 = *param_2;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_38 = iVar5;
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < local_8c[iVar5]) {
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a4)(iVar9,0x80);
|
|
|
|
asStack_7c[0] = (short)param_2[iVar5 + 9];
|
|
|
|
FUN_00621030(param_1,auStack_9c[iVar5],iVar9,asStack_7c,param_2[5]);
|
|
|
|
iVar9 = iVar9 + 0x80;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
param_2[iVar5 + 9] = (int)asStack_7c[0];
|
|
|
|
} while (iVar6 < local_8c[iVar5]);
|
|
|
|
iVar2 = *param_2;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar5 = local_38;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar2 = *param_2;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_38 = iVar5;
|
|
|
|
do {
|
|
|
|
if (0 < local_8c[iVar3]) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_30 = iVar3;
|
|
|
|
do {
|
|
|
|
FUN_00621110(param_1,iVar9,param_2[5]);
|
|
|
|
iVar9 = iVar9 + 0x80;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < local_8c[local_30]);
|
|
|
|
iVar2 = *param_2;
|
|
|
|
iVar3 = local_30;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar2);
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar5 = local_38;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar6 = FUN_006448b0(param_1,param_2,iVar6,*(undefined4 *)(param_3 + 0x7c),iVar5,
|
|
|
|
local_6c);
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
return 0xffffffe7;
|
|
|
|
}
|
|
|
|
if (iVar5 < local_40) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else if (iVar5 < local_44) {
|
|
|
|
if (local_6c < local_20) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else if (local_6c < local_1c) {
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37c0);
|
|
|
|
if (*(int *)(param_3 + 0x37d4) < iVar2) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_3 + 0x37d8) < iVar2) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
local_68 = (iVar6 * local_6c + iVar5) * local_70 + *(int *)(param_3 + 0x4de4);
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) ||
|
|
|
|
(**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x4834);
|
|
|
|
(*DAT_008f85a8)(iVar6,local_68,local_74);
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar3 = *(int *)(param_3 + 0x4834);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
do {
|
|
|
|
local_30 = iVar6;
|
|
|
|
local_34 = iVar3;
|
|
|
|
local_38 = iVar5;
|
|
|
|
iVar3 = iVar9 * 0x10 + *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = 0;
|
|
|
|
iVar10 = *(int *)(iVar3 + 4) * *(int *)(iVar3 + 8);
|
|
|
|
iVar5 = local_34;
|
|
|
|
iVar6 = iVar9 * 0x10;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
while( true ) {
|
|
|
|
local_28 = iVar6;
|
|
|
|
local_2c = iVar9;
|
|
|
|
(**(code **)(local_24 + 0x110))
|
|
|
|
(iVar5,*(undefined4 *)
|
|
|
|
(*(int *)(iVar3 + 0xc) * 0xb4 + 0x9c + param_3));
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
iVar9 = local_2c;
|
|
|
|
if (iVar10 <= iVar8) break;
|
|
|
|
iVar3 = *(int *)(param_3 + 0x37cc) + local_28;
|
|
|
|
iVar5 = iVar5 + 0x80;
|
|
|
|
iVar6 = local_28;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_34 = iVar5 + 0x80;
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
iVar6 = local_30;
|
|
|
|
iVar5 = local_38;
|
|
|
|
iVar3 = local_34;
|
|
|
|
} while (iVar9 < iVar2);
|
|
|
|
}
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar5,local_6c,local_4c,iVar6,
|
|
|
|
*(undefined4 *)(param_3 + 0x78),*(undefined4 *)(param_3 + 0x7c),
|
|
|
|
param_4,local_3c);
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar3 = *(int *)(param_3 + 0x37cc);
|
|
|
|
local_50 = iVar6;
|
|
|
|
local_38 = iVar5;
|
|
|
|
do {
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar8 = iVar9 * 0x10;
|
|
|
|
iVar5 = *(int *)(iVar8 + 8 + iVar3);
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_34 = iVar9 * 2;
|
|
|
|
iVar2 = *(int *)(iVar8 + 4 + iVar3);
|
|
|
|
local_30 = local_38 << 4;
|
|
|
|
local_54 = iVar9;
|
|
|
|
do {
|
|
|
|
iVar9 = 0;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_5c = iVar6 << 7;
|
|
|
|
iVar10 = local_50;
|
|
|
|
local_64 = iVar8;
|
|
|
|
local_58 = iVar6;
|
|
|
|
while( true ) {
|
|
|
|
iVar8 = iVar9 * 0x10 +
|
|
|
|
*(int *)(*(int *)(param_3 + 0x4ddc) + 4 + local_34 * 2) +
|
|
|
|
iVar5 * local_78 * iVar10 * iVar2 +
|
|
|
|
iVar10 * iVar2 * local_5c + iVar2 * local_30;
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar5 = local_68;
|
|
|
|
local_60 = iVar9;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar8,iVar5,0x10);
|
|
|
|
iVar3 = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar10 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = *(int *)(local_64 + 4 + iVar3);
|
|
|
|
iVar8 = iVar8 + iVar10 * 0x10 * iVar2;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < 8);
|
|
|
|
local_68 = iVar5;
|
|
|
|
iVar9 = local_60 + 1;
|
|
|
|
if (iVar2 <= iVar9) break;
|
|
|
|
iVar5 = *(int *)(local_64 + 8 + iVar3);
|
|
|
|
}
|
|
|
|
local_50 = iVar10;
|
|
|
|
iVar5 = *(int *)(local_64 + 8 + iVar3);
|
|
|
|
iVar6 = local_58;
|
|
|
|
iVar8 = local_64;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar9 = local_54;
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
iVar6 = local_50;
|
|
|
|
iVar5 = local_38;
|
|
|
|
} while (iVar9 < iVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x78);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0x1c) != 0) {
|
|
|
|
iVar6 = (iVar5 + 1) % iVar6;
|
|
|
|
param_2[7] = iVar6;
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
param_2[8] = local_6c + 1;
|
|
|
|
if (local_6c + 1 == *(int *)(param_3 + 0x7c)) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_6c;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar5 - local_18;
|
|
|
|
*(int *)(param_3 + 0x10) = local_6c - local_48;
|
|
|
|
*(int *)(param_3 + 4) = iVar5 - local_18;
|
|
|
|
*(int *)(param_3 + 8) = local_6c - local_48;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar6);
|
|
|
|
iVar2 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
local_6c = local_6c + 1;
|
|
|
|
} while (local_6c < iVar2);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_30 = (local_2c * 8) / *(int *)(param_2[0xd] + 4);
|
|
|
|
local_34 = (local_34 * 8) / *(int *)(param_2[0xd] + 8);
|
|
|
|
local_2c = (local_30 + -1 + *(int *)(param_3 + 0x4c)) / local_30;
|
|
|
|
uVar7 = (int)*(uint *)(param_3 + 0x50) >> 0x1f;
|
|
|
|
iVar6 = param_2[8];
|
|
|
|
iVar2 = local_60;
|
|
|
|
if (iVar6 < iVar2) {
|
|
|
|
local_58 = local_4c << 7;
|
|
|
|
local_5c = local_4c << 7;
|
|
|
|
local_50 = (int)(local_34 + -1 + ((*(uint *)(param_3 + 0x50) ^ uVar7) - uVar7)) / local_34;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_3 + 0x37d8) <= iVar5) {
|
|
|
|
piVar4 = (int *)param_2[0xd];
|
|
|
|
iVar2 = piVar4[2];
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_68 = iVar6 << 3;
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar9 = 0;
|
|
|
|
local_54 = iVar6;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_3 + 0x50) <= iVar2 * local_68 + iVar5) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar6 = local_54;
|
|
|
|
goto LAB_0064622b;
|
|
|
|
}
|
|
|
|
iVar6 = param_2[7];
|
|
|
|
iVar3 = *(int *)(param_3 + 0x78);
|
|
|
|
if (iVar6 < iVar3) {
|
|
|
|
iVar2 = piVar4[1];
|
|
|
|
local_74 = piVar4;
|
|
|
|
local_6c = iVar5;
|
|
|
|
local_64 = iVar9;
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_30 = *local_74;
|
|
|
|
iVar9 = (iVar3 * local_54 + iVar6) * local_58 + *(int *)(param_3 + 0x4de4);
|
|
|
|
if (0 < local_30) {
|
|
|
|
local_38 = *(int *)(param_3 + 0x37cc);
|
|
|
|
local_34 = 0;
|
|
|
|
iVar8 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar9 = iVar9 + *(int *)(iVar8 + 4 + local_38) * 0x80 *
|
|
|
|
*(int *)(iVar8 + 8 + local_38);
|
|
|
|
iVar8 = iVar8 + 0x10;
|
|
|
|
local_78 = iVar2;
|
|
|
|
local_70 = iVar3;
|
|
|
|
local_60 = iVar6;
|
|
|
|
} while (iVar5 < local_30);
|
|
|
|
}
|
|
|
|
iVar9 = iVar2 * 0x80 * local_64 + iVar9;
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_60 = iVar6;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_3 + 0x4c) <= iVar2 * 8 * local_60 + iVar3) {
|
|
|
|
iVar3 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar6 = local_60;
|
|
|
|
goto LAB_006461fa;
|
|
|
|
}
|
|
|
|
if (param_2[4] == 0) {
|
|
|
|
FUN_00621180(param_1,iVar9,local_ac[0],param_2[2],param_2[3],param_2[5]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00621330(param_1,iVar9,local_ac[0],param_2[2],param_2[3],param_2[5]);
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 0x80;
|
|
|
|
iVar6 = FUN_006448b0(param_1,param_2,local_2c,local_50,
|
|
|
|
local_60 * *(int *)(param_2[0xd] + 4) + iVar5,
|
|
|
|
local_54 * *(int *)(param_2[0xd] + 8) + local_64);
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
return 0xffffffe7;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
local_74 = (int *)param_2[0xd];
|
|
|
|
iVar2 = local_74[1];
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
iVar3 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar6 = local_60;
|
|
|
|
}
|
|
|
|
LAB_006461fa:
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar3);
|
|
|
|
iVar2 = local_74[2];
|
|
|
|
piVar4 = local_74;
|
|
|
|
iVar5 = local_6c;
|
|
|
|
iVar9 = local_64;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 8;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < iVar2);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar6 = local_54;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0064622b:
|
|
|
|
if ((((iVar5 <= *(int *)(param_3 + 0x37d4)) && (iVar5 <= *(int *)(param_3 + 0x37d8))) &&
|
|
|
|
(local_20 <= iVar6)) && (iVar6 < local_1c)) {
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
iVar5 = param_2[7] - local_40;
|
|
|
|
if (iVar5 < 1) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x2c) =
|
|
|
|
((iVar6 - local_20) * *(int *)(param_3 + 0x37bc) * *(int *)(param_3 + 0x3c) +
|
|
|
|
iVar5 * *(int *)(param_3 + 0x30) * *(int *)(param_3 + 0x37b8)) * local_28 +
|
|
|
|
*(int *)(param_3 + 0x20);
|
|
|
|
iVar5 = local_40;
|
|
|
|
if (local_40 < local_44) {
|
|
|
|
do {
|
|
|
|
iVar2 = *(int *)(param_3 + 0x4834);
|
|
|
|
(*DAT_008f85a8)(iVar2,(iVar6 * *(int *)(param_3 + 0x78) + iVar5) * local_58 +
|
|
|
|
*(int *)(param_3 + 0x4de4),local_5c);
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar9 = *(int *)(param_3 + 0x37c0);
|
|
|
|
iVar8 = iVar2;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
do {
|
|
|
|
local_30 = iVar8;
|
|
|
|
local_34 = iVar2;
|
|
|
|
local_38 = iVar5;
|
|
|
|
local_54 = iVar6;
|
|
|
|
iVar2 = iVar3 * 0x10 + *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = 0;
|
|
|
|
iVar10 = *(int *)(iVar2 + 4) * *(int *)(iVar2 + 8);
|
|
|
|
iVar5 = local_30;
|
|
|
|
iVar6 = iVar3 * 0x10;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
while( true ) {
|
|
|
|
local_60 = iVar3;
|
|
|
|
local_64 = iVar6;
|
|
|
|
(**(code **)(local_24 + 0x110))
|
|
|
|
(iVar5,*(undefined4 *)
|
|
|
|
(*(int *)(iVar2 + 0xc) * 0xb4 + 0x9c + param_3));
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
iVar3 = local_60;
|
|
|
|
if (iVar10 <= iVar8) break;
|
|
|
|
iVar2 = *(int *)(param_3 + 0x37cc) + local_64;
|
|
|
|
iVar5 = iVar5 + 0x80;
|
|
|
|
iVar6 = local_64;
|
|
|
|
}
|
|
|
|
iVar9 = *(int *)(param_3 + 0x37c0);
|
|
|
|
local_30 = iVar5 + 0x80;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
iVar5 = local_38;
|
|
|
|
iVar6 = local_54;
|
|
|
|
iVar2 = local_34;
|
|
|
|
iVar8 = local_30;
|
|
|
|
} while (iVar3 < iVar9);
|
|
|
|
}
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar5,iVar6,local_4c,iVar2,
|
|
|
|
*(undefined4 *)(param_3 + 0x78),*(undefined4 *)(param_3 + 0x7c),param_4
|
|
|
|
,local_3c);
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < local_44);
|
|
|
|
}
|
|
|
|
if ((local_18 != 0) && (iVar5 == local_44)) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar5,iVar6,local_4c,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),*(undefined4 *)(param_3 + 0x78),
|
|
|
|
*(undefined4 *)(param_3 + 0x7c),param_4,local_3c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (local_40 < local_44) {
|
|
|
|
local_64 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar2 = local_40;
|
|
|
|
local_54 = iVar6;
|
|
|
|
do {
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
iVar6 = *(int *)(param_3 + 0x37cc);
|
|
|
|
local_6c = local_54 << 7;
|
|
|
|
local_70 = iVar2 << 4;
|
|
|
|
local_68 = (local_64 * local_54 + iVar2) * local_58 + *(int *)(param_3 + 0x4de4);
|
|
|
|
local_60 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar3 = (int)piVar4 * 0x10;
|
|
|
|
iVar2 = *(int *)(iVar3 + 8 + iVar6);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
local_78 = (int)piVar4 * 2;
|
|
|
|
iVar5 = *(int *)(iVar3 + 4 + iVar6);
|
|
|
|
local_74 = piVar4;
|
|
|
|
do {
|
|
|
|
iVar10 = 0;
|
|
|
|
iVar8 = local_64;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
while( true ) {
|
|
|
|
local_30 = iVar3;
|
|
|
|
local_34 = iVar9;
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar3 = iVar2 * local_6c * iVar8 * iVar5 +
|
|
|
|
*(int *)(*(int *)(param_3 + 0x4ddc) + 4 + local_78 * 2) +
|
|
|
|
local_70 * iVar5 + iVar5 * iVar8 * 0x80 * local_34 + iVar10 * 0x10
|
|
|
|
;
|
|
|
|
iVar2 = local_68;
|
|
|
|
local_38 = iVar10;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar3,iVar2,0x10);
|
|
|
|
iVar6 = *(int *)(param_3 + 0x37cc);
|
|
|
|
iVar8 = *(int *)(param_3 + 0x78);
|
|
|
|
iVar5 = *(int *)(local_30 + 4 + iVar6);
|
|
|
|
iVar3 = iVar3 + iVar8 * 0x10 * iVar5;
|
|
|
|
iVar2 = iVar2 + 0x10;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < 8);
|
|
|
|
iVar10 = local_38 + 1;
|
|
|
|
iVar9 = local_34;
|
|
|
|
iVar3 = local_30;
|
|
|
|
local_68 = iVar2;
|
|
|
|
if (iVar5 <= iVar10) break;
|
|
|
|
iVar2 = *(int *)(local_30 + 8 + iVar6);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(local_30 + 8 + iVar6);
|
|
|
|
local_64 = iVar8;
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < iVar2);
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
piVar4 = local_74;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)((int)piVar4 + 1);
|
|
|
|
iVar2 = local_60;
|
|
|
|
} while ((int)piVar4 < iVar5);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar6 = local_54;
|
|
|
|
} while (iVar2 < local_44);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0x1c) != 0) {
|
|
|
|
param_2[8] = iVar6 + 1;
|
|
|
|
param_2[7] = 0;
|
|
|
|
if (iVar6 + 1 != local_48 + *(int *)(param_3 + 0x7c)) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x78) + -1;
|
|
|
|
*(int *)(param_3 + 0xc) = iVar5;
|
|
|
|
*(int *)(param_3 + 0x10) = iVar6 - local_48;
|
|
|
|
*(int *)(param_3 + 4) = iVar5;
|
|
|
|
*(int *)(param_3 + 8) = iVar6 - local_48;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar2 = *(int *)(param_3 + 0x7c);
|
|
|
|
if (*(int *)(param_3 + 0x7c) <= iVar6) break;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
local_60 = iVar2;
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
if (local_48 == 0) {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = local_60;
|
|
|
|
iVar6 = local_40;
|
|
|
|
if (local_40 <= local_44) {
|
|
|
|
while( true ) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar6,iVar5,local_4c,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),*(undefined4 *)(param_3 + 0x78),iVar5,
|
|
|
|
param_4,local_3c);
|
|
|
|
if (local_44 < iVar6 + 1) break;
|
|
|
|
iVar5 = *(int *)(param_3 + 0x7c);
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0x1c) != 0) {
|
|
|
|
param_2[7] = 0;
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = *(int *)(param_3 + 0x37c0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((iVar5 <= *(int *)(param_3 + 0x37d4)) && (iVar5 <= *(int *)(param_3 + 0x37d8))) {
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00647040 at 0x00647040 (size: 2809) ---
|
|
|
|
|
|
int FUN_00647040(int param_1,int *param_2,int param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined4 auStack_ac [4];
|
|
|
|
undefined4 auStack_9c [4];
|
|
|
|
undefined4 auStack_8c [4];
|
|
|
|
int local_7c [4];
|
|
|
|
short asStack_6c [2];
|
|
|
|
short local_68 [2];
|
|
|
|
int local_64;
|
|
|
|
int local_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
char local_54;
|
|
|
|
int local_50;
|
|
|
|
int iStack_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_50 = *(int *)(param_1 + 8);
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar2 = *param_2;
|
|
|
|
local_58 = 0;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar4 = param_2[0xd];
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
auStack_ac[iVar3] = *(undefined4 *)(iVar1 + 0x10 + iVar4);
|
|
|
|
auStack_9c[iVar3] = *(undefined4 *)(iVar1 + 0xc + iVar4);
|
|
|
|
auStack_8c[iVar3] = *(undefined4 *)(*(int *)(iVar1 + 0x14 + iVar4) + 8);
|
|
|
|
iVar7 = *(int *)(iVar1 + 4 + iVar4) * *(int *)(iVar1 + 8 + iVar4);
|
|
|
|
iVar6 = iVar6 + iVar7;
|
|
|
|
iVar1 = iVar1 + 0x18;
|
|
|
|
local_7c[iVar3] = iVar7;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar2);
|
|
|
|
local_58 = iVar6;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(param_3 + 0x37b8);
|
|
|
|
if (iVar2 == 1) {
|
|
|
|
iVar2 = (iVar3 * 8) / *(int *)(param_2[0xd] + 4);
|
|
|
|
iVar1 = (*(int *)(param_3 + 0x37bc) * 8) / *(int *)(param_2[0xd] + 8);
|
|
|
|
iVar2 = (*(int *)(param_3 + 0x4c) + -1 + iVar2) / iVar2;
|
|
|
|
uVar5 = (int)*(uint *)(param_3 + 0x50) >> 0x1f;
|
|
|
|
local_18 = (int)(((*(uint *)(param_3 + 0x50) ^ uVar5) - uVar5) + -1 + iVar1) / iVar1;
|
|
|
|
local_58 = 1;
|
|
|
|
local_7c[0] = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(param_3 + 0x78);
|
|
|
|
local_18 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
if ((iVar3 == 1) && (*(int *)(param_3 + 0x37bc) == 1)) {
|
|
|
|
local_54 = '\0';
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0;
|
|
|
|
local_54 = '\x01';
|
|
|
|
if (0 < *(int *)(param_3 + 0x37c0)) {
|
|
|
|
iVar4 = 0;
|
|
|
|
local_54 = '\x01';
|
|
|
|
do {
|
|
|
|
local_64 = iVar2;
|
|
|
|
local_60 = iVar3;
|
|
|
|
if (local_54 == '\0') {
|
|
|
|
goto LAB_00647177;
|
|
|
|
}
|
|
|
|
iVar6 = *(int *)(*(int *)(param_3 + 0x37cc) + 4 + iVar4);
|
|
|
|
if (iVar6 != *(int *)(*(int *)(param_3 + 0x37cc) + 8 + iVar4)) {
|
|
|
|
local_54 = '\0';
|
|
|
|
}
|
|
|
|
if ((iVar6 != 1) && (iVar6 != 2)) {
|
|
|
|
local_54 = '\0';
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 0x10;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < *(int *)(param_3 + 0x37c0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_00647177:
|
|
|
|
if (((iVar3 == 2) && (*(int *)(param_3 + 0x37bc) < 3)) && (*(int *)(param_3 + 0x4de8) == 1)) {
|
|
|
|
local_1c = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = 0;
|
|
|
|
}
|
|
|
|
if (((iVar3 == 2) && (*(int *)(param_3 + 0x37bc) == 2)) && (*(int *)(param_3 + 0x4de8) == 1)) {
|
|
|
|
local_28 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_28 = 0;
|
|
|
|
}
|
|
|
|
iVar3 = param_2[8];
|
|
|
|
if (iVar3 < local_18) {
|
|
|
|
local_20 = iVar2 << 4;
|
|
|
|
local_24 = iVar2 << 7;
|
|
|
|
local_60 = iVar3;
|
|
|
|
local_64 = iVar2;
|
|
|
|
do {
|
|
|
|
iVar2 = param_2[7];
|
|
|
|
if (iVar2 < local_64) {
|
|
|
|
do {
|
|
|
|
iVar1 = 0;
|
|
|
|
local_5c = *(int *)(param_3 + 0x4834);
|
|
|
|
iVar3 = *param_2;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
local_2c = iVar2 << 4;
|
|
|
|
local_30 = iVar2;
|
|
|
|
do {
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)
|
|
|
|
) {
|
|
|
|
iVar4 = 0;
|
|
|
|
iVar2 = local_5c;
|
|
|
|
if (0 < local_7c[iVar1]) {
|
|
|
|
do {
|
|
|
|
asStack_6c[0] = (short)param_2[iVar1 + 9];
|
|
|
|
iVar3 = (**(code **)(local_50 + 0xf4))
|
|
|
|
(param_1,auStack_9c[iVar1],auStack_ac[iVar1],asStack_6c,iVar2)
|
|
|
|
;
|
|
|
|
param_2[iVar1 + 9] = (int)asStack_6c[0];
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
(**(code **)(local_50 + 0x110))(iVar2,auStack_8c[iVar1]);
|
|
|
|
iVar2 = iVar2 + 0x80;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < local_7c[iVar1]);
|
|
|
|
local_5c = iVar2;
|
|
|
|
iVar3 = *param_2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_38 = 0;
|
|
|
|
iVar4 = iVar1 * 0x18;
|
|
|
|
iVar2 = *(int *)(iVar4 + 8 + param_2[0xd]);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 4 + param_2[0xd]);
|
|
|
|
iVar3 = 0;
|
|
|
|
local_44 = iVar1 * 2;
|
|
|
|
local_48 = iVar1;
|
|
|
|
do {
|
|
|
|
if (0 < iVar6) {
|
|
|
|
local_38 = iVar3;
|
|
|
|
local_3c = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_34 = iVar4;
|
|
|
|
do {
|
|
|
|
local_68[0] = (short)*(undefined4 *)((int)param_2 + local_44 * 2 + 0x24);
|
|
|
|
iVar2 = (**(code **)(local_50 + 0xf4))
|
|
|
|
(param_1,auStack_9c[local_48],auStack_ac[local_48],
|
|
|
|
local_68,local_5c);
|
|
|
|
*(int *)((int)param_2 + local_44 * 2 + 0x24) = (int)local_68[0];
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(local_34 + 4 + param_2[0xd]);
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar1 = iVar2 * local_2c +
|
|
|
|
*(int *)(*(int *)(param_3 + 0x4ddc) + 4 + local_44 * 2) +
|
|
|
|
(local_60 * *(int *)(local_34 + 8 + param_2[0xd]) + local_38) *
|
|
|
|
iVar2 * local_24 + local_3c;
|
|
|
|
iVar2 = local_5c;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar1,iVar2,0x10);
|
|
|
|
iVar4 = param_2[0xd];
|
|
|
|
iVar6 = *(int *)(local_34 + 4 + iVar4);
|
|
|
|
iVar1 = iVar1 + local_20 * iVar6;
|
|
|
|
iVar2 = iVar2 + 0x10;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 8);
|
|
|
|
iStack_4c = iVar4;
|
|
|
|
local_40 = local_40 + 1;
|
|
|
|
local_5c = iVar2;
|
|
|
|
local_3c = local_3c + 0x10;
|
|
|
|
} while (local_40 < iVar6);
|
|
|
|
iVar2 = *(int *)(local_34 + 8 + iVar4);
|
|
|
|
iVar3 = local_38;
|
|
|
|
iVar4 = local_34;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar2);
|
|
|
|
iVar3 = *param_2;
|
|
|
|
iVar1 = local_48;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar2 = local_30;
|
|
|
|
} while (iVar1 < iVar3);
|
|
|
|
}
|
|
|
|
iVar3 = FUN_006448b0(param_1,param_2,local_64,local_18,iVar2,local_60);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar2,local_60,local_58,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),local_64,local_18,param_4,local_54);
|
|
|
|
}
|
|
|
|
if (((*(int *)(param_3 + 0x1c) != 0) && ((local_1c == 0 || (iVar2 != 0)))) &&
|
|
|
|
((local_28 == 0 || (local_60 != 0)))) {
|
|
|
|
iVar3 = (iVar2 + 1) % (local_64 + local_1c);
|
|
|
|
param_2[7] = iVar3;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
if (local_60 + 1 == local_18 + local_28) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
param_2[8] = local_60 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_60;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar2 - local_1c;
|
|
|
|
*(int *)(param_3 + 0x10) = local_60 - local_28;
|
|
|
|
*(int *)(param_3 + 4) = iVar2 - local_1c;
|
|
|
|
*(int *)(param_3 + 8) = local_60 - local_28;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < local_64);
|
|
|
|
}
|
|
|
|
if ((local_1c != 0) &&
|
|
|
|
(((*(int **)(param_3 + 0x4ddc) == (int *)0x0 || (**(int **)(param_3 + 0x4ddc) != 0)) &&
|
|
|
|
(FUN_00643250(param_3,param_1,param_2,iVar2,local_60,local_58,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),local_64,local_18,param_4,local_54),
|
|
|
|
*(int *)(param_3 + 0x1c) != 0)))) {
|
|
|
|
iVar3 = (iVar2 + 1) % (local_64 + local_1c);
|
|
|
|
param_2[7] = iVar3;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
if (local_60 + 1 == local_18 + local_28) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
param_2[8] = local_60 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_60;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar2 - local_1c;
|
|
|
|
*(int *)(param_3 + 0x10) = local_60 - local_28;
|
|
|
|
*(int *)(param_3 + 4) = iVar2 - local_1c;
|
|
|
|
*(int *)(param_3 + 8) = local_60 - local_28;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar3 = local_60 + 1;
|
|
|
|
local_60 = iVar3;
|
|
|
|
iVar2 = local_64;
|
|
|
|
} while (iVar3 < local_18);
|
|
|
|
}
|
|
|
|
if (local_28 != 0) {
|
|
|
|
iVar1 = param_2[7];
|
|
|
|
local_5c = iVar1;
|
|
|
|
iVar4 = local_18;
|
|
|
|
for (; local_18 = iVar4, iVar1 < iVar2; iVar1 = iVar1 + 1) {
|
|
|
|
local_60 = iVar3;
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar1,iVar3,local_58,*(undefined4 *)(param_3 + 0x4834),
|
|
|
|
iVar2,iVar4,param_4,local_54);
|
|
|
|
if (((*(int *)(param_3 + 0x1c) != 0) && ((local_1c == 0 || (iVar1 != 0)))) &&
|
|
|
|
((local_28 == 0 || (local_60 != 0)))) {
|
|
|
|
iVar2 = (iVar1 + 1) % (iVar2 + local_1c);
|
|
|
|
param_2[7] = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
if (local_60 + 1 == local_18 + local_28) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
param_2[8] = local_60 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = local_60;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = iVar1 - local_1c;
|
|
|
|
*(int *)(param_3 + 0x10) = local_60 - local_28;
|
|
|
|
*(int *)(param_3 + 4) = iVar1 - local_1c;
|
|
|
|
*(int *)(param_3 + 8) = local_60 - local_28;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar3 = local_60;
|
|
|
|
iVar4 = local_18;
|
|
|
|
}
|
|
|
|
if ((local_1c != 0) &&
|
|
|
|
(local_5c = iVar1,
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar1,iVar3,local_58,*(undefined4 *)(param_3 + 0x4834),
|
|
|
|
iVar2,iVar4,param_4,local_54), *(int *)(param_3 + 0x1c) != 0)) {
|
|
|
|
iVar2 = (local_5c + 1) % (iVar2 + local_1c);
|
|
|
|
param_2[7] = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
if (iVar3 + 1 == iVar4 + local_28) {
|
|
|
|
param_2[8] = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
param_2[8] = iVar3 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[8] = iVar3;
|
|
|
|
}
|
|
|
|
*(int *)(param_3 + 0xc) = local_5c - local_1c;
|
|
|
|
*(int *)(param_3 + 0x10) = iVar3 - local_28;
|
|
|
|
*(int *)(param_3 + 4) = local_5c - local_1c;
|
|
|
|
*(int *)(param_3 + 8) = iVar3 - local_28;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00647b40 at 0x00647B40 (size: 5173) ---
|
|
|
|
|
|
int FUN_00647b40(int param_1,int *param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined4 auStack_dc [4];
|
|
|
|
undefined4 auStack_cc [4];
|
|
|
|
undefined4 auStack_bc [4];
|
|
|
|
int local_ac [4];
|
|
|
|
short local_9c [2];
|
|
|
|
short local_98 [2];
|
|
|
|
short asStack_94 [2];
|
|
|
|
short asStack_90 [2];
|
|
|
|
short asStack_8c [2];
|
|
|
|
short asStack_88 [2];
|
|
|
|
short asStack_84 [2];
|
|
|
|
int local_80;
|
|
|
|
int local_7c;
|
|
|
|
int local_78;
|
|
|
|
int local_74;
|
|
|
|
int local_70;
|
|
|
|
int local_6c;
|
|
|
|
int local_68;
|
|
|
|
int iStack_64;
|
|
|
|
int iStack_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
int local_54;
|
|
|
|
int local_50;
|
|
|
|
int local_4c;
|
|
|
|
char local_48;
|
|
|
|
int iStack_44;
|
|
|
|
int iStack_40;
|
|
|
|
int iStack_3c;
|
|
|
|
int iStack_38;
|
|
|
|
int iStack_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_14 = *(int *)(param_1 + 8);
|
|
|
|
iVar7 = *param_2;
|
|
|
|
local_18 = 0;
|
|
|
|
if (iVar7 < 1) {
|
|
|
|
local_2c = *(int *)(param_3 + 0x74);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_2c = *(int *)(param_3 + 0x74);
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
if ((*(int *)(param_3 + 0x37e0) == 0) && (local_2c != 1)) {
|
|
|
|
param_2[iVar2 + 9] = 0;
|
|
|
|
iVar7 = *param_2;
|
|
|
|
local_2c = *(int *)(param_3 + 0x74);
|
|
|
|
}
|
|
|
|
iVar6 = param_2[0xd];
|
|
|
|
auStack_dc[iVar2] = *(undefined4 *)(iVar1 + 0x10 + iVar6);
|
|
|
|
iVar3 = iVar2 + 1;
|
|
|
|
auStack_cc[iVar2] = *(undefined4 *)(iVar1 + 0xc + iVar6);
|
|
|
|
auStack_bc[iVar2] = *(undefined4 *)(*(int *)(iVar1 + 0x14 + iVar6) + 8);
|
|
|
|
iVar6 = *(int *)(iVar1 + 4 + iVar6) * *(int *)(iVar1 + 8 + iVar6);
|
|
|
|
iVar5 = iVar5 + iVar6;
|
|
|
|
iVar1 = iVar1 + 0x18;
|
|
|
|
local_ac[iVar2] = iVar6;
|
|
|
|
iVar2 = iVar3;
|
|
|
|
} while (iVar3 < iVar7);
|
|
|
|
local_18 = iVar5;
|
|
|
|
}
|
|
|
|
local_54 = *(int *)(param_3 + 0x37b8);
|
|
|
|
iVar1 = *(int *)(param_3 + 0x37bc);
|
|
|
|
if (iVar7 == 1) {
|
|
|
|
local_24 = (local_54 * 8) / *(int *)(param_2[0xd] + 4);
|
|
|
|
local_50 = (iVar1 * 8) / *(int *)(param_2[0xd] + 8);
|
|
|
|
local_1c = *(int *)(param_3 + 0x3c) * local_50;
|
|
|
|
local_6c = (*(int *)(param_3 + 0x4c) + -1 + local_24) / local_24;
|
|
|
|
uVar4 = (int)*(uint *)(param_3 + 0x50) >> 0x1f;
|
|
|
|
local_20 = (int)(((*(uint *)(param_3 + 0x50) ^ uVar4) - uVar4) + -1 + local_50) / local_50;
|
|
|
|
local_18 = 1;
|
|
|
|
local_ac[0] = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_24 = local_54 * 8;
|
|
|
|
local_50 = iVar1 * 8;
|
|
|
|
local_1c = *(int *)(param_3 + 0x3c) * local_50;
|
|
|
|
local_6c = *(int *)(param_3 + 0x78);
|
|
|
|
local_20 = *(int *)(param_3 + 0x7c);
|
|
|
|
}
|
|
|
|
if ((local_54 == 1) && (iVar1 == 1)) {
|
|
|
|
local_48 = '\0';
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0;
|
|
|
|
local_48 = '\x01';
|
|
|
|
if (0 < *(int *)(param_3 + 0x37c0)) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_48 = '\x01';
|
|
|
|
do {
|
|
|
|
local_80 = local_50;
|
|
|
|
local_7c = local_24;
|
|
|
|
if (local_48 == '\0') {
|
|
|
|
goto LAB_00647cf3;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(*(int *)(param_3 + 0x37cc) + 4 + iVar5);
|
|
|
|
if (iVar2 != *(int *)(*(int *)(param_3 + 0x37cc) + 8 + iVar5)) {
|
|
|
|
local_48 = '\0';
|
|
|
|
}
|
|
|
|
if ((iVar2 != 1) && (iVar2 != 2)) {
|
|
|
|
local_48 = '\0';
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < *(int *)(param_3 + 0x37c0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_00647cf3:
|
|
|
|
local_24 = local_24 / param_4;
|
|
|
|
local_28 = *(int *)(param_3 + 4) / local_24;
|
|
|
|
iVar7 = (local_24 + -1 + *(int *)(param_3 + 0xc)) / local_24;
|
|
|
|
local_50 = local_50 / param_4;
|
|
|
|
iVar5 = *(int *)(param_3 + 8) / local_50;
|
|
|
|
local_50 = (local_50 + -1 + *(int *)(param_3 + 0x10)) / local_50;
|
|
|
|
if ((*(int *)(param_3 + 0x4de8) == 1) && (local_54 == 2)) {
|
|
|
|
local_58 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_58 = 0;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_3 + 0x4de8) == 1) && (iVar1 == 2)) {
|
|
|
|
local_4c = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_4c = 0;
|
|
|
|
}
|
|
|
|
if (local_28 != 0) {
|
|
|
|
local_28 = local_28 - local_58;
|
|
|
|
}
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
iVar5 = iVar5 - local_4c;
|
|
|
|
}
|
|
|
|
if (iVar7 < local_6c) {
|
|
|
|
iVar7 = iVar7 + local_58;
|
|
|
|
}
|
|
|
|
if (local_50 < local_20) {
|
|
|
|
local_50 = local_50 + local_4c;
|
|
|
|
}
|
|
|
|
iVar1 = param_2[8];
|
|
|
|
if (param_2[8] <= iVar5) {
|
|
|
|
iVar1 = iVar5;
|
|
|
|
}
|
|
|
|
if ((local_2c == 1) && (*(int *)(param_1 + 0x38) != 0)) {
|
|
|
|
if ((param_2[7] == 0) && (iVar2 = 0, 0 < iVar1)) {
|
|
|
|
local_80 = *(int *)(param_3 + 0x4834);
|
|
|
|
local_74 = iVar5;
|
|
|
|
local_70 = iVar7;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < iVar7) {
|
|
|
|
local_7c = iVar2;
|
|
|
|
local_78 = iVar1;
|
|
|
|
do {
|
|
|
|
iVar2 = local_80;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
if (0 < iVar1) {
|
|
|
|
local_68 = iVar5;
|
|
|
|
local_6c = iVar7;
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
iVar7 = 0;
|
|
|
|
if (0 < local_ac[iVar6]) {
|
|
|
|
iVar1 = param_2[iVar6 + 9];
|
|
|
|
do {
|
|
|
|
local_98[0] = (short)iVar1;
|
|
|
|
iVar5 = (**(code **)(local_14 + 0xf8))
|
|
|
|
(param_1,auStack_cc[iVar6],auStack_dc[iVar6],local_98,iVar2);
|
|
|
|
iVar1 = (int)local_98[0];
|
|
|
|
param_2[iVar6 + 9] = iVar1;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_ac[iVar6]);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
iVar5 = local_68;
|
|
|
|
} while (iVar6 < iVar1);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_006448b0(param_1,param_2,iVar7,local_20,iVar5,local_7c);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar1 = local_78;
|
|
|
|
iVar2 = local_7c;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar1);
|
|
|
|
local_6c = iVar7;
|
|
|
|
iVar7 = local_70;
|
|
|
|
iVar5 = local_74;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_2[7] == 0) {
|
|
|
|
local_5c = *(int *)(param_3 + 0x4830);
|
|
|
|
if (*(int *)(local_5c + iVar1 * 0x28) == -1) {
|
|
|
|
iVar2 = iVar1 * 0x28;
|
|
|
|
local_54 = iVar1;
|
|
|
|
do {
|
|
|
|
iVar2 = iVar2 + -0x28;
|
|
|
|
local_54 = local_54 + -1;
|
|
|
|
} while (*(int *)(local_5c + iVar2) == -1);
|
|
|
|
iVar2 = FUN_006446e0(local_54,param_1,param_2,param_3);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
if (local_54 < iVar1) {
|
|
|
|
local_30 = *(int *)(param_3 + 0x4834);
|
|
|
|
local_78 = iVar1;
|
|
|
|
local_74 = iVar5;
|
|
|
|
local_70 = iVar7;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
do {
|
|
|
|
if (0 < iVar7) {
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
iVar2 = local_30;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_2c = iVar1;
|
|
|
|
iVar6 = 0;
|
|
|
|
local_6c = iVar7;
|
|
|
|
do {
|
|
|
|
if (0 < local_ac[iVar6]) {
|
|
|
|
iVar7 = param_2[iVar6 + 9];
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
local_9c[0] = (short)iVar7;
|
|
|
|
iVar5 = (**(code **)(local_14 + 0xf8))
|
|
|
|
(param_1,auStack_cc[iVar6],auStack_dc[iVar6],local_9c,iVar2)
|
|
|
|
;
|
|
|
|
iVar7 = (int)local_9c[0];
|
|
|
|
param_2[iVar6 + 9] = iVar7;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < local_ac[iVar6]);
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar1 = local_2c;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
}
|
|
|
|
iVar5 = FUN_006448b0(param_1,param_2,iVar7,local_20,iVar1,local_54);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar7);
|
|
|
|
}
|
|
|
|
local_54 = local_54 + 1;
|
|
|
|
FUN_006447f0(local_54,param_1,param_2,param_3);
|
|
|
|
} while (local_54 < local_78);
|
|
|
|
local_6c = iVar7;
|
|
|
|
iVar1 = local_78;
|
|
|
|
iVar7 = local_70;
|
|
|
|
iVar5 = local_74;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_006446e0(iVar1,param_1,param_2,param_3);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (iVar1 < local_50) {
|
|
|
|
local_54 = local_58 + iVar7;
|
|
|
|
local_68 = local_6c << 4;
|
|
|
|
local_7c = local_6c << 7;
|
|
|
|
local_80 = local_58 + -1 + iVar7;
|
|
|
|
local_78 = iVar1;
|
|
|
|
local_74 = iVar5;
|
|
|
|
local_70 = iVar7;
|
|
|
|
do {
|
|
|
|
iVar7 = param_2[7];
|
|
|
|
if (iVar7 < local_28) {
|
|
|
|
local_30 = *(int *)(param_3 + 0x4834);
|
|
|
|
iVar1 = local_6c;
|
|
|
|
do {
|
|
|
|
iVar2 = local_30;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_2c = iVar7;
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
if (0 < local_ac[iVar6]) {
|
|
|
|
iVar7 = param_2[iVar6 + 9];
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
asStack_94[0] = (short)iVar7;
|
|
|
|
iVar5 = (**(code **)(local_14 + 0xf8))
|
|
|
|
(param_1,auStack_cc[iVar6],auStack_dc[iVar6],asStack_94,iVar2);
|
|
|
|
iVar7 = (int)asStack_94[0];
|
|
|
|
param_2[iVar6 + 9] = iVar7;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < local_ac[iVar6]);
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar1 = local_6c;
|
|
|
|
iVar7 = local_2c;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
}
|
|
|
|
iVar5 = FUN_006448b0(param_1,param_2,iVar1,local_20,iVar7,local_78);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_28);
|
|
|
|
iVar7 = param_2[7];
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0x4ddc) == 0) {
|
|
|
|
iVar7 = iVar7 - local_28;
|
|
|
|
if (iVar7 < 1) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x2c) =
|
|
|
|
(local_78 - local_74) * (local_1c / param_4) + *(int *)(param_3 + 0x20) +
|
|
|
|
iVar7 * *(int *)(param_3 + 0x30) * local_24;
|
|
|
|
iVar7 = param_2[7];
|
|
|
|
}
|
|
|
|
if (iVar7 <= local_28) {
|
|
|
|
iVar7 = local_28;
|
|
|
|
}
|
|
|
|
if (iVar7 < local_70) {
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_5c = *(int *)(param_3 + 0x4834);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
if (0 < iVar1) {
|
|
|
|
local_2c = iVar7;
|
|
|
|
local_30 = iVar7 << 4;
|
|
|
|
do {
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)
|
|
|
|
) {
|
|
|
|
iVar7 = 0;
|
|
|
|
if (0 < local_ac[iVar5]) {
|
|
|
|
iStack_34 = iVar5 * 2;
|
|
|
|
iVar1 = local_5c;
|
|
|
|
do {
|
|
|
|
asStack_90[0] = (short)*(undefined4 *)((int)param_2 + iStack_34 * 2 + 0x24);
|
|
|
|
iVar2 = (**(code **)(local_14 + 0xf4))
|
|
|
|
(param_1,auStack_cc[iVar5],auStack_dc[iVar5],asStack_90,iVar1)
|
|
|
|
;
|
|
|
|
*(int *)((int)param_2 + iStack_34 * 2 + 0x24) = (int)asStack_90[0];
|
|
|
|
(**(code **)(local_14 + 0x110))(iVar1,auStack_bc[iVar5]);
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 0x80;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_ac[iVar5]);
|
|
|
|
local_5c = iVar1;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iStack_38 = 0;
|
|
|
|
iVar2 = iVar5 * 0x18;
|
|
|
|
iVar7 = *(int *)(iVar2 + 8 + param_2[0xd]);
|
|
|
|
if (0 < iVar7) {
|
|
|
|
iVar6 = *(int *)(iVar2 + 4 + param_2[0xd]);
|
|
|
|
iVar1 = 0;
|
|
|
|
iStack_44 = iVar5 * 2;
|
|
|
|
iStack_64 = iVar5;
|
|
|
|
do {
|
|
|
|
if (0 < iVar6) {
|
|
|
|
iStack_38 = iVar1;
|
|
|
|
iStack_3c = 0;
|
|
|
|
iStack_40 = 0;
|
|
|
|
iStack_34 = iVar2;
|
|
|
|
do {
|
|
|
|
asStack_8c[0] = (short)*(undefined4 *)((int)param_2 + iStack_44 * 2 + 0x24);
|
|
|
|
iVar7 = (**(code **)(local_14 + 0xf4))
|
|
|
|
(param_1,auStack_cc[iStack_64],auStack_dc[iStack_64],
|
|
|
|
asStack_8c,local_5c);
|
|
|
|
*(int *)((int)param_2 + iStack_44 * 2 + 0x24) = (int)asStack_8c[0];
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar7 = *(int *)(iStack_34 + 4 + param_2[0xd]);
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar5 = iVar7 * local_30 +
|
|
|
|
*(int *)(*(int *)(param_3 + 0x4ddc) + 4 + iStack_44 * 2) +
|
|
|
|
(local_78 * *(int *)(iStack_34 + 8 + param_2[0xd]) + iStack_38) *
|
|
|
|
iVar7 * local_7c + iStack_3c;
|
|
|
|
iVar7 = local_5c;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(iVar5,iVar7,0x10);
|
|
|
|
iVar2 = param_2[0xd];
|
|
|
|
iVar6 = *(int *)(iStack_34 + 4 + iVar2);
|
|
|
|
iVar5 = iVar5 + local_68 * iVar6;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < 8);
|
|
|
|
iStack_60 = iVar2;
|
|
|
|
iStack_40 = iStack_40 + 1;
|
|
|
|
local_5c = iVar7;
|
|
|
|
iStack_3c = iStack_3c + 0x10;
|
|
|
|
} while (iStack_40 < iVar6);
|
|
|
|
iVar7 = *(int *)(iStack_34 + 8 + iVar2);
|
|
|
|
iVar2 = iStack_34;
|
|
|
|
iVar1 = iStack_38;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar7);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
iVar5 = iStack_64;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar7 = local_2c;
|
|
|
|
} while (iVar5 < iVar1);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_006448b0(param_1,param_2,local_6c,local_20,iVar7,local_78);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
if ((*(int **)(param_3 + 0x4ddc) == (int *)0x0) || (**(int **)(param_3 + 0x4ddc) != 0)) {
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar7,local_78,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),local_6c,local_20,param_4,local_48);
|
|
|
|
}
|
|
|
|
if ((((*(int *)(param_3 + 0x1c) != 0) && (*(int *)(param_3 + 0x74) != 1)) &&
|
|
|
|
((local_58 == 0 || (iVar7 != local_28)))) &&
|
|
|
|
((local_4c == 0 || (local_78 != local_74)))) {
|
|
|
|
if (iVar7 != local_80) {
|
|
|
|
param_2[7] = (iVar7 + 1) % local_54;
|
|
|
|
param_2[8] = local_78;
|
|
|
|
*(int *)(param_3 + 0xc) = iVar7 - local_58;
|
|
|
|
*(int *)(param_3 + 0x10) = local_78 - local_4c;
|
|
|
|
*(int *)(param_3 + 4) = iVar7 - local_58;
|
|
|
|
*(int *)(param_3 + 8) = local_78 - local_4c;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
param_2[7] = 0;
|
|
|
|
param_2[8] = 0;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_70);
|
|
|
|
}
|
|
|
|
if (((local_58 != 0) &&
|
|
|
|
(FUN_00643250(param_3,param_1,param_2,iVar7,local_78,local_18,
|
|
|
|
*(undefined4 *)(param_3 + 0x4834),local_20,local_20,param_4,local_48),
|
|
|
|
*(int *)(param_3 + 0x1c) != 0)) && (*(int *)(param_3 + 0x74) != 1)) {
|
|
|
|
param_2[7] = 0;
|
|
|
|
param_2[8] = 0;
|
|
|
|
}
|
|
|
|
iVar1 = local_78 + 1;
|
|
|
|
if (iVar1 < local_20) {
|
|
|
|
if ((*(int *)(param_3 + 0x74) == 1) && (*(int *)(param_1 + 0x38) != 0)) {
|
|
|
|
if (local_70 < local_6c) {
|
|
|
|
local_30 = *(int *)(param_3 + 0x4834);
|
|
|
|
iStack_60 = iVar1;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
iVar1 = local_70;
|
|
|
|
do {
|
|
|
|
iVar2 = local_30;
|
|
|
|
iVar5 = *param_2;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_2c = iVar1;
|
|
|
|
iVar6 = 0;
|
|
|
|
local_6c = iVar7;
|
|
|
|
do {
|
|
|
|
if (0 < local_ac[iVar6]) {
|
|
|
|
iVar7 = param_2[iVar6 + 9];
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
asStack_84[0] = (short)iVar7;
|
|
|
|
iVar5 = (**(code **)(local_14 + 0xf8))
|
|
|
|
(param_1,auStack_cc[iVar6],auStack_dc[iVar6],asStack_84,
|
|
|
|
iVar2);
|
|
|
|
iVar7 = (int)asStack_84[0];
|
|
|
|
param_2[iVar6 + 9] = iVar7;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < local_ac[iVar6]);
|
|
|
|
iVar5 = *param_2;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
iVar1 = local_2c;
|
|
|
|
} while (iVar6 < iVar5);
|
|
|
|
}
|
|
|
|
iVar5 = FUN_006448b0(param_1,param_2,iVar7,local_20,iVar1,local_78);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar7);
|
|
|
|
local_6c = iVar7;
|
|
|
|
iVar1 = iStack_60;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(*(int *)(param_3 + 0x4830) + 0x28 + local_78 * 0x28) == -1) {
|
|
|
|
if (local_70 < local_6c) {
|
|
|
|
iStack_64 = *(int *)(param_3 + 0x4834);
|
|
|
|
iStack_60 = iVar1;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
iVar5 = local_70;
|
|
|
|
do {
|
|
|
|
iVar2 = iStack_64;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
if (0 < iVar1) {
|
|
|
|
local_5c = iVar5;
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
iVar7 = 0;
|
|
|
|
if (0 < local_ac[iVar6]) {
|
|
|
|
iVar1 = param_2[iVar6 + 9];
|
|
|
|
do {
|
|
|
|
asStack_88[0] = (short)iVar1;
|
|
|
|
iVar5 = (**(code **)(local_14 + 0xf8))
|
|
|
|
(param_1,auStack_cc[iVar6],auStack_dc[iVar6],asStack_88,
|
|
|
|
iVar2);
|
|
|
|
iVar1 = (int)asStack_88[0];
|
|
|
|
param_2[iVar6 + 9] = iVar1;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
return -0x15;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_ac[iVar6]);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar7 = local_6c;
|
|
|
|
iVar5 = local_5c;
|
|
|
|
} while (iVar6 < iVar1);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_006448b0(param_1,param_2,iVar7,local_20,iVar5,local_78);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return -0x19;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar1 = iStack_60;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
FUN_006447f0(iVar1,param_1,param_2,param_3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = FUN_006446e0(iVar1,param_1,param_2,param_3);
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
return iVar7;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_78 = iVar1;
|
|
|
|
iVar7 = local_70;
|
|
|
|
} while (iVar1 < local_50);
|
|
|
|
}
|
|
|
|
iVar5 = local_6c;
|
|
|
|
if ((local_4c != 0) && (local_58 = local_58 + iVar7, iVar7 = local_28, local_28 < local_58)) {
|
|
|
|
do {
|
|
|
|
local_78 = iVar1;
|
|
|
|
FUN_00643250(param_3,param_1,param_2,iVar7,local_78,local_18,*(undefined4 *)(param_3 + 0x4834)
|
|
|
|
,iVar5,local_20,param_4,local_48);
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
iVar1 = local_78;
|
|
|
|
} while (iVar7 < local_58);
|
|
|
|
}
|
|
|
|
(**(code **)(local_14 + 0x18))();
|
|
|
|
if ((*(int *)(param_3 + 0x37d8) < *(int *)(param_3 + 0x37c0)) && (*(int *)(param_3 + 0x74) == 1))
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00648fe0 at 0x00648FE0 (size: 1341) ---
|
|
|
|
|
|
int FUN_00648fe0(undefined4 *param_1,int param_2,undefined4 param_3,int *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_2 + 8);
|
|
|
|
*param_1 = 0;
|
|
|
|
if (param_4[5] == 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 0x48) = *(undefined4 *)(iVar1 + 0x24);
|
|
|
|
*(undefined4 *)(iVar1 + 0x4c) = *(undefined4 *)(iVar1 + 0x28);
|
|
|
|
*(undefined4 *)(iVar1 + 0x50) = *(undefined4 *)(iVar1 + 0x2c);
|
|
|
|
*(undefined4 *)(iVar1 + 0x54) = *(undefined4 *)(iVar1 + 0x30);
|
|
|
|
*(undefined4 *)(iVar1 + 0x110) = *(undefined4 *)(iVar1 + 0x108);
|
|
|
|
}
|
|
|
|
else if (param_4[5] == 1) {
|
|
|
|
*(undefined4 *)(iVar1 + 0x48) = *(undefined4 *)(iVar1 + 0x34);
|
|
|
|
*(undefined4 *)(iVar1 + 0x4c) = *(undefined4 *)(iVar1 + 0x38);
|
|
|
|
*(undefined4 *)(iVar1 + 0x50) = *(undefined4 *)(iVar1 + 0x3c);
|
|
|
|
*(undefined4 *)(iVar1 + 0x54) = *(undefined4 *)(iVar1 + 0x40);
|
|
|
|
*(undefined4 *)(iVar1 + 0x110) = *(undefined4 *)(iVar1 + 0x10c);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar1 + 0x48) = *(undefined4 *)(iVar1 + 0x24);
|
|
|
|
*(undefined4 *)(iVar1 + 0x4c) = *(undefined4 *)(iVar1 + 0x28);
|
|
|
|
*(undefined4 *)(iVar1 + 0x50) = *(undefined4 *)(iVar1 + 0x2c);
|
|
|
|
*(undefined4 *)(iVar1 + 0x54) = *(undefined4 *)(iVar1 + 0x30);
|
|
|
|
*(undefined4 *)(iVar1 + 0x110) = *(undefined4 *)(iVar1 + 0x108);
|
|
|
|
}
|
|
|
|
iVar2 = param_4[3];
|
|
|
|
iVar6 = param_4[0x13];
|
|
|
|
if ((iVar2 < iVar6) && (iVar2 != 0)) {
|
|
|
|
local_14 = param_4[4];
|
|
|
|
iVar5 = param_4[0x14];
|
|
|
|
iVar7 = param_4[2];
|
|
|
|
iVar4 = param_4[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_14 = param_4[4];
|
|
|
|
iVar5 = param_4[0x14];
|
|
|
|
if ((local_14 < iVar5) && (local_14 != 0)) {
|
|
|
|
iVar7 = param_4[2];
|
|
|
|
iVar4 = param_4[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = param_4[2];
|
|
|
|
if (iVar7 < 1) {
|
|
|
|
iVar4 = param_4[1];
|
|
|
|
if (iVar4 < 1) {
|
|
|
|
iVar2 = *param_4;
|
|
|
|
if ((iVar2 == 0x12) || (iVar2 == 0x13)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647040(param_2,param_3,param_4,8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00644930(param_2,param_3,param_4,8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar2 == 0x10) || (iVar2 == 0x11)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647040(param_2,param_3,param_4,4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00644930(param_2,param_3,param_4,4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar2 == 0xe) || (iVar2 == 0xf)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647040(param_2,param_3,param_4,2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00644930(param_2,param_3,param_4,2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647040(param_2,param_3,param_4,1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00644930(param_2,param_3,param_4,1);
|
|
|
|
}
|
|
|
|
goto LAB_006491b6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = param_4[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (iVar2 <= iVar6) {
|
|
|
|
iVar6 = iVar2;
|
|
|
|
}
|
|
|
|
param_4[3] = iVar6;
|
|
|
|
if (local_14 <= iVar5) {
|
|
|
|
iVar5 = local_14;
|
|
|
|
}
|
|
|
|
param_4[4] = iVar5;
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
param_4[1] = iVar4;
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
param_4[2] = iVar7;
|
|
|
|
if (param_4[0x120c] == 0) {
|
|
|
|
puVar3 = (undefined4 *)FUN_005df0f5(0x50000);
|
|
|
|
param_4[0x120c] = (int)puVar3;
|
|
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
|
|
return -5;
|
|
|
|
}
|
|
|
|
iVar2 = *param_4;
|
|
|
|
if ((((iVar2 == 2) || (iVar2 == 6)) || (iVar2 == 0xe)) || ((iVar2 == 0x10 || (iVar2 == 0x12))))
|
|
|
|
{
|
|
|
|
*puVar3 = *(undefined4 *)(param_2 + 0x1c);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar3 = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 4) = 0;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 8) = 0;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0xc) = 0;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0x10) = 0;
|
|
|
|
iVar2 = param_4[0x120c];
|
|
|
|
*(undefined4 *)(iVar2 + 0x18) = 0;
|
|
|
|
*(undefined4 *)(iVar2 + 0x1c) = 0;
|
|
|
|
*(undefined4 *)(param_4[0x120c] + 0x20) = 0;
|
|
|
|
*(undefined1 *)(param_4[0x120c] + 0x24) = *(undefined1 *)(param_2 + 0x30);
|
|
|
|
iVar6 = 1;
|
|
|
|
iVar2 = 0x28;
|
|
|
|
do {
|
|
|
|
iVar6 = iVar6 + 5;
|
|
|
|
*(undefined4 *)(iVar2 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
*(undefined4 *)(iVar2 + 0x28 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
*(undefined4 *)(iVar2 + 0x50 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
*(undefined4 *)(iVar2 + 0x78 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
*(undefined4 *)(iVar2 + 0xa0 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
iVar2 = iVar2 + 200;
|
|
|
|
} while (iVar6 < 0x1ffb);
|
|
|
|
*(undefined4 *)(iVar6 * 0x28 + param_4[0x120c]) = 0xffffffff;
|
|
|
|
}
|
|
|
|
iVar2 = *param_4;
|
|
|
|
if ((iVar2 == 0x12) || (iVar2 == 0x13)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647b40(param_2,param_3,param_4,8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00645ce0(param_2,param_3,param_4,8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar2 == 0x10) || (iVar2 == 0x11)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647b40(param_2,param_3,param_4,4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00645ce0(param_2,param_3,param_4,4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar2 == 0xe) || (iVar2 == 0xf)) {
|
|
|
|
if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647b40(param_2,param_3,param_4,2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00645ce0(param_2,param_3,param_4,2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_4[0x1378] == 0) {
|
|
|
|
iVar2 = FUN_00647b40(param_2,param_3,param_4,1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00645ce0(param_2,param_3,param_4,1);
|
|
|
|
}
|
|
|
|
LAB_006491b6:
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
FUN_00649650(param_2);
|
|
|
|
}
|
|
|
|
(**(code **)(iVar1 + 0x18))();
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00649520 at 0x00649520 (size: 66) ---
|
|
|
|
|
|
void FUN_00649520(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_1[0xf] == 0) {
|
|
|
|
param_1[4] = param_1[5];
|
|
|
|
param_1[6] = param_1[5] + param_1[8];
|
|
|
|
param_1[9] = param_1[8];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[4] = param_1 + 0x410;
|
|
|
|
param_1[6] = param_1 + 0x410;
|
|
|
|
param_1[9] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0xc) = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00649570 at 0x00649570 (size: 91) ---
|
|
|
|
|
|
undefined4 FUN_00649570(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int local_14 [2];
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
iVar1 = FUN_00619530(*(undefined4 *)(param_1 + 0x3c),param_1 + 0x40,0x1000,local_14);
|
|
|
|
if ((iVar1 == 0) || (local_14[0] != 0)) {
|
|
|
|
*(int *)(param_1 + 0x24) = local_14[0];
|
|
|
|
*(int *)(param_1 + 0x10) = param_1 + 0x40;
|
|
|
|
*(int *)(param_1 + 0x18) = local_14[0] + 0x40 + param_1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0xffffffe9;
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006495d0 at 0x006495D0 (size: 119) ---
|
|
|
|
|
|
int FUN_006495d0(int param_1,uint param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
*param_3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x3c) == 0) {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x24);
|
|
|
|
if (uVar2 < param_2) {
|
|
|
|
iVar1 = FUN_00649570(param_1);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x24);
|
|
|
|
if (uVar2 < param_2) {
|
|
|
|
return -0x18;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x10);
|
|
|
|
if (param_2 <= uVar2) {
|
|
|
|
*(uint *)(param_1 + 0x10) = param_2 + iVar1;
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + param_2;
|
|
|
|
*(uint *)(param_1 + 0x24) = uVar2 - param_2;
|
|
|
|
*param_3 = iVar1;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return -5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00649650 at 0x00649650 (size: 12) ---
|
|
|
|
|
|
void FUN_00649650(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00649660 at 0x00649660 (size: 190) ---
|
|
|
|
|
|
int FUN_00649660(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
char *pcVar4;
|
|
|
|
|
|
|
|
pcVar4 = *(char **)(param_1 + 0x10);
|
|
|
|
do {
|
|
|
|
while( true ) {
|
|
|
|
if (*(char **)(param_1 + 0x18) <= pcVar4) {
|
|
|
|
if (*(int *)(param_1 + 0x3c) == 0) {
|
|
|
|
return -5;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00649570(param_1);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bVar1 = false;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x24);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x1c);
|
|
|
|
pcVar4 = *(char **)(param_1 + 0x10);
|
|
|
|
do {
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
*(int *)(param_1 + 0x24) = iVar2;
|
|
|
|
*(int *)(param_1 + 0x1c) = iVar3;
|
|
|
|
*(char **)(param_1 + 0x10) = pcVar4 + 1;
|
|
|
|
if (*pcVar4 == -1) {
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
} while ((0 < iVar2) && (pcVar4 = pcVar4 + 1, !bVar1));
|
|
|
|
}
|
|
|
|
if (iVar2 < 1) break;
|
|
|
|
LAB_006496c7:
|
|
|
|
pcVar4 = *(char **)(param_1 + 0x10);
|
|
|
|
if (*pcVar4 != -1) {
|
|
|
|
if (*pcVar4 != '\0') {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
|
|
|
|
pcVar4 = pcVar4 + 1;
|
|
|
|
*(char **)(param_1 + 0x10) = pcVar4;
|
|
|
|
*(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x3c) == 0) {
|
|
|
|
return -5;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00649570(param_1);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
if (bVar1) goto LAB_006496c7;
|
|
|
|
pcVar4 = *(char **)(param_1 + 0x10);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00649730 at 0x00649730 (size: 3438) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x006499f2) */
|
|
|
|
|
|
|
|
undefined4 FUN_00649730(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
bool bVar4;
|
|
|
|
bool bVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int local_28;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x37f0);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x58);
|
|
|
|
bVar5 = true;
|
|
|
|
if ((((iVar2 == 4) || (iVar2 == 1)) || (iVar2 == 5)) ||
|
|
|
|
(((iVar2 == 0xff || (*(int *)(param_1 + 0x34) == 4)) || (*(int *)(param_1 + 0x34) == 3)))) {
|
|
|
|
bVar5 = false;
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = 1;
|
|
|
|
}
|
|
|
|
iVar10 = 0;
|
|
|
|
bVar4 = false;
|
|
|
|
local_28 = 0;
|
|
|
|
iVar8 = *(int *)(param_1 + 0x37c0);
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x37b8) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x37bc) = 0;
|
|
|
|
if (0 < iVar8) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar9 = 0;
|
|
|
|
local_28 = 0;
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
iVar3 = *(int *)(iVar9 + 4 + iVar6);
|
|
|
|
if (local_28 < iVar3) {
|
|
|
|
*(int *)(param_1 + 0x37b8) = iVar3;
|
|
|
|
local_28 = iVar3;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(iVar9 + 8 + iVar6);
|
|
|
|
if (iVar10 < iVar3) {
|
|
|
|
*(int *)(param_1 + 0x37bc) = iVar3;
|
|
|
|
iVar10 = iVar3;
|
|
|
|
}
|
|
|
|
if ((*(int *)(iVar9 + 4 + iVar6) != 1) || (*(int *)(iVar9 + 8 + iVar6) != 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 3) {
|
|
|
|
bVar4 = false;
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar4 = true;
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 0x10;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < iVar8);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x74) == 1) {
|
|
|
|
*(undefined4 *)(param_1 + 0x37b0) = 8;
|
|
|
|
*(undefined4 *)(param_1 + 0x37b4) = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)(param_1 + 0x37b4) = local_28 * 8;
|
|
|
|
*(int *)(param_1 + 0x37b0) = iVar10 * 8;
|
|
|
|
}
|
|
|
|
iVar6 = (*(int *)(param_1 + 0x4c) + -1 + local_28 * 8) / (local_28 * 8);
|
|
|
|
*(int *)(param_1 + 0x78) = iVar6;
|
|
|
|
iVar10 = (*(int *)(param_1 + 0x50) + -1 + iVar10 * 8) / (iVar10 * 8);
|
|
|
|
*(int *)(param_1 + 0x7c) = iVar10;
|
|
|
|
*(int *)(param_1 + 0x37c4) = iVar6;
|
|
|
|
*(int *)(param_1 + 0x37c8) = iVar10 * iVar6;
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
if ((((iVar8 == 3) && (iVar2 == 3)) && (*(int *)(param_1 + 0x34) == 3)) &&
|
|
|
|
(((iVar2 = *(int *)(param_1 + 0x37cc), *(int *)(iVar2 + 4) != 2 || (*(int *)(iVar2 + 8) != 1))
|
|
|
|
|| (((*(int *)(iVar2 + 0x14) != 1 ||
|
|
|
|
((*(int *)(iVar2 + 0x18) != 1 || (*(int *)(iVar2 + 0x24) != 1)))) ||
|
|
|
|
(*(int *)(iVar2 + 0x28) != 1)))))) {
|
|
|
|
return 0xfffffff8;
|
|
|
|
}
|
|
|
|
if ((0 < iVar8) && (iVar8 < 0x100)) {
|
|
|
|
if ((*(int *)(param_1 + 0x74) == 0) || (*(int *)(param_1 + 0x4de0) != 0)) {
|
|
|
|
if ((bVar4) && (bVar5)) {
|
|
|
|
if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 1) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if (((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 2)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 3;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00635780;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x14) == 1 &&
|
|
|
|
(((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)))))) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 5;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00637d10;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if ((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 2)) &&
|
|
|
|
((*(int *)(iVar2 + 0x14) == 1 &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))))) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 4;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00636820;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 6;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00638850;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 5) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if (((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 2)) &&
|
|
|
|
((*(int *)(iVar2 + 0x14) == 1 &&
|
|
|
|
(((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)))))) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 8;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063ab70;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 9;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00639ce0;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 4)) &&
|
|
|
|
(*(int *)(param_1 + 0x34) == 5)) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if (((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))) &&
|
|
|
|
((*(int *)(iVar2 + 0x28) == 1 &&
|
|
|
|
((*(int *)(iVar2 + 0x34) == 2 && (*(int *)(iVar2 + 0x38) == 1)))))) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0xc;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063c510;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((*(int *)(iVar2 + 4) == 2) &&
|
|
|
|
(((*(int *)(iVar2 + 8) == 2 && (*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x18) == 1)))) &&
|
|
|
|
(((*(int *)(iVar2 + 0x24) == 1 && (*(int *)(iVar2 + 0x28) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x34) == 2 && (*(int *)(iVar2 + 0x38) == 2)))))) {
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0xb;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063d690;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640f80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((!bVar4) || (bVar5)) {
|
|
|
|
if ((bVar4) || (!bVar5)) {
|
|
|
|
if ((!bVar4) && (!bVar5)) {
|
|
|
|
if ((iVar8 == 1) && (*(int *)(param_1 + 0x30) == 1)) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f760;
|
|
|
|
iVar8 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
if ((iVar8 == 1) && (*(int *)(param_1 + 0x30) != 1)) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
else if (iVar8 == 2) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 1)) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 2)) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if (((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)))) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0x13;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f350;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0xf;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063e3f0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 5) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0xd;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063dcb0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063f8d0;
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0xe;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063e090;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 1) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 1;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00636e80;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 2;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_006372a0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 5) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 7;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_006392a0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 4)) &&
|
|
|
|
(*(int *)(param_1 + 0x34) == 5)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 10;
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063b920;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 1)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37cc);
|
|
|
|
if ((((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 2)) &&
|
|
|
|
(*(int *)(iVar2 + 0x14) == 1)) &&
|
|
|
|
(((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)))) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0x10;
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063e8c0;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((*(int *)(iVar2 + 4) == 2) && (*(int *)(iVar2 + 8) == 1)) &&
|
|
|
|
((*(int *)(iVar2 + 0x14) == 1 &&
|
|
|
|
(((*(int *)(iVar2 + 0x18) == 1 && (*(int *)(iVar2 + 0x24) == 1)) &&
|
|
|
|
(*(int *)(iVar2 + 0x28) == 1)))))) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0x11;
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 0) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_0063eed0;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 3)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 4) && (*(int *)(param_1 + 0x30) == 4)) {
|
|
|
|
if (*(int *)(param_1 + 0x4de0) == 0) {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_00633470;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x34) == 3) {
|
|
|
|
*(undefined1 **)(iVar1 + 0xa0) = &LAB_00640fe0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(code **)(iVar1 + 0xa0) = FUN_0063fc40;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 0xfffffff2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a4c0 at 0x0064A4C0 (size: 28) ---
|
|
|
|
|
|
void FUN_0064a4c0(undefined1 param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined1 *)*param_2;
|
|
|
|
*param_2 = (int)(puVar1 + 1);
|
|
|
|
*puVar1 = 0xff;
|
|
|
|
puVar1 = (undefined1 *)*param_2;
|
|
|
|
*param_2 = (int)(puVar1 + 1);
|
|
|
|
*puVar1 = param_1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a4e0 at 0x0064A4E0 (size: 40) ---
|
|
|
|
|
|
void FUN_0064a4e0(undefined4 param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined1 *)*param_2;
|
|
|
|
*param_2 = (int)(puVar1 + 1);
|
|
|
|
*puVar1 = (char)((uint)param_1 >> 8);
|
|
|
|
puVar1 = (undefined1 *)*param_2;
|
|
|
|
*param_2 = (int)(puVar1 + 1);
|
|
|
|
*puVar1 = (char)param_1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a510 at 0x0064A510 (size: 283) ---
|
|
|
|
|
|
void FUN_0064a510(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *puVar2;
|
|
|
|
undefined1 *local_24;
|
|
|
|
undefined1 local_20 [24];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x37f0);
|
|
|
|
local_24 = local_20;
|
|
|
|
FUN_0064a4c0(0xe0,&local_24);
|
|
|
|
FUN_0064a4e0(0x10,&local_24);
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x4a;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x46;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x49;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x46;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0;
|
|
|
|
local_24 = puVar2;
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_1 + 0x4dfc),&local_24);
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = *(undefined1 *)(param_1 + 0x4dfe);
|
|
|
|
local_24 = puVar2;
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_1 + 0x4e00),&local_24);
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_1 + 0x4e02),&local_24);
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0;
|
|
|
|
local_24 = puVar2;
|
|
|
|
(**(code **)(iVar1 + 0x5c))(local_20,0x12,param_1 + 0x37e8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a630 at 0x0064A630 (size: 632) ---
|
|
|
|
|
|
int FUN_0064a630(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int local_a4;
|
|
|
|
undefined1 *local_a0;
|
|
|
|
int local_9c;
|
|
|
|
int local_98;
|
|
|
|
undefined1 *local_94;
|
|
|
|
int local_90;
|
|
|
|
char *local_8c;
|
|
|
|
undefined1 local_88 [80];
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
void *local_14;
|
|
|
|
undefined *puStack_10;
|
|
|
|
undefined *puStack_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
puStack_c = &DAT_00908b0c;
|
|
|
|
puStack_10 = &DAT_005df82c;
|
|
|
|
local_14 = ExceptionList;
|
|
|
|
local_a4 = *(int *)(param_1 + 0x37f0);
|
|
|
|
local_8 = 0;
|
|
|
|
local_a0 = (undefined1 *)0x0;
|
|
|
|
local_9c = 0;
|
|
|
|
if (*(int *)(param_1 + 0x4e04) == 0) {
|
|
|
|
local_8c = s_Intel_R__JPEG_Library__version___00908b40;
|
|
|
|
local_a0 = local_88;
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
(*DAT_008f85a4)(local_a0,0x50);
|
|
|
|
local_38 = FUN_0061d320();
|
|
|
|
local_34 = lstrlenA(local_8c);
|
|
|
|
local_30 = (*DAT_008f85b8)(local_a0 + 4,local_8c,*(undefined4 *)(local_38 + 0x14),&local_a4);
|
|
|
|
local_98 = local_30 + 5;
|
|
|
|
FUN_0064a4c0(0xfe,&local_a0);
|
|
|
|
FUN_0064a4e0(local_98 + -2,&local_a0);
|
|
|
|
if (local_34 < local_30) {
|
|
|
|
local_9c = (**(code **)(local_a4 + 0x5c))(local_88,local_98,param_1 + 0x37e8,&local_a4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = (uint)*(ushort *)(param_1 + 0x4e08);
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
if (0xfffb < uVar2) {
|
|
|
|
ExceptionList = &local_14;
|
|
|
|
*(undefined2 *)(param_1 + 0x4e08) = 0xfffb;
|
|
|
|
uVar2 = 0xfffb;
|
|
|
|
}
|
|
|
|
local_98 = uVar2 + 4;
|
|
|
|
local_a0 = (undefined1 *)FUN_005df0f5(local_98,&local_a4);
|
|
|
|
if (local_a0 == (undefined1 *)0x0) {
|
|
|
|
local_9c = -5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_94 = local_a0;
|
|
|
|
(*DAT_008f85a4)(local_a0,local_98);
|
|
|
|
FUN_0064a4c0(0xfe,&local_94);
|
|
|
|
FUN_0064a4e0(local_98 + -2,&local_94);
|
|
|
|
iVar1 = 0;
|
|
|
|
local_90 = 0;
|
|
|
|
if (*(short *)(param_1 + 0x4e08) != 0) {
|
|
|
|
do {
|
|
|
|
local_94[iVar1] = *(undefined1 *)(iVar1 + *(int *)(param_1 + 0x4e04));
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
local_90 = iVar1;
|
|
|
|
} while (iVar1 < (int)(uint)*(ushort *)(param_1 + 0x4e08));
|
|
|
|
}
|
|
|
|
local_9c = (**(code **)(local_a4 + 0x5c))(local_a0,local_98,param_1 + 0x37e8,&local_a4);
|
|
|
|
if (local_9c == 0) {
|
|
|
|
operator_delete(local_a0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ExceptionList = local_14;
|
|
|
|
return local_9c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a8d0 at 0x0064A8D0 (size: 68) ---
|
|
|
|
|
|
void FUN_0064a8d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *local_14;
|
|
|
|
undefined1 local_10 [8];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 8);
|
|
|
|
local_14 = local_10;
|
|
|
|
FUN_0064a4c0(0xd8,&local_14);
|
|
|
|
(**(code **)(iVar1 + 0x5c))(local_10,2,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a920 at 0x0064A920 (size: 68) ---
|
|
|
|
|
|
void FUN_0064a920(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *local_14;
|
|
|
|
undefined1 local_10 [8];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 8);
|
|
|
|
local_14 = local_10;
|
|
|
|
FUN_0064a4c0(0xd9,&local_14);
|
|
|
|
(**(code **)(iVar1 + 0x5c))(local_10,2,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064a970 at 0x0064A970 (size: 488) ---
|
|
|
|
|
|
void FUN_0064a970(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char *pcVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
char local_324 [780];
|
|
|
|
char *local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
iVar4 = *(int *)(param_1 + 8);
|
|
|
|
local_18 = local_324;
|
|
|
|
iVar1 = *(int *)(param_2 + 0x1c) * 3;
|
|
|
|
FUN_0064a4c0(0xc0,&local_18);
|
|
|
|
FUN_0064a4e0(iVar1 + 8,&local_18);
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\b';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
FUN_0064a4e0(*(undefined4 *)(param_2 + 8),&local_18);
|
|
|
|
FUN_0064a4e0(*(undefined4 *)(param_2 + 4),&local_18);
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(param_2 + 0x1c);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
if (*(int *)(param_2 + 0x1c) == 1) {
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\0';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\x11';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(*(int *)(param_2 + 0x28) + 0xc);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\x01';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = (char)(*(int *)(*(int *)(param_2 + 0x28) + 4) << 4) +
|
|
|
|
(char)*(undefined4 *)(*(int *)(param_2 + 0x28) + 8);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(*(int *)(param_2 + 0x28) + 0xc);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar3 = 2;
|
|
|
|
if (1 < *(int *)(param_2 + 0x1c)) {
|
|
|
|
iVar5 = 0x20;
|
|
|
|
local_14 = iVar4;
|
|
|
|
do {
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = (char)iVar3;
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = (char)(*(int *)(iVar5 + -0xc + *(int *)(param_2 + 0x28)) << 4) +
|
|
|
|
(char)*(undefined4 *)(iVar5 + -8 + *(int *)(param_2 + 0x28));
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar4 = iVar5 + -4;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(iVar4 + *(int *)(param_2 + 0x28));
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar4 = local_14;
|
|
|
|
} while (iVar3 <= *(int *)(param_2 + 0x1c));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(iVar4 + 0x5c))(local_324,iVar1 + 10,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ab60 at 0x0064AB60 (size: 408) ---
|
|
|
|
|
|
void FUN_0064ab60(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char *pcVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
char local_324 [780];
|
|
|
|
char *local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
iVar4 = *(int *)(param_1 + 8);
|
|
|
|
local_18 = local_324;
|
|
|
|
iVar1 = *(int *)(param_2 + 0x1c) * 3;
|
|
|
|
FUN_0064a4c0(0xc2,&local_18);
|
|
|
|
FUN_0064a4e0(iVar1 + 8,&local_18);
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\b';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
FUN_0064a4e0(*(undefined4 *)(param_2 + 8),&local_18);
|
|
|
|
FUN_0064a4e0(*(undefined4 *)(param_2 + 4),&local_18);
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(param_2 + 0x1c);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
if (*(int *)(param_2 + 0x1c) == 1) {
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\0';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = '\x11';
|
|
|
|
local_18 = pcVar2;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(*(int *)(param_2 + 0x28) + 0xc);
|
|
|
|
local_18 = pcVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < *(int *)(param_2 + 0x1c)) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_14 = iVar4;
|
|
|
|
do {
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = (char)iVar3;
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = (char)(*(int *)(iVar5 + 4 + *(int *)(param_2 + 0x28)) << 4) +
|
|
|
|
(char)*(undefined4 *)(iVar5 + 8 + *(int *)(param_2 + 0x28));
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar4 = iVar5 + 0xc;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
pcVar2 = local_18 + 1;
|
|
|
|
*local_18 = *(char *)(iVar4 + *(int *)(param_2 + 0x28));
|
|
|
|
local_18 = pcVar2;
|
|
|
|
iVar4 = local_14;
|
|
|
|
} while (iVar3 < *(int *)(param_2 + 0x1c));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(iVar4 + 0x5c))(local_324,iVar1 + 10,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ad00 at 0x0064AD00 (size: 356) ---
|
|
|
|
|
|
void FUN_0064ad00(int param_1,int param_2,char param_3,undefined2 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
undefined2 *puVar2;
|
|
|
|
undefined2 uVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
char *local_a4;
|
|
|
|
char local_a0 [136];
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar4 = *(int *)(param_1 + 8);
|
|
|
|
if (param_2 == 0) {
|
|
|
|
iVar5 = 0x43;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0x83;
|
|
|
|
}
|
|
|
|
local_a4 = local_a0;
|
|
|
|
FUN_0064a4c0(0xdb,&local_a4);
|
|
|
|
FUN_0064a4e0(iVar5,&local_a4);
|
|
|
|
pcVar1 = local_a4 + 1;
|
|
|
|
*local_a4 = (char)(param_2 << 4) + param_3;
|
|
|
|
local_a4 = pcVar1;
|
|
|
|
local_18 = iVar4;
|
|
|
|
if (param_2 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
local_a4[iVar4] = *(char *)(param_4 + iVar4);
|
|
|
|
local_a4[iVar4 + 1] = *(char *)(param_4 + iVar4 + 1);
|
|
|
|
local_a4[iVar4 + 2] = *(char *)(param_4 + iVar4 + 2);
|
|
|
|
local_a4[iVar4 + 3] = *(char *)(param_4 + iVar4 + 3);
|
|
|
|
iVar4 = iVar4 + 4;
|
|
|
|
} while (iVar4 < 0x40);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar2 = param_4 + 0x40;
|
|
|
|
do {
|
|
|
|
uVar3 = *param_4;
|
|
|
|
*local_a4 = (char)((ushort)uVar3 >> 8);
|
|
|
|
local_a4[1] = (char)uVar3;
|
|
|
|
uVar3 = param_4[1];
|
|
|
|
pcVar1 = local_a4 + 3;
|
|
|
|
param_4 = param_4 + 2;
|
|
|
|
local_a4[2] = (char)((ushort)uVar3 >> 8);
|
|
|
|
local_a4 = local_a4 + 4;
|
|
|
|
*pcVar1 = (char)uVar3;
|
|
|
|
} while ((int)param_4 < (int)puVar2);
|
|
|
|
}
|
|
|
|
(**(code **)(local_18 + 0x5c))(local_a0,iVar5 + 2,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ae70 at 0x0064AE70 (size: 741) ---
|
|
|
|
|
|
undefined4 FUN_0064ae70(int param_1,byte *param_2,int param_3,char param_4,char param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
byte *local_16c;
|
|
|
|
byte local_168 [324];
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
uint local_18;
|
|
|
|
|
|
|
|
local_20 = *(int *)(param_1 + 8);
|
|
|
|
local_16c = local_168;
|
|
|
|
FUN_0064a4c0(0xc4,&local_16c);
|
|
|
|
local_24 = (uint)param_2[0xe] +
|
|
|
|
(uint)param_2[0xd] +
|
|
|
|
(uint)param_2[0xc] +
|
|
|
|
(uint)param_2[0xb] +
|
|
|
|
(uint)param_2[10] +
|
|
|
|
(uint)param_2[9] +
|
|
|
|
(uint)param_2[8] +
|
|
|
|
(uint)param_2[7] +
|
|
|
|
(uint)param_2[6] +
|
|
|
|
(uint)param_2[5] +
|
|
|
|
(uint)param_2[4] +
|
|
|
|
(uint)param_2[3] + (uint)param_2[2] + (uint)param_2[1] + (uint)*param_2;
|
|
|
|
uVar8 = (uint)param_2[0xf];
|
|
|
|
local_1c = uVar8 + local_24;
|
|
|
|
uVar7 = uVar8 + 0x13 + local_24;
|
|
|
|
FUN_0064a4e0(uVar7,&local_16c);
|
|
|
|
if (uVar7 < 0x145) {
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_4 * '\x10' + param_5;
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = *param_2;
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[1];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[2];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[3];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[4];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[5];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[6];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[7];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[8];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[9];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[10];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[0xb];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[0xc];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[0xd];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
iVar6 = 0;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[0xe];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
iVar3 = local_1c;
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
*local_16c = param_2[0xf];
|
|
|
|
local_16c = pbVar1;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
iVar3 = local_1c;
|
|
|
|
if (5 < (int)(uVar8 + local_24)) {
|
|
|
|
iVar4 = (uVar8 - 6) + local_24;
|
|
|
|
local_18 = uVar7;
|
|
|
|
do {
|
|
|
|
*local_16c = *(byte *)(iVar6 + param_3);
|
|
|
|
local_16c[1] = *(byte *)(iVar6 + 1 + param_3);
|
|
|
|
local_16c[2] = *(byte *)(iVar6 + 2 + param_3);
|
|
|
|
pbVar1 = local_16c + 4;
|
|
|
|
local_16c[3] = *(byte *)(iVar6 + 3 + param_3);
|
|
|
|
iVar3 = iVar6 + 4;
|
|
|
|
local_16c = local_16c + 5;
|
|
|
|
iVar6 = iVar6 + 5;
|
|
|
|
*pbVar1 = *(byte *)(iVar3 + param_3);
|
|
|
|
iVar3 = local_1c;
|
|
|
|
uVar7 = local_18;
|
|
|
|
} while (iVar6 <= iVar4);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
pbVar2 = (byte *)(iVar6 + param_3);
|
|
|
|
pbVar1 = local_16c + 1;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
*local_16c = *pbVar2;
|
|
|
|
local_16c = pbVar1;
|
|
|
|
} while (iVar6 < iVar3);
|
|
|
|
}
|
|
|
|
uVar5 = (**(code **)(local_20 + 0x5c))(local_168,uVar7 + 2,param_1);
|
|
|
|
return uVar5;
|
|
|
|
}
|
|
|
|
return 0xfffffffa;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064b160 at 0x0064B160 (size: 1297) ---
|
|
|
|
|
|
int FUN_0064b160(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
char *pcVar2;
|
|
|
|
byte *pbVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int *piVar9;
|
|
|
|
char *local_174;
|
|
|
|
char local_170;
|
|
|
|
undefined1 uStack_16f;
|
|
|
|
undefined1 uStack_16e;
|
|
|
|
undefined1 uStack_16d;
|
|
|
|
undefined1 uStack_16c;
|
|
|
|
undefined1 uStack_16b;
|
|
|
|
undefined1 uStack_16a;
|
|
|
|
undefined1 uStack_169;
|
|
|
|
undefined1 uStack_168;
|
|
|
|
undefined1 uStack_167;
|
|
|
|
undefined1 uStack_166;
|
|
|
|
undefined1 uStack_165;
|
|
|
|
undefined1 uStack_164;
|
|
|
|
undefined1 uStack_163;
|
|
|
|
undefined1 uStack_162;
|
|
|
|
undefined1 uStack_161;
|
|
|
|
undefined1 uStack_160;
|
|
|
|
char acStack_15f [307];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int iStack_24;
|
|
|
|
int iStack_20;
|
|
|
|
int iStack_1c;
|
|
|
|
uint uStack_18;
|
|
|
|
int *piStack_14;
|
|
|
|
|
|
|
|
iVar6 = *(int *)(param_1 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
iVar8 = 0;
|
|
|
|
iVar5 = *(int *)(param_2 + 0x90);
|
|
|
|
if (0 < iVar5 * 2) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
pbVar3 = *(byte **)(iVar4 + 0x373c + param_2);
|
|
|
|
iVar8 = iVar8 + (uint)*pbVar3 + (uint)pbVar3[1] + (uint)pbVar3[2] + (uint)pbVar3[3] +
|
|
|
|
(uint)pbVar3[4] + (uint)pbVar3[5] + (uint)pbVar3[6] + (uint)pbVar3[7] +
|
|
|
|
(uint)pbVar3[8] + (uint)pbVar3[9] + (uint)pbVar3[10] + (uint)pbVar3[0xb] +
|
|
|
|
(uint)pbVar3[0xc] + (uint)pbVar3[0xd] + (uint)pbVar3[0xe] + (uint)pbVar3[0xf];
|
|
|
|
iVar4 = iVar4 + 0xc;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
local_2c = iVar5;
|
|
|
|
local_28 = iVar6;
|
|
|
|
} while (iVar7 < iVar5 * 2);
|
|
|
|
}
|
|
|
|
local_174 = &local_170;
|
|
|
|
FUN_0064a4c0(0xc4,&local_174);
|
|
|
|
FUN_0064a4e0(iVar5 * 0x22 + 2 + iVar8,&local_174);
|
|
|
|
iVar5 = (**(code **)(iVar6 + 0x5c))(&local_170,4,param_1);
|
|
|
|
if ((iVar5 == 0) && (0 < *(int *)(param_2 + 0x90) * 2)) {
|
|
|
|
iVar7 = 0;
|
|
|
|
iStack_20 = param_2;
|
|
|
|
iStack_24 = 0;
|
|
|
|
local_28 = iVar6;
|
|
|
|
do {
|
|
|
|
pbVar3 = *(byte **)(iVar7 + 0x373c + param_2);
|
|
|
|
iVar6 = (uint)*pbVar3 + (uint)pbVar3[1] + (uint)pbVar3[2] + (uint)pbVar3[3] + (uint)pbVar3[4]
|
|
|
|
+ (uint)pbVar3[5] + (uint)pbVar3[6] + (uint)pbVar3[7] + (uint)pbVar3[8] +
|
|
|
|
(uint)pbVar3[9] + (uint)pbVar3[10] + (uint)pbVar3[0xb] + (uint)pbVar3[0xc] +
|
|
|
|
(uint)pbVar3[0xd] + (uint)pbVar3[0xe];
|
|
|
|
local_2c = (uint)pbVar3[0xf];
|
|
|
|
iStack_1c = iVar6 + local_2c;
|
|
|
|
uStack_18 = iVar6 + 0x11 + local_2c;
|
|
|
|
if (0x144 < uStack_18) {
|
|
|
|
return -6;
|
|
|
|
}
|
|
|
|
local_170 = *(char *)(iVar7 + 0x3744 + param_2) * '\x10' + *(char *)(iVar7 + 0x3745 + param_2)
|
|
|
|
;
|
|
|
|
uStack_16f = **(undefined1 **)(iVar7 + 0x373c + param_2);
|
|
|
|
uStack_16e = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 1);
|
|
|
|
uStack_16d = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 2);
|
|
|
|
uStack_16c = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 3);
|
|
|
|
uStack_16b = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 4);
|
|
|
|
uStack_16a = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 5);
|
|
|
|
uStack_169 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 6);
|
|
|
|
uStack_168 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 7);
|
|
|
|
uStack_167 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 8);
|
|
|
|
uStack_166 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 9);
|
|
|
|
uStack_165 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 10);
|
|
|
|
uStack_164 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 0xb);
|
|
|
|
uStack_163 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 0xc);
|
|
|
|
uStack_162 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 0xd);
|
|
|
|
uStack_161 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 0xe);
|
|
|
|
uStack_160 = *(undefined1 *)(*(int *)(iVar7 + 0x373c + param_2) + 0xf);
|
|
|
|
local_174 = acStack_15f;
|
|
|
|
iVar5 = 0;
|
|
|
|
if (iStack_1c != 0) {
|
|
|
|
if (iVar6 + local_2c < 6) {
|
|
|
|
iVar6 = iStack_1c;
|
|
|
|
piVar9 = (int *)(iStack_20 + 0x3740);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piStack_14 = (int *)(iStack_20 + 0x3740);
|
|
|
|
local_2c = iVar6 + -6 + local_2c;
|
|
|
|
do {
|
|
|
|
*local_174 = *(char *)(iVar5 + *(int *)(iVar7 + 0x3740 + param_2));
|
|
|
|
local_174[1] = *(char *)(iVar5 + 1 + *(int *)(iVar7 + 0x3740 + param_2));
|
|
|
|
local_174[2] = *(char *)(iVar5 + 2 + *(int *)(iVar7 + 0x3740 + param_2));
|
|
|
|
pcVar1 = local_174 + 4;
|
|
|
|
local_174[3] = *(char *)(iVar5 + 3 + *(int *)(iVar7 + 0x3740 + param_2));
|
|
|
|
iVar6 = iVar5 + 4;
|
|
|
|
local_174 = local_174 + 5;
|
|
|
|
iVar5 = iVar5 + 5;
|
|
|
|
*pcVar1 = *(char *)(iVar6 + *(int *)(iVar7 + 0x3740 + param_2));
|
|
|
|
iVar6 = iStack_1c;
|
|
|
|
piVar9 = piStack_14;
|
|
|
|
} while (iVar5 <= (int)local_2c);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
pcVar2 = (char *)(iVar5 + *piVar9);
|
|
|
|
pcVar1 = local_174 + 1;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
*local_174 = *pcVar2;
|
|
|
|
local_174 = pcVar1;
|
|
|
|
} while (iVar5 < iVar6);
|
|
|
|
}
|
|
|
|
iVar6 = (**(code **)(local_28 + 0x5c))(&local_170,uStack_18,param_1);
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
return iVar6;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 0xc;
|
|
|
|
iStack_24 = iStack_24 + 1;
|
|
|
|
iStack_20 = iStack_20 + 0xc;
|
|
|
|
iVar5 = 0;
|
|
|
|
} while (iStack_24 < *(int *)(param_2 + 0x90) * 2);
|
|
|
|
}
|
|
|
|
return iVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064b680 at 0x0064B680 (size: 543) ---
|
|
|
|
|
|
void FUN_0064b680(int param_1,int param_2,char *param_3,char *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
char *local_4c;
|
|
|
|
char local_48 [32];
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_1c = *(int *)(param_1 + 8);
|
|
|
|
iVar4 = param_2 * 2 + 6;
|
|
|
|
local_4c = local_48;
|
|
|
|
FUN_0064a4c0(0xda,&local_4c);
|
|
|
|
FUN_0064a4e0(iVar4,&local_4c);
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = (char)param_2;
|
|
|
|
local_4c = pcVar1;
|
|
|
|
if (param_2 == 1) {
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = '\0';
|
|
|
|
local_4c = pcVar1;
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = '\0';
|
|
|
|
local_4c = pcVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = '\x01';
|
|
|
|
local_4c = pcVar1;
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = *param_3 * '\x10' + *param_4;
|
|
|
|
local_4c = pcVar1;
|
|
|
|
iVar3 = 2;
|
|
|
|
if (1 < param_2) {
|
|
|
|
local_28 = iVar4;
|
|
|
|
if (3 < param_2 + -2) {
|
|
|
|
local_18 = param_2 + -4;
|
|
|
|
local_20 = 3;
|
|
|
|
local_24 = 4;
|
|
|
|
do {
|
|
|
|
*local_4c = (char)iVar3;
|
|
|
|
local_4c[1] = param_3[iVar3 + -1] * '\x10' + param_4[iVar3 + -1];
|
|
|
|
local_4c[2] = (char)local_20;
|
|
|
|
local_4c[3] = param_3[iVar3] * '\x10' + param_4[iVar3];
|
|
|
|
pcVar1 = local_4c + 5;
|
|
|
|
local_4c[4] = (char)local_24;
|
|
|
|
iVar4 = iVar3 + 1;
|
|
|
|
iVar2 = iVar3 + 1;
|
|
|
|
local_4c = local_4c + 6;
|
|
|
|
iVar3 = iVar3 + 3;
|
|
|
|
*pcVar1 = param_3[iVar4] * '\x10' + param_4[iVar2];
|
|
|
|
local_20 = local_20 + 3;
|
|
|
|
local_24 = local_24 + 3;
|
|
|
|
} while (iVar3 <= local_18);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
pcVar1 = local_4c + 1;
|
|
|
|
*local_4c = (char)iVar3;
|
|
|
|
iVar4 = iVar3 + -1;
|
|
|
|
iVar2 = iVar3 + -1;
|
|
|
|
local_4c = local_4c + 2;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
*pcVar1 = param_3[iVar4] * '\x10' + param_4[iVar2];
|
|
|
|
iVar4 = local_28;
|
|
|
|
} while (iVar3 <= param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*local_4c = '\0';
|
|
|
|
pcVar1 = local_4c + 2;
|
|
|
|
local_4c[1] = '?';
|
|
|
|
local_4c = local_4c + 3;
|
|
|
|
*pcVar1 = '\0';
|
|
|
|
(**(code **)(local_1c + 0x5c))(local_48,iVar4 + 2,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064b8a0 at 0x0064B8A0 (size: 330) ---
|
|
|
|
|
|
void FUN_0064b8a0(int param_1,int *param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
char *pcVar2;
|
|
|
|
char *pcVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
char *local_2c;
|
|
|
|
char local_28 [16];
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
iVar6 = *(int *)(param_1 + 8);
|
|
|
|
iVar5 = *param_2 * 2 + 6;
|
|
|
|
local_2c = local_28;
|
|
|
|
FUN_0064a4c0(0xda,&local_2c);
|
|
|
|
FUN_0064a4e0(iVar5,&local_2c);
|
|
|
|
pcVar1 = local_2c + 1;
|
|
|
|
*local_2c = (char)*param_2;
|
|
|
|
local_2c = pcVar1;
|
|
|
|
if (*param_2 == 1) {
|
|
|
|
pcVar1 = local_2c + 1;
|
|
|
|
*local_2c = *(char *)param_2[0xd];
|
|
|
|
local_2c = pcVar1;
|
|
|
|
pcVar1 = local_2c + 1;
|
|
|
|
*local_2c = *(char *)(*(int *)param_2[0xd] + param_3) * '\x10' +
|
|
|
|
*(char *)(*(int *)param_2[0xd] + param_4);
|
|
|
|
local_2c = pcVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0 < *param_2) {
|
|
|
|
do {
|
|
|
|
local_14 = iVar5;
|
|
|
|
local_18 = iVar6;
|
|
|
|
pcVar1 = local_2c + 1;
|
|
|
|
*local_2c = (char)iVar4;
|
|
|
|
pcVar3 = (char *)(param_3 + iVar4);
|
|
|
|
pcVar2 = (char *)(param_4 + iVar4);
|
|
|
|
local_2c = local_2c + 2;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
*pcVar1 = *pcVar3 * '\x10' + *pcVar2;
|
|
|
|
iVar5 = local_14;
|
|
|
|
iVar6 = local_18;
|
|
|
|
} while (iVar4 < *param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*local_2c = (char)param_2[2];
|
|
|
|
pcVar1 = local_2c + 2;
|
|
|
|
local_2c[1] = (char)param_2[3];
|
|
|
|
local_2c = local_2c + 3;
|
|
|
|
*pcVar1 = (char)(param_2[4] << 4) + (char)param_2[5];
|
|
|
|
(**(code **)(iVar6 + 0x5c))(local_28,iVar5 + 2,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064b9f0 at 0x0064B9F0 (size: 110) ---
|
|
|
|
|
|
void FUN_0064b9f0(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *local_1c;
|
|
|
|
undefined1 local_18 [12];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_2 + 8);
|
|
|
|
local_1c = local_18;
|
|
|
|
FUN_0064a4c0(0xdd,&local_1c);
|
|
|
|
FUN_0064a4e0(4,&local_1c);
|
|
|
|
FUN_0064a4e0(param_1,&local_1c);
|
|
|
|
(**(code **)(iVar1 + 0x5c))(local_18,6,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ba60 at 0x0064BA60 (size: 147) ---
|
|
|
|
|
|
undefined4 FUN_0064ba60(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined1 *local_14;
|
|
|
|
undefined1 local_10 [8];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_2 + 8);
|
|
|
|
switch(param_1) {
|
|
|
|
case 0:
|
|
|
|
uVar2 = 0xd0;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
uVar2 = 0xd1;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
uVar2 = 0xd2;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
uVar2 = 0xd3;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
uVar2 = 0xd4;
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
uVar2 = 0xd5;
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
uVar2 = 0xd6;
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
uVar2 = 0xd7;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
return 0xffffffe7;
|
|
|
|
}
|
|
|
|
local_14 = local_10;
|
|
|
|
FUN_0064a4c0(uVar2,&local_14);
|
|
|
|
uVar2 = (**(code **)(iVar1 + 0x5c))(local_10,2,param_2);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064bb00 at 0x0064BB00 (size: 255) ---
|
|
|
|
|
|
void FUN_0064bb00(undefined1 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 *puVar2;
|
|
|
|
undefined1 *local_24;
|
|
|
|
undefined1 local_20 [20];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_2 + 0x37f0);
|
|
|
|
local_24 = local_20;
|
|
|
|
FUN_0064a4c0(0xee,&local_24);
|
|
|
|
FUN_0064a4e0(0xe,&local_24);
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x41;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 100;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x6f;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x62;
|
|
|
|
local_24 = puVar2;
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = 0x65;
|
|
|
|
local_24 = puVar2;
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_2 + 0x4df0),&local_24);
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_2 + 0x4df2),&local_24);
|
|
|
|
FUN_0064a4e0(*(undefined2 *)(param_2 + 0x4df4),&local_24);
|
|
|
|
puVar2 = local_24 + 1;
|
|
|
|
*local_24 = param_1;
|
|
|
|
local_24 = puVar2;
|
|
|
|
(**(code **)(iVar1 + 0x5c))(local_20,0x10,param_2 + 0x37e8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064bc00 at 0x0064BC00 (size: 1413) ---
|
|
|
|
|
|
int FUN_0064bc00(int param_1,int param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
short *psVar9;
|
|
|
|
int iVar10;
|
|
|
|
int *piVar11;
|
|
|
|
int aiStack_a4 [4];
|
|
|
|
int aiStack_94 [4];
|
|
|
|
int aiStack_84 [4];
|
|
|
|
int aiStack_74 [4];
|
|
|
|
int local_64;
|
|
|
|
int local_60;
|
|
|
|
short *local_5c;
|
|
|
|
int *local_58;
|
|
|
|
int local_54;
|
|
|
|
int *local_50;
|
|
|
|
int *local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
local_54 = 0;
|
|
|
|
iVar3 = *param_3;
|
|
|
|
iVar7 = *(int *)(param_2 + 8);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
iVar10 = 0;
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar8 = 0;
|
|
|
|
local_64 = 0;
|
|
|
|
local_60 = *(int *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x37e0) == 0) {
|
|
|
|
param_3[iVar2 + 9] = 0;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(iVar6 + 8 + param_3[0xd]) * *(int *)(iVar6 + 4 + param_3[0xd]);
|
|
|
|
iVar8 = iVar8 + iVar3;
|
|
|
|
cVar1 = *(char *)(param_1 + 0x379c + iVar2);
|
|
|
|
aiStack_a4[iVar2] = iVar3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x3704 + *(char *)(param_1 + 0x37a0 + iVar2) * 4);
|
|
|
|
aiStack_94[iVar2] = iVar3;
|
|
|
|
iVar7 = *(int *)(param_1 + 0x36f4 + cVar1 * 4);
|
|
|
|
aiStack_84[iVar2] = iVar7;
|
|
|
|
if ((iVar3 == 0) || (iVar7 == 0)) {
|
|
|
|
iVar7 = local_60;
|
|
|
|
iVar6 = -0x11;
|
|
|
|
goto LAB_0064c102;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(param_1 + 0x36e4 + *(int *)(iVar10 + 0xc + *(int *)(param_1 + 0x37cc)) * 4);
|
|
|
|
aiStack_74[iVar2] = iVar3;
|
|
|
|
iVar7 = local_60;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar6 = -0x12;
|
|
|
|
goto LAB_0064c102;
|
|
|
|
}
|
|
|
|
iVar10 = iVar10 + 0x10;
|
|
|
|
iVar6 = iVar6 + 0x18;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar3 = *param_3;
|
|
|
|
} while (iVar2 < iVar3);
|
|
|
|
local_54 = iVar8;
|
|
|
|
iVar6 = local_64;
|
|
|
|
}
|
|
|
|
iVar2 = param_3[8];
|
|
|
|
piVar5 = *(int **)(param_1 + 0x7c);
|
|
|
|
local_58 = piVar5;
|
|
|
|
if (iVar2 < (int)piVar5) {
|
|
|
|
local_64 = iVar6;
|
|
|
|
local_14 = *(int *)(param_1 + 0x78);
|
|
|
|
local_1c = iVar3;
|
|
|
|
local_60 = iVar7;
|
|
|
|
do {
|
|
|
|
if (param_3[7] < local_14) {
|
|
|
|
local_38 = iVar2 << 7;
|
|
|
|
local_3c = local_54 * 0x40 + -1;
|
|
|
|
local_40 = local_54 * 0x40;
|
|
|
|
local_44 = param_3[7];
|
|
|
|
local_48 = iVar2;
|
|
|
|
iVar3 = local_1c;
|
|
|
|
do {
|
|
|
|
psVar9 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar5 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
if (piVar5 == (int *)0x0) {
|
|
|
|
(**(code **)(local_60 + 0x60))(param_1,local_44,local_48);
|
|
|
|
piVar5 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
piVar4 = (int *)param_3[0xd];
|
|
|
|
local_58 = piVar4;
|
|
|
|
local_5c = psVar9;
|
|
|
|
local_4c = piVar5;
|
|
|
|
local_34 = local_44 << 4;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar6 = piVar4[iVar7 * 6 + 2];
|
|
|
|
if (0 < iVar6) {
|
|
|
|
piVar5 = (int *)piVar4[iVar7 * 6 + 1];
|
|
|
|
local_50 = piVar5;
|
|
|
|
local_28 = iVar7 << 4;
|
|
|
|
local_2c = iVar7 * 2;
|
|
|
|
local_18 = iVar7 * 0x18;
|
|
|
|
local_30 = iVar7;
|
|
|
|
piVar11 = local_4c;
|
|
|
|
do {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < (int)piVar5) {
|
|
|
|
local_20 = iVar2 << 7;
|
|
|
|
iVar7 = local_14;
|
|
|
|
local_24 = iVar2;
|
|
|
|
while( true ) {
|
|
|
|
iVar2 = iVar3 * 0x10 + *(int *)((int)piVar11 + local_2c * 2 + 4) +
|
|
|
|
*(int *)(*(int *)(param_1 + 0x37cc) + 4 + local_28) * local_34 +
|
|
|
|
iVar6 * iVar7 * local_38 * (int)piVar5 +
|
|
|
|
(int)piVar5 * iVar7 * local_20;
|
|
|
|
iVar6 = 0;
|
|
|
|
psVar9 = local_5c;
|
|
|
|
local_1c = iVar3;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(psVar9,iVar2,0x10);
|
|
|
|
iVar7 = *(int *)(param_1 + 0x78);
|
|
|
|
piVar4 = (int *)param_3[0xd];
|
|
|
|
piVar5 = *(int **)(local_18 + 4 + (int)piVar4);
|
|
|
|
iVar2 = iVar2 + iVar7 * 0x10 * (int)piVar5;
|
|
|
|
psVar9 = psVar9 + 8;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < 8);
|
|
|
|
local_5c = psVar9;
|
|
|
|
iVar3 = local_1c + 1;
|
|
|
|
if ((int)piVar5 <= iVar3) break;
|
|
|
|
piVar11 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar6 = *(int *)(local_18 + 8 + (int)piVar4);
|
|
|
|
}
|
|
|
|
local_14 = iVar7;
|
|
|
|
piVar11 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar6 = *(int *)(local_18 + 8 + (int)piVar4);
|
|
|
|
iVar2 = local_24;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar6);
|
|
|
|
local_4c = piVar11;
|
|
|
|
iVar3 = *param_3;
|
|
|
|
iVar7 = local_30;
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < iVar3);
|
|
|
|
psVar9 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar5 = local_4c;
|
|
|
|
}
|
|
|
|
if ((*piVar5 != 0) && (iVar3 = local_3c, local_40 != 0)) {
|
|
|
|
do {
|
|
|
|
*psVar9 = *psVar9 + -0x80;
|
|
|
|
psVar9 = psVar9 + 1;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != -1);
|
|
|
|
psVar9 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar5 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar7 = local_54;
|
|
|
|
iVar3 = local_60;
|
|
|
|
if (((piVar5 == (int *)0x0) || (*piVar5 != 0)) && (0 < local_54)) {
|
|
|
|
iVar6 = 0;
|
|
|
|
local_5c = psVar9;
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar3 + 0x44))(psVar9);
|
|
|
|
psVar9 = psVar9 + 0x40;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar7);
|
|
|
|
local_60 = iVar3;
|
|
|
|
psVar9 = local_5c;
|
|
|
|
}
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar3 = *param_3;
|
|
|
|
piVar5 = param_3;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
do {
|
|
|
|
iVar7 = local_60;
|
|
|
|
if (0 < aiStack_a4[iVar2]) {
|
|
|
|
local_58 = piVar5 + 9;
|
|
|
|
local_50 = piVar5;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
if ((*(int **)(param_1 + 0x4ddc) == (int *)0x0) ||
|
|
|
|
(**(int **)(param_1 + 0x4ddc) != 0)) {
|
|
|
|
(**(code **)(iVar7 + 0x104))(psVar9,aiStack_74[iVar2]);
|
|
|
|
}
|
|
|
|
iVar6 = (**(code **)(iVar7 + 0xf0))
|
|
|
|
(param_2,aiStack_94[iVar2],aiStack_84[iVar2],local_58,psVar9);
|
|
|
|
if (iVar6 != 0) goto LAB_0064c102;
|
|
|
|
psVar9 = psVar9 + 0x40;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < aiStack_a4[iVar2]);
|
|
|
|
local_64 = iVar6;
|
|
|
|
local_60 = iVar7;
|
|
|
|
iVar3 = *param_3;
|
|
|
|
piVar5 = local_50;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
piVar5 = piVar5 + 1;
|
|
|
|
} while (iVar2 < iVar3);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x1c) != 0) {
|
|
|
|
*(int *)(param_1 + 0xc) = local_44;
|
|
|
|
*(int *)(param_1 + 0x10) = local_48;
|
|
|
|
iVar3 = (local_44 + 1) % *(int *)(param_1 + 0x78);
|
|
|
|
param_3[7] = iVar3;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
param_3[8] = local_48 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_3[8] = local_48;
|
|
|
|
}
|
|
|
|
iVar7 = local_60;
|
|
|
|
iVar6 = 1;
|
|
|
|
goto LAB_0064c102;
|
|
|
|
}
|
|
|
|
local_44 = local_44 + 1;
|
|
|
|
local_14 = *(int *)(param_1 + 0x78);
|
|
|
|
} while (local_44 < *(int *)(param_1 + 0x78));
|
|
|
|
local_1c = iVar3;
|
|
|
|
piVar5 = *(int **)(param_1 + 0x7c);
|
|
|
|
iVar2 = local_48;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar7 = local_60;
|
|
|
|
iVar6 = local_64;
|
|
|
|
} while (iVar2 < (int)piVar5);
|
|
|
|
}
|
|
|
|
LAB_0064c102:
|
|
|
|
(**(code **)(iVar7 + 0x18))();
|
|
|
|
return iVar6;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064c1a0 at 0x0064C1A0 (size: 844) ---
|
|
|
|
|
|
undefined4 FUN_0064c1a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
short *psVar7;
|
|
|
|
short *psVar8;
|
|
|
|
int iVar9;
|
|
|
|
int aiStack_7c [4];
|
|
|
|
undefined4 auStack_6c [4];
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
short *local_54;
|
|
|
|
int local_50;
|
|
|
|
int *local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar6 = 0;
|
|
|
|
local_1c = *(int *)(param_1 + 0x37f0);
|
|
|
|
iVar1 = 0;
|
|
|
|
local_18 = *(int *)(param_1 + 0x4de4);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37c0);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar5 = *(int *)(param_1 + 0x37cc);
|
|
|
|
do {
|
|
|
|
iVar3 = *(int *)(iVar5 + 0xc);
|
|
|
|
iVar9 = *(int *)(iVar5 + 8) * *(int *)(iVar5 + 4);
|
|
|
|
iVar1 = iVar1 + iVar9;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
aiStack_7c[iVar6] = iVar9;
|
|
|
|
auStack_6c[iVar6] = *(undefined4 *)(param_1 + 0x36e4 + iVar3 * 4);
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar2);
|
|
|
|
}
|
|
|
|
local_48 = 0;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x7c);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x78);
|
|
|
|
local_20 = iVar1 * 0x40;
|
|
|
|
local_24 = iVar1 * 0x40 + -1;
|
|
|
|
local_3c = iVar1 << 7;
|
|
|
|
local_38 = iVar1;
|
|
|
|
do {
|
|
|
|
if (0 < iVar6) {
|
|
|
|
local_40 = 0;
|
|
|
|
do {
|
|
|
|
psVar7 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar4 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
(**(code **)(local_1c + 0x60))(param_1,local_40,local_48);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37c0);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
iVar5 = *(int *)(param_1 + 0x37cc);
|
|
|
|
local_28 = iVar5;
|
|
|
|
local_54 = psVar7;
|
|
|
|
local_50 = iVar6;
|
|
|
|
local_4c = piVar4;
|
|
|
|
local_44 = local_40 << 4;
|
|
|
|
do {
|
|
|
|
iVar3 = 0;
|
|
|
|
local_5c = iVar1 * 0x10;
|
|
|
|
iVar6 = *(int *)(local_5c + 8 + iVar5);
|
|
|
|
if (0 < iVar6) {
|
|
|
|
iVar2 = *(int *)(local_5c + 4 + iVar5);
|
|
|
|
local_58 = iVar1 * 2;
|
|
|
|
local_34 = iVar1;
|
|
|
|
piVar4 = local_4c;
|
|
|
|
do {
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar1 = local_50;
|
|
|
|
if (0 < iVar2) {
|
|
|
|
while( true ) {
|
|
|
|
local_2c = iVar3;
|
|
|
|
iVar6 = iVar6 * iVar1 * 0x80 * local_48 * iVar2 +
|
|
|
|
*(int *)((int)piVar4 + local_58 * 2 + 4) + local_44 * iVar2 +
|
|
|
|
iVar2 * iVar1 * 0x80 * local_2c + iVar9 * 0x10;
|
|
|
|
iVar3 = 0;
|
|
|
|
psVar7 = local_54;
|
|
|
|
local_30 = iVar9;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(psVar7,iVar6,0x10);
|
|
|
|
iVar1 = *(int *)(param_1 + 0x78);
|
|
|
|
iVar5 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar2 = *(int *)(local_5c + 4 + iVar5);
|
|
|
|
iVar6 = iVar6 + iVar1 * 0x10 * iVar2;
|
|
|
|
psVar7 = psVar7 + 8;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 8);
|
|
|
|
local_54 = psVar7;
|
|
|
|
iVar9 = local_30 + 1;
|
|
|
|
iVar3 = local_2c;
|
|
|
|
if (iVar2 <= iVar9) break;
|
|
|
|
piVar4 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar6 = *(int *)(local_5c + 8 + iVar5);
|
|
|
|
}
|
|
|
|
local_50 = iVar1;
|
|
|
|
piVar4 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar6 = *(int *)(local_5c + 8 + iVar5);
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar6);
|
|
|
|
local_4c = piVar4;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37c0);
|
|
|
|
iVar1 = local_34;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar2);
|
|
|
|
psVar7 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar4 = local_4c;
|
|
|
|
}
|
|
|
|
if ((*piVar4 != 0) && (iVar2 = local_24, local_20 != 0)) {
|
|
|
|
do {
|
|
|
|
*psVar7 = *psVar7 + -0x80;
|
|
|
|
psVar7 = psVar7 + 1;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != -1);
|
|
|
|
psVar7 = *(short **)(param_1 + 0x4834);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = local_1c;
|
|
|
|
iVar2 = local_38;
|
|
|
|
iVar6 = 0;
|
|
|
|
psVar8 = psVar7;
|
|
|
|
if (0 < local_38) {
|
|
|
|
do {
|
|
|
|
local_54 = psVar8;
|
|
|
|
(**(code **)(iVar1 + 0x44))(psVar7);
|
|
|
|
psVar7 = psVar7 + 0x40;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
psVar8 = local_54;
|
|
|
|
} while (iVar6 < iVar2);
|
|
|
|
}
|
|
|
|
iVar1 = local_1c;
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37c0);
|
|
|
|
if (0 < iVar2) {
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < aiStack_7c[iVar6]) {
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar1 + 0x104))(psVar8,auStack_6c[iVar6]);
|
|
|
|
psVar8 = psVar8 + 0x40;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < aiStack_7c[iVar6]);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar2);
|
|
|
|
}
|
|
|
|
(*DAT_008f85a8)(local_18,*(undefined4 *)(param_1 + 0x4834),local_3c);
|
|
|
|
local_40 = local_40 + 1;
|
|
|
|
iVar6 = *(int *)(param_1 + 0x78);
|
|
|
|
local_18 = local_18 + local_3c;
|
|
|
|
} while (local_40 < iVar6);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x7c);
|
|
|
|
}
|
|
|
|
local_48 = local_48 + 1;
|
|
|
|
} while (local_48 < iVar2);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064c500 at 0x0064C500 (size: 1483) ---
|
|
|
|
|
|
undefined4 FUN_0064c500(int param_1,int param_2,int *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
undefined1 local_44c [1000];
|
|
|
|
undefined4 local_64;
|
|
|
|
int aiStack_60 [4];
|
|
|
|
int local_50;
|
|
|
|
int *local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int *local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int *local_30;
|
|
|
|
int local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_50 = *(int *)(param_2 + 8);
|
|
|
|
iVar5 = 0;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x37c0);
|
|
|
|
local_64 = 0;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
iVar8 = *(int *)(iVar2 + 8 + iVar6) * *(int *)(iVar2 + 4 + iVar6);
|
|
|
|
aiStack_60[iVar7] = iVar8;
|
|
|
|
iVar5 = iVar5 + iVar8;
|
|
|
|
iVar2 = iVar2 + 0x10;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < iVar3);
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 0x78);
|
|
|
|
iVar3 = iVar5 * 0x40 * (int)piVar1;
|
|
|
|
if ((param_3[2] == 0) && (param_3[3] == 0)) {
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
iVar6 = *(int *)(param_1 + 0x7c);
|
|
|
|
if (0 < iVar6) {
|
|
|
|
local_44 = iVar5 * 0x80;
|
|
|
|
local_40 = iVar3 * 2;
|
|
|
|
do {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < (int)piVar1) {
|
|
|
|
iVar5 = *param_3;
|
|
|
|
iVar6 = 0;
|
|
|
|
local_34 = local_40 * (int)piVar4;
|
|
|
|
local_30 = piVar4;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
local_28 = *(int *)(param_1 + 0x4de4) + local_34 + iVar6;
|
|
|
|
local_38 = iVar6;
|
|
|
|
local_2c = iVar3;
|
|
|
|
piVar1 = param_3;
|
|
|
|
do {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < aiStack_60[iVar2]) {
|
|
|
|
local_4c = piVar1 + 9;
|
|
|
|
local_48 = param_1 + iVar2;
|
|
|
|
iVar5 = local_28;
|
|
|
|
local_3c = piVar1;
|
|
|
|
do {
|
|
|
|
FUN_0061fab0(*(char *)(local_48 + 0x37a0) * 0x404 + param_4,local_4c,iVar5,
|
|
|
|
param_3[4],param_3[5]);
|
|
|
|
iVar5 = iVar5 + 0x80;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < aiStack_60[iVar2]);
|
|
|
|
local_28 = iVar5;
|
|
|
|
iVar5 = *param_3;
|
|
|
|
piVar1 = local_3c;
|
|
|
|
}
|
|
|
|
piVar1 = piVar1 + 1;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar5);
|
|
|
|
piVar1 = *(int **)(param_1 + 0x78);
|
|
|
|
iVar6 = local_38;
|
|
|
|
iVar3 = local_2c;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + local_44;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < (int)piVar1);
|
|
|
|
iVar6 = *(int *)(param_1 + 0x7c);
|
|
|
|
piVar4 = local_30;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)((int)piVar4 + 1);
|
|
|
|
} while ((int)piVar4 < iVar6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_30 = (int *)param_3[0xd];
|
|
|
|
iVar6 = *local_30;
|
|
|
|
local_2c = (int)*(char *)(iVar6 + 0x379c + param_1);
|
|
|
|
iVar2 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
if (0 < iVar6) {
|
|
|
|
if (5 < iVar6) {
|
|
|
|
local_34 = 0;
|
|
|
|
local_28 = iVar6 + -6;
|
|
|
|
do {
|
|
|
|
local_34 = local_34 + aiStack_60[iVar2] + aiStack_60[iVar2 + 1] + aiStack_60[iVar2 + 2] +
|
|
|
|
aiStack_60[iVar2 + 3] + aiStack_60[iVar2 + 4];
|
|
|
|
iVar2 = iVar2 + 5;
|
|
|
|
} while (iVar2 <= iVar6 + -6);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
local_34 = local_34 + aiStack_60[iVar2];
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar6);
|
|
|
|
}
|
|
|
|
local_28 = 0;
|
|
|
|
iVar6 = *(int *)(param_1 + 0x7c);
|
|
|
|
if (iVar6 < 1) {
|
|
|
|
iVar5 = param_4 + local_2c * 0x404;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = local_30[2];
|
|
|
|
iVar3 = iVar3 * 2;
|
|
|
|
local_24 = param_4 + local_2c * 0x404;
|
|
|
|
local_44 = iVar5 * 0x80;
|
|
|
|
local_34 = local_34 << 7;
|
|
|
|
iVar2 = 0;
|
|
|
|
local_3c = piVar1;
|
|
|
|
local_38 = iVar7;
|
|
|
|
do {
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < iVar7) {
|
|
|
|
local_20 = iVar3 * iVar2;
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
piVar1 = local_3c;
|
|
|
|
local_40 = iVar3;
|
|
|
|
local_28 = iVar2;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x50) <= (int)(iVar7 * 8 * local_28 + (int)piVar4)) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar3 = local_40;
|
|
|
|
iVar2 = local_28;
|
|
|
|
local_3c = piVar1;
|
|
|
|
goto LAB_0064ca30;
|
|
|
|
}
|
|
|
|
if (0 < (int)piVar1) {
|
|
|
|
iVar3 = local_30[1];
|
|
|
|
iVar6 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_4c = piVar4;
|
|
|
|
local_2c = iVar3;
|
|
|
|
local_1c = iVar5;
|
|
|
|
do {
|
|
|
|
iVar2 = iVar7 * 0x80 * local_1c + local_34 +
|
|
|
|
*(int *)(param_1 + 0x4de4) + local_20 + iVar6;
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
iVar7 = 0;
|
|
|
|
local_48 = iVar6;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x4c) <= iVar3 * 8 * local_18 + iVar7) {
|
|
|
|
piVar1 = *(int **)(param_1 + 0x78);
|
|
|
|
iVar7 = local_30[2];
|
|
|
|
iVar6 = local_48;
|
|
|
|
goto LAB_0064c9e0;
|
|
|
|
}
|
|
|
|
if (param_3[4] == 0) {
|
|
|
|
FUN_0061ff40(param_2,iVar2,param_3[2],param_3[3],param_3[5],local_24);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00620080(param_2,iVar2,param_3[2],param_3[3],param_3[5],local_44c,
|
|
|
|
&local_64,local_24);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x80;
|
|
|
|
iVar7 = iVar7 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
local_30 = (int *)param_3[0xd];
|
|
|
|
iVar3 = local_30[1];
|
|
|
|
} while (iVar5 < iVar3);
|
|
|
|
piVar1 = *(int **)(param_1 + 0x78);
|
|
|
|
iVar7 = local_30[2];
|
|
|
|
iVar6 = local_48;
|
|
|
|
}
|
|
|
|
LAB_0064c9e0:
|
|
|
|
iVar6 = iVar6 + local_44;
|
|
|
|
local_18 = local_18 + 1;
|
|
|
|
iVar5 = local_1c;
|
|
|
|
piVar4 = local_4c;
|
|
|
|
} while (local_18 < (int)piVar1);
|
|
|
|
}
|
|
|
|
piVar4 = piVar4 + 2;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
iVar6 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar3 = local_40;
|
|
|
|
iVar2 = local_28;
|
|
|
|
local_3c = piVar1;
|
|
|
|
}
|
|
|
|
LAB_0064ca30:
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar5 = local_24;
|
|
|
|
} while (iVar2 < iVar6);
|
|
|
|
}
|
|
|
|
FUN_0061fc30(param_2,iVar5);
|
|
|
|
local_64 = 0;
|
|
|
|
}
|
|
|
|
(**(code **)(local_50 + 0x18))();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064cae0 at 0x0064CAE0 (size: 1847) ---
|
|
|
|
|
|
undefined4 FUN_0064cae0(int param_1,char *param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined1 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
int *piVar7;
|
|
|
|
char *pcVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
undefined1 local_44c [1000];
|
|
|
|
undefined4 local_64;
|
|
|
|
int aiStack_60 [4];
|
|
|
|
int local_50;
|
|
|
|
int local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int *local_38;
|
|
|
|
int local_34;
|
|
|
|
int *local_30;
|
|
|
|
int local_2c;
|
|
|
|
int *local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
|
|
|
|
local_14 = 0;
|
|
|
|
iVar9 = 0;
|
|
|
|
local_18 = *(int *)(param_2 + 8);
|
|
|
|
iVar11 = 0;
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37c0);
|
|
|
|
local_64 = 0;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar11 = 0;
|
|
|
|
do {
|
|
|
|
iVar6 = *(int *)(iVar3 + 8 + iVar4) * *(int *)(iVar3 + 4 + iVar4);
|
|
|
|
aiStack_60[iVar9] = iVar6;
|
|
|
|
iVar11 = iVar11 + iVar6;
|
|
|
|
iVar3 = iVar3 + 0x10;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < iVar10);
|
|
|
|
}
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar10 = iVar11 * 0x40 * *(int *)(param_1 + 0x78);
|
|
|
|
if (0 < *param_3) {
|
|
|
|
iVar4 = 0;
|
|
|
|
local_4c = iVar11 * 0x40;
|
|
|
|
local_48 = iVar10;
|
|
|
|
do {
|
|
|
|
iVar3 = *(int *)(iVar4 + param_3[0xd]);
|
|
|
|
param_3[iVar9 + 9] = 0;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
*(undefined4 *)(iVar4 + 0xc + param_3[0xd]) =
|
|
|
|
*(undefined4 *)(param_1 + 0x3704 + *(char *)(iVar3 + 0x37a0 + param_1) * 4);
|
|
|
|
*(undefined4 *)(iVar4 + 0x10 + param_3[0xd]) =
|
|
|
|
*(undefined4 *)(param_1 + 0x36f4 + *(char *)(iVar3 + 0x379c + param_1) * 4);
|
|
|
|
iVar4 = iVar4 + 0x18;
|
|
|
|
} while (iVar9 < *param_3);
|
|
|
|
}
|
|
|
|
iVar9 = 8;
|
|
|
|
param_2[0xc] = '\b';
|
|
|
|
param_2[0xd] = '\0';
|
|
|
|
param_2[0xe] = '\0';
|
|
|
|
param_2[0xf] = '\0';
|
|
|
|
if ((param_3[2] == 0) && (param_3[3] == 0)) {
|
|
|
|
local_44 = 0;
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7c);
|
|
|
|
local_40 = iVar4;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
iVar9 = *(int *)(param_1 + 0x78);
|
|
|
|
local_4c = iVar11 << 7;
|
|
|
|
local_48 = iVar10 * 2;
|
|
|
|
iVar10 = 0;
|
|
|
|
do {
|
|
|
|
iVar11 = 0;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
iVar4 = *param_3;
|
|
|
|
iVar3 = 0;
|
|
|
|
local_20 = local_48 * iVar10;
|
|
|
|
local_44 = iVar10;
|
|
|
|
do {
|
|
|
|
iVar10 = 0;
|
|
|
|
iVar6 = *(int *)(param_1 + 0x4de4) + local_20 + iVar3;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
local_24 = iVar3;
|
|
|
|
local_1c = iVar11;
|
|
|
|
piVar7 = param_3;
|
|
|
|
do {
|
|
|
|
if (0 < aiStack_60[iVar10]) {
|
|
|
|
local_28 = piVar7 + 9;
|
|
|
|
local_2c = iVar10 * 0x18;
|
|
|
|
iVar9 = 0;
|
|
|
|
local_30 = piVar7;
|
|
|
|
do {
|
|
|
|
FUN_0061faf0(param_2,*(undefined4 *)(local_2c + 0xc + param_3[0xd]),local_28,
|
|
|
|
iVar6,param_3[4],param_3[5]);
|
|
|
|
iVar6 = iVar6 + 0x80;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < aiStack_60[iVar10]);
|
|
|
|
iVar4 = *param_3;
|
|
|
|
piVar7 = local_30;
|
|
|
|
}
|
|
|
|
piVar7 = piVar7 + 1;
|
|
|
|
iVar10 = iVar10 + 1;
|
|
|
|
} while (iVar10 < iVar4);
|
|
|
|
iVar9 = *(int *)(param_1 + 0x78);
|
|
|
|
iVar3 = local_24;
|
|
|
|
iVar11 = local_1c;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + local_4c;
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < iVar9);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar10 = local_44;
|
|
|
|
}
|
|
|
|
iVar10 = iVar10 + 1;
|
|
|
|
} while (iVar10 < iVar4);
|
|
|
|
iVar9 = *(int *)(param_2 + 0xc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_38 = (int *)param_3[0xd];
|
|
|
|
iVar9 = *local_38;
|
|
|
|
local_44 = 0;
|
|
|
|
iVar4 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
if (5 < iVar9) {
|
|
|
|
local_44 = 0;
|
|
|
|
local_3c = iVar9 + -6;
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
iVar4 = iVar4 + aiStack_60[local_44] + aiStack_60[local_44 + 1] + aiStack_60[local_44 + 2]
|
|
|
|
+ aiStack_60[local_44 + 3] + aiStack_60[local_44 + 4];
|
|
|
|
local_44 = local_44 + 5;
|
|
|
|
} while (local_44 <= iVar9 + -6);
|
|
|
|
local_40 = iVar4;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
iVar4 = iVar4 + aiStack_60[local_44];
|
|
|
|
local_44 = local_44 + 1;
|
|
|
|
local_40 = iVar4;
|
|
|
|
} while (local_44 < iVar9);
|
|
|
|
}
|
|
|
|
local_44 = 0;
|
|
|
|
iVar9 = *(int *)(param_1 + 0x7c);
|
|
|
|
if (0 < iVar9) {
|
|
|
|
iVar4 = local_38[2];
|
|
|
|
iVar10 = iVar10 * 2;
|
|
|
|
local_4c = iVar11 << 7;
|
|
|
|
local_40 = local_40 << 7;
|
|
|
|
iVar11 = 0;
|
|
|
|
local_3c = iVar4;
|
|
|
|
do {
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
local_24 = iVar10 * iVar11;
|
|
|
|
piVar5 = (int *)0x0;
|
|
|
|
piVar7 = local_38;
|
|
|
|
local_48 = iVar10;
|
|
|
|
local_44 = iVar11;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x50) <= (int)(iVar4 * 8 * local_44 + (int)piVar5)) {
|
|
|
|
iVar9 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar11 = local_44;
|
|
|
|
iVar10 = local_48;
|
|
|
|
local_38 = piVar7;
|
|
|
|
goto LAB_0064d0d3;
|
|
|
|
}
|
|
|
|
local_34 = 0;
|
|
|
|
iVar10 = *(int *)(param_1 + 0x78);
|
|
|
|
if (0 < iVar10) {
|
|
|
|
iVar9 = piVar7[1];
|
|
|
|
local_30 = (int *)0x0;
|
|
|
|
local_2c = iVar9;
|
|
|
|
local_28 = piVar5;
|
|
|
|
local_20 = iVar3;
|
|
|
|
do {
|
|
|
|
iVar11 = (int)local_30 +
|
|
|
|
iVar4 * 0x80 * local_20 + local_40 + *(int *)(param_1 + 0x4de4) + local_24;
|
|
|
|
local_1c = 0;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
iVar10 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x4c) <= iVar9 * 8 * local_34 + iVar10) {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x78);
|
|
|
|
iVar4 = piVar7[2];
|
|
|
|
goto LAB_0064d075;
|
|
|
|
}
|
|
|
|
if (param_3[4] == 0) {
|
|
|
|
FUN_006202f0(param_2,piVar7[4],iVar11,param_3[2],param_3[3],param_3[5]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_006204f0(param_2,piVar7[4],iVar11,param_3[2],param_3[3],param_3[5],
|
|
|
|
local_44c,&local_64);
|
|
|
|
}
|
|
|
|
iVar11 = iVar11 + 0x80;
|
|
|
|
iVar10 = iVar10 + 8;
|
|
|
|
local_1c = local_1c + 1;
|
|
|
|
piVar7 = (int *)param_3[0xd];
|
|
|
|
iVar9 = piVar7[1];
|
|
|
|
} while (local_1c < iVar9);
|
|
|
|
iVar10 = *(int *)(param_1 + 0x78);
|
|
|
|
iVar4 = piVar7[2];
|
|
|
|
}
|
|
|
|
LAB_0064d075:
|
|
|
|
local_34 = local_34 + 1;
|
|
|
|
local_30 = (int *)((int)local_30 + local_4c);
|
|
|
|
piVar5 = local_28;
|
|
|
|
iVar3 = local_20;
|
|
|
|
} while (local_34 < iVar10);
|
|
|
|
}
|
|
|
|
piVar5 = piVar5 + 2;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar4);
|
|
|
|
iVar9 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar11 = local_44;
|
|
|
|
iVar10 = local_48;
|
|
|
|
local_38 = piVar7;
|
|
|
|
}
|
|
|
|
LAB_0064d0d3:
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < iVar9);
|
|
|
|
}
|
|
|
|
FUN_0061fc90(param_2,local_38[4]);
|
|
|
|
FUN_0061fed0(param_2,local_44c,&local_64);
|
|
|
|
local_64 = 0;
|
|
|
|
iVar9 = *(int *)(param_2 + 0xc);
|
|
|
|
}
|
|
|
|
if (7 < iVar9) goto LAB_0064d1d3;
|
|
|
|
pcVar8 = *(char **)(param_2 + 0x10);
|
|
|
|
if (*(char **)(param_2 + 0x18) <= pcVar8) {
|
|
|
|
if (*(int *)(param_2 + 0x3c) == 0) {
|
|
|
|
local_14 = 0xffffffe4;
|
|
|
|
goto LAB_0064d1d3;
|
|
|
|
}
|
|
|
|
iVar10 = FUN_00619550(*(int *)(param_2 + 0x3c),param_2 + 0x40,0x1000,aiStack_60 + 4);
|
|
|
|
if ((iVar10 == 0) || (local_50 != 0x1000)) {
|
|
|
|
local_14 = 0xffffffe9;
|
|
|
|
goto LAB_0064d1d3;
|
|
|
|
}
|
|
|
|
pcVar8 = *(char **)(param_2 + 0x14);
|
|
|
|
}
|
|
|
|
cVar1 = *param_2;
|
|
|
|
*(char **)(param_2 + 0x10) = pcVar8 + 1;
|
|
|
|
*pcVar8 = cVar1;
|
|
|
|
*(int *)(param_2 + 0x1c) = *(int *)(param_2 + 0x1c) + 1;
|
|
|
|
if (cVar1 == -1) {
|
|
|
|
puVar2 = *(undefined1 **)(param_2 + 0x10);
|
|
|
|
*(undefined1 **)(param_2 + 0x10) = puVar2 + 1;
|
|
|
|
*puVar2 = 0;
|
|
|
|
*(int *)(param_2 + 0x1c) = *(int *)(param_2 + 0x1c) + 1;
|
|
|
|
}
|
|
|
|
iVar10 = *(int *)(param_2 + 0x34);
|
|
|
|
param_2[0] = '\0';
|
|
|
|
param_2[1] = '\0';
|
|
|
|
param_2[2] = '\0';
|
|
|
|
param_2[3] = '\0';
|
|
|
|
param_2[4] = '\0';
|
|
|
|
param_2[5] = '\0';
|
|
|
|
param_2[6] = '\0';
|
|
|
|
param_2[7] = '\0';
|
|
|
|
if (iVar10 < 3) {
|
|
|
|
param_2[0xc] = '\b';
|
|
|
|
param_2[0xd] = '\0';
|
|
|
|
param_2[0xe] = '\0';
|
|
|
|
param_2[0xf] = '\0';
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2[0xc] = '\0';
|
|
|
|
param_2[0xd] = '\0';
|
|
|
|
param_2[0xe] = '\0';
|
|
|
|
param_2[0xf] = '\0';
|
|
|
|
}
|
|
|
|
LAB_0064d1d3:
|
|
|
|
(**(code **)(local_18 + 0x18))();
|
|
|
|
return local_14;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064d230 at 0x0064D230 (size: 1501) ---
|
|
|
|
|
|
int FUN_0064d230(int param_1,int param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int *piVar7;
|
|
|
|
short *psVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int aiStack_a4 [4];
|
|
|
|
undefined4 auStack_94 [4];
|
|
|
|
undefined4 auStack_84 [4];
|
|
|
|
undefined4 auStack_74 [4];
|
|
|
|
int local_64;
|
|
|
|
int local_60;
|
|
|
|
int local_5c;
|
|
|
|
int local_58;
|
|
|
|
int local_54;
|
|
|
|
short *local_50;
|
|
|
|
int local_4c;
|
|
|
|
int local_48;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int *local_2c;
|
|
|
|
int *local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_3c = 0;
|
|
|
|
iVar1 = 0;
|
|
|
|
local_30 = *param_3;
|
|
|
|
iVar9 = *(int *)(param_2 + 8);
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0 < *param_3) {
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar5 = 0;
|
|
|
|
local_5c = 0;
|
|
|
|
iVar4 = 0;
|
|
|
|
local_58 = *(int *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
if (*(int *)(param_1 + 0x37e0) == 0) {
|
|
|
|
param_3[iVar1 + 9] = 0;
|
|
|
|
local_30 = *param_3;
|
|
|
|
}
|
|
|
|
iVar6 = *(int *)(iVar9 + 8 + param_3[0xd]) * *(int *)(iVar9 + 4 + param_3[0xd]);
|
|
|
|
iVar4 = iVar4 + iVar6;
|
|
|
|
iVar9 = iVar9 + 0x18;
|
|
|
|
aiStack_a4[iVar1] = iVar6;
|
|
|
|
auStack_94[iVar1] =
|
|
|
|
*(undefined4 *)(param_1 + 0x3704 + *(char *)(param_1 + 0x37a0 + iVar1) * 4);
|
|
|
|
auStack_84[iVar1] =
|
|
|
|
*(undefined4 *)(param_1 + 0x36f4 + *(char *)(param_1 + 0x379c + iVar1) * 4);
|
|
|
|
iVar6 = iVar5 + 0xc;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
auStack_74[iVar1] =
|
|
|
|
*(undefined4 *)(param_1 + 0x36e4 + *(int *)(iVar6 + *(int *)(param_1 + 0x37cc)) * 4);
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < local_30);
|
|
|
|
local_3c = iVar4;
|
|
|
|
iVar9 = local_58;
|
|
|
|
iVar4 = local_5c;
|
|
|
|
}
|
|
|
|
iVar1 = param_3[8];
|
|
|
|
iVar5 = *(int *)(param_1 + 0x7c);
|
|
|
|
if (iVar1 < iVar5) {
|
|
|
|
local_5c = iVar4;
|
|
|
|
local_60 = *(int *)(param_1 + 0x78);
|
|
|
|
local_58 = iVar9;
|
|
|
|
iVar6 = local_3c;
|
|
|
|
do {
|
|
|
|
local_64 = param_3[7];
|
|
|
|
if (param_3[7] < local_60) {
|
|
|
|
local_14 = iVar1 << 7;
|
|
|
|
local_18 = iVar6 * 0x40 + -1;
|
|
|
|
local_1c = iVar6 * 0x40;
|
|
|
|
local_20 = iVar1;
|
|
|
|
iVar4 = local_30;
|
|
|
|
do {
|
|
|
|
psVar8 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar3 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
(**(code **)(local_58 + 0x60))(param_1,local_64,local_20);
|
|
|
|
piVar3 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
iVar1 = param_3[0xd];
|
|
|
|
local_24 = iVar1;
|
|
|
|
local_50 = psVar8;
|
|
|
|
local_2c = piVar3;
|
|
|
|
local_40 = local_64 << 4;
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar6 = iVar9 * 0x18;
|
|
|
|
iVar5 = *(int *)(iVar6 + 8 + iVar1);
|
|
|
|
if (0 < iVar5) {
|
|
|
|
piVar3 = *(int **)(iVar6 + 4 + iVar1);
|
|
|
|
local_28 = piVar3;
|
|
|
|
local_4c = iVar9 << 4;
|
|
|
|
local_48 = iVar9 * 2;
|
|
|
|
local_54 = iVar6;
|
|
|
|
local_44 = iVar9;
|
|
|
|
piVar7 = local_2c;
|
|
|
|
do {
|
|
|
|
iVar9 = 0;
|
|
|
|
if (0 < (int)piVar3) {
|
|
|
|
local_34 = iVar2 << 7;
|
|
|
|
iVar4 = local_60;
|
|
|
|
local_38 = iVar2;
|
|
|
|
while( true ) {
|
|
|
|
iVar6 = iVar9 * 0x10 + *(int *)((int)piVar7 + local_48 * 2 + 4) +
|
|
|
|
*(int *)(*(int *)(param_1 + 0x37cc) + 4 + local_4c) * local_40 +
|
|
|
|
iVar5 * iVar4 * local_14 * (int)piVar3 +
|
|
|
|
(int)piVar3 * iVar4 * local_34;
|
|
|
|
iVar5 = 0;
|
|
|
|
psVar8 = local_50;
|
|
|
|
local_30 = iVar9;
|
|
|
|
do {
|
|
|
|
(*DAT_008f85a8)(psVar8,iVar6,0x10);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x78);
|
|
|
|
iVar1 = param_3[0xd];
|
|
|
|
piVar3 = *(int **)(local_54 + 4 + iVar1);
|
|
|
|
iVar6 = iVar6 + iVar4 * 0x10 * (int)piVar3;
|
|
|
|
psVar8 = psVar8 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < 8);
|
|
|
|
local_50 = psVar8;
|
|
|
|
iVar9 = local_30 + 1;
|
|
|
|
if ((int)piVar3 <= iVar9) break;
|
|
|
|
piVar7 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar5 = *(int *)(local_54 + 8 + iVar1);
|
|
|
|
}
|
|
|
|
local_60 = iVar4;
|
|
|
|
piVar7 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
iVar5 = *(int *)(local_54 + 8 + iVar1);
|
|
|
|
iVar2 = local_38;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar5);
|
|
|
|
local_2c = piVar7;
|
|
|
|
iVar4 = *param_3;
|
|
|
|
iVar9 = local_44;
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < iVar4);
|
|
|
|
psVar8 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar3 = local_2c;
|
|
|
|
}
|
|
|
|
if ((*piVar3 != 0) && (iVar9 = local_18, local_1c != 0)) {
|
|
|
|
do {
|
|
|
|
*psVar8 = *psVar8 + -0x80;
|
|
|
|
psVar8 = psVar8 + 1;
|
|
|
|
iVar9 = iVar9 + -1;
|
|
|
|
} while (iVar9 != -1);
|
|
|
|
psVar8 = *(short **)(param_1 + 0x4834);
|
|
|
|
piVar3 = *(int **)(param_1 + 0x4ddc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar4 = local_3c;
|
|
|
|
iVar9 = local_58;
|
|
|
|
if (((piVar3 == (int *)0x0) || (*piVar3 != 0)) && (0 < local_3c)) {
|
|
|
|
iVar1 = 0;
|
|
|
|
local_50 = psVar8;
|
|
|
|
do {
|
|
|
|
(**(code **)(iVar9 + 0x44))(psVar8);
|
|
|
|
psVar8 = psVar8 + 0x40;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < iVar4);
|
|
|
|
local_58 = iVar9;
|
|
|
|
psVar8 = local_50;
|
|
|
|
}
|
|
|
|
iVar1 = 0;
|
|
|
|
iVar4 = *param_3;
|
|
|
|
piVar3 = param_3;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
do {
|
|
|
|
iVar9 = local_58;
|
|
|
|
iVar5 = 0;
|
|
|
|
if (0 < aiStack_a4[iVar1]) {
|
|
|
|
local_2c = piVar3 + 9;
|
|
|
|
local_28 = piVar3;
|
|
|
|
do {
|
|
|
|
if ((*(int **)(param_1 + 0x4ddc) == (int *)0x0) ||
|
|
|
|
(**(int **)(param_1 + 0x4ddc) != 0)) {
|
|
|
|
(**(code **)(iVar9 + 0x104))(psVar8,auStack_74[iVar1]);
|
|
|
|
}
|
|
|
|
iVar4 = (**(code **)(iVar9 + 0xf0))
|
|
|
|
(param_2,auStack_94[iVar1],auStack_84[iVar1],local_2c,psVar8);
|
|
|
|
if (iVar4 != 0) goto LAB_0064d77c;
|
|
|
|
psVar8 = psVar8 + 0x40;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < aiStack_a4[iVar1]);
|
|
|
|
local_5c = iVar4;
|
|
|
|
local_58 = iVar9;
|
|
|
|
iVar4 = *param_3;
|
|
|
|
piVar3 = local_28;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
piVar3 = piVar3 + 1;
|
|
|
|
} while (iVar1 < iVar4);
|
|
|
|
}
|
|
|
|
uVar10 = param_3[6] + 1;
|
|
|
|
param_3[6] = uVar10;
|
|
|
|
if (uVar10 % *(uint *)(param_1 + 0x37d0) == 0) {
|
|
|
|
uVar10 = uVar10 / *(uint *)(param_1 + 0x37d0) - 1 & 7;
|
|
|
|
if (uVar10 == 7) {
|
|
|
|
param_3[6] = 0;
|
|
|
|
}
|
|
|
|
local_5c = FUN_0064ba60(uVar10,param_2);
|
|
|
|
iVar9 = local_58;
|
|
|
|
iVar4 = local_5c;
|
|
|
|
if (local_5c != 0) goto LAB_0064d77c;
|
|
|
|
iVar9 = 0;
|
|
|
|
iVar4 = *param_3;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
do {
|
|
|
|
param_3[iVar9 + 9] = 0;
|
|
|
|
iVar4 = *param_3;
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
} while (iVar9 < iVar4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x1c) != 0) {
|
|
|
|
*(int *)(param_1 + 0xc) = local_64;
|
|
|
|
*(int *)(param_1 + 0x10) = local_20;
|
|
|
|
iVar9 = (local_64 + 1) % *(int *)(param_1 + 0x78);
|
|
|
|
param_3[7] = iVar9;
|
|
|
|
if (iVar9 == 0) {
|
|
|
|
param_3[8] = local_20 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_3[8] = local_20;
|
|
|
|
}
|
|
|
|
iVar9 = local_58;
|
|
|
|
iVar4 = 1;
|
|
|
|
goto LAB_0064d77c;
|
|
|
|
}
|
|
|
|
local_64 = local_64 + 1;
|
|
|
|
local_60 = *(int *)(param_1 + 0x78);
|
|
|
|
} while (local_64 < *(int *)(param_1 + 0x78));
|
|
|
|
local_30 = iVar4;
|
|
|
|
iVar5 = *(int *)(param_1 + 0x7c);
|
|
|
|
iVar6 = local_3c;
|
|
|
|
iVar1 = local_20;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar9 = local_58;
|
|
|
|
iVar4 = local_5c;
|
|
|
|
} while (iVar1 < iVar5);
|
|
|
|
}
|
|
|
|
LAB_0064d77c:
|
|
|
|
(**(code **)(iVar9 + 0x18))();
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064d830 at 0x0064D830 (size: 735) ---
|
|
|
|
|
|
undefined8 __fastcall
|
|
|
|
FUN_0064d830(undefined4 param_1,undefined4 param_2,undefined8 *param_3,undefined8 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
short sVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined4 in_EAX;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
undefined8 uVar8;
|
|
|
|
undefined8 uVar9;
|
|
|
|
short sVar10;
|
|
|
|
short sVar11;
|
|
|
|
short sVar12;
|
|
|
|
short sVar13;
|
|
|
|
short sVar14;
|
|
|
|
short sVar15;
|
|
|
|
short sVar16;
|
|
|
|
short sVar17;
|
|
|
|
|
|
|
|
uVar5 = DAT_00833350;
|
|
|
|
uVar4 = DAT_00833348;
|
|
|
|
uVar6 = param_3[0xf];
|
|
|
|
uVar7 = param_3[0xe];
|
|
|
|
sVar10 = (short)DAT_00833340;
|
|
|
|
sVar11 = (short)((ulonglong)DAT_00833340 >> 0x10);
|
|
|
|
sVar12 = (short)((ulonglong)DAT_00833340 >> 0x20);
|
|
|
|
sVar13 = (short)((ulonglong)DAT_00833340 >> 0x30);
|
|
|
|
uVar6 = paddusw(CONCAT26((short)((ulonglong)uVar6 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar6 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar6 >> 0x10) + sVar11,
|
|
|
|
(short)uVar6 + sVar10))),DAT_00833348);
|
|
|
|
uVar6 = psubusw(uVar6,DAT_00833350);
|
|
|
|
uVar7 = paddusw(CONCAT26((short)((ulonglong)uVar7 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar7 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar7 >> 0x10) + sVar11,
|
|
|
|
(short)uVar7 + sVar10))),DAT_00833348);
|
|
|
|
sVar14 = (short)DAT_00833358;
|
|
|
|
sVar15 = (short)((ulonglong)DAT_00833358 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)DAT_00833358 >> 0x20);
|
|
|
|
sVar17 = (short)((ulonglong)DAT_00833358 >> 0x30);
|
|
|
|
uVar8 = psubusw(uVar7,DAT_00833350);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar6 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar6 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar6 >> 0x10) + sVar15,
|
|
|
|
(short)uVar6 + sVar14))),2);
|
|
|
|
uVar7 = pmulhw(uVar6,param_4[0xf]);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,param_4[0xe]);
|
|
|
|
uVar6 = param_4[0xd];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar7 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar7 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar7 >> 0x10) + sVar1,
|
|
|
|
(short)uVar7 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[0xc];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[0xf] = uVar8;
|
|
|
|
param_3[0xe] = uVar9;
|
|
|
|
uVar8 = param_3[0xd];
|
|
|
|
uVar9 = param_3[0xc];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[0xb];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[10];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[0xd] = uVar8;
|
|
|
|
param_3[0xc] = uVar9;
|
|
|
|
uVar8 = param_3[0xb];
|
|
|
|
uVar9 = param_3[10];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[9];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[8];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[0xb] = uVar8;
|
|
|
|
param_3[10] = uVar9;
|
|
|
|
uVar8 = param_3[9];
|
|
|
|
uVar9 = param_3[8];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[7];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[6];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[9] = uVar8;
|
|
|
|
param_3[8] = uVar9;
|
|
|
|
uVar8 = param_3[7];
|
|
|
|
uVar9 = param_3[6];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[5];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[4];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[7] = uVar8;
|
|
|
|
param_3[6] = uVar9;
|
|
|
|
uVar8 = param_3[5];
|
|
|
|
uVar9 = param_3[4];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[3];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = param_4[2];
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[5] = uVar8;
|
|
|
|
param_3[4] = uVar9;
|
|
|
|
uVar8 = param_3[3];
|
|
|
|
uVar9 = param_3[2];
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar8 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar6 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar9 = pmulhw(uVar6,uVar7);
|
|
|
|
uVar6 = param_4[1];
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar8 = psraw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar1,
|
|
|
|
(short)uVar8 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = *param_4;
|
|
|
|
uVar9 = psraw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar1,
|
|
|
|
(short)uVar9 + (short)DAT_00833360))),1);
|
|
|
|
param_3[3] = uVar8;
|
|
|
|
param_3[2] = uVar9;
|
|
|
|
uVar8 = param_3[1];
|
|
|
|
uVar9 = *param_3;
|
|
|
|
uVar8 = paddusw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar11,
|
|
|
|
(short)uVar8 + sVar10))),uVar4);
|
|
|
|
uVar8 = psubusw(uVar8,uVar5);
|
|
|
|
uVar9 = paddusw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar13,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar12,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar11,
|
|
|
|
(short)uVar9 + sVar10))),uVar4);
|
|
|
|
uVar9 = psubusw(uVar9,uVar5);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar8 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar8 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar8 >> 0x10) + sVar15,
|
|
|
|
(short)uVar8 + sVar14))),2);
|
|
|
|
uVar6 = pmulhw(uVar8,uVar6);
|
|
|
|
uVar8 = psllw(CONCAT26((short)((ulonglong)uVar9 >> 0x30) + sVar17,
|
|
|
|
CONCAT24((short)((ulonglong)uVar9 >> 0x20) + sVar16,
|
|
|
|
CONCAT22((short)((ulonglong)uVar9 >> 0x10) + sVar15,
|
|
|
|
(short)uVar9 + sVar14))),2);
|
|
|
|
uVar7 = pmulhw(uVar8,uVar7);
|
|
|
|
sVar1 = (short)((ulonglong)DAT_00833360 >> 0x10);
|
|
|
|
sVar2 = (short)((ulonglong)DAT_00833360 >> 0x20);
|
|
|
|
sVar3 = (short)((ulonglong)DAT_00833360 >> 0x30);
|
|
|
|
uVar6 = psraw(CONCAT26((short)((ulonglong)uVar6 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar6 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar6 >> 0x10) + sVar1,
|
|
|
|
(short)uVar6 + (short)DAT_00833360))),1);
|
|
|
|
uVar7 = psraw(CONCAT26((short)((ulonglong)uVar7 >> 0x30) + sVar3,
|
|
|
|
CONCAT24((short)((ulonglong)uVar7 >> 0x20) + sVar2,
|
|
|
|
CONCAT22((short)((ulonglong)uVar7 >> 0x10) + sVar1,
|
|
|
|
(short)uVar7 + (short)DAT_00833360))),1);
|
|
|
|
param_3[1] = uVar6;
|
|
|
|
*param_3 = uVar7;
|
|
|
|
return CONCAT44(param_2,in_EAX);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064db10 at 0x0064DB10 (size: 1453) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 __fastcall FUN_0064db10(undefined4 param_1,undefined4 param_2,undefined8 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined4 in_EAX;
|
|
|
|
short sVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
short sVar7;
|
|
|
|
short sVar8;
|
|
|
|
short sVar9;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
short sVar11;
|
|
|
|
short sVar12;
|
|
|
|
short sVar13;
|
|
|
|
undefined8 uVar10;
|
|
|
|
short sVar14;
|
|
|
|
short sVar16;
|
|
|
|
short sVar17;
|
|
|
|
short sVar18;
|
|
|
|
undefined8 uVar15;
|
|
|
|
short sVar19;
|
|
|
|
short sVar20;
|
|
|
|
short sVar21;
|
|
|
|
short sVar22;
|
|
|
|
short sVar23;
|
|
|
|
short sVar24;
|
|
|
|
undefined4 uVar25;
|
|
|
|
undefined4 uVar26;
|
|
|
|
short sVar28;
|
|
|
|
short sVar29;
|
|
|
|
short sVar30;
|
|
|
|
short sVar31;
|
|
|
|
short sVar32;
|
|
|
|
short sVar33;
|
|
|
|
undefined8 uVar27;
|
|
|
|
short sVar34;
|
|
|
|
short sVar35;
|
|
|
|
short sVar36;
|
|
|
|
short sVar37;
|
|
|
|
short sVar38;
|
|
|
|
undefined4 uVar39;
|
|
|
|
undefined4 uVar40;
|
|
|
|
short sVar42;
|
|
|
|
short sVar43;
|
|
|
|
short sVar44;
|
|
|
|
undefined8 uVar41;
|
|
|
|
|
|
|
|
uVar5 = param_3[9];
|
|
|
|
uVar15 = param_3[0xb];
|
|
|
|
uVar10 = param_3[0xd];
|
|
|
|
uVar27 = param_3[0xf];
|
|
|
|
uVar4 = CONCAT22((short)((ulonglong)uVar15 >> 0x20),(short)((ulonglong)uVar5 >> 0x20));
|
|
|
|
uVar6 = param_3[8];
|
|
|
|
uVar25 = CONCAT22((short)((ulonglong)uVar27 >> 0x20),(short)((ulonglong)uVar10 >> 0x20));
|
|
|
|
param_3[0xb] = CONCAT44(CONCAT22((short)((ulonglong)uVar27 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar10 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar15 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar5 >> 0x10)));
|
|
|
|
uVar41 = param_3[10];
|
|
|
|
param_3[9] = CONCAT44(CONCAT22((short)uVar27,(short)uVar10),CONCAT22((short)uVar15,(short)uVar5));
|
|
|
|
uVar1 = param_3[0xe];
|
|
|
|
param_3[0xf] = CONCAT44((int)(CONCAT26((short)((ulonglong)uVar27 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar10 >> 0x30),uVar25)) >>
|
|
|
|
0x20),
|
|
|
|
(int)(CONCAT26((short)((ulonglong)uVar15 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar5 >> 0x30),uVar4)) >> 0x20)
|
|
|
|
);
|
|
|
|
uVar5 = param_3[0xc];
|
|
|
|
param_3[0xd] = CONCAT44(uVar25,uVar4);
|
|
|
|
uVar4 = CONCAT22((short)((ulonglong)uVar41 >> 0x20),(short)((ulonglong)uVar6 >> 0x20));
|
|
|
|
uVar15 = param_3[1];
|
|
|
|
uVar25 = CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar5 >> 0x20));
|
|
|
|
uVar10 = param_3[5];
|
|
|
|
param_3[1] = CONCAT44(CONCAT22((short)uVar1,(short)uVar5),CONCAT22((short)uVar41,(short)uVar6));
|
|
|
|
uVar27 = param_3[3];
|
|
|
|
param_3[3] = CONCAT44(CONCAT22((short)((ulonglong)uVar1 >> 0x10),(short)((ulonglong)uVar5 >> 0x10)
|
|
|
|
),
|
|
|
|
CONCAT22((short)((ulonglong)uVar41 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar6 >> 0x10)));
|
|
|
|
param_3[5] = CONCAT44(uVar25,uVar4);
|
|
|
|
uVar2 = param_3[7];
|
|
|
|
param_3[7] = CONCAT44((int)(CONCAT26((short)((ulonglong)uVar1 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar5 >> 0x30),uVar25)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)((ulonglong)uVar41 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar6 >> 0x30),uVar4)) >> 0x20));
|
|
|
|
uVar4 = CONCAT22((short)((ulonglong)uVar27 >> 0x20),(short)((ulonglong)uVar15 >> 0x20));
|
|
|
|
uVar5 = *param_3;
|
|
|
|
uVar6 = param_3[2];
|
|
|
|
uVar25 = CONCAT22((short)((ulonglong)uVar2 >> 0x20),(short)((ulonglong)uVar10 >> 0x20));
|
|
|
|
param_3[8] = CONCAT44(CONCAT22((short)uVar2,(short)uVar10),CONCAT22((short)uVar27,(short)uVar15));
|
|
|
|
uVar41 = param_3[4];
|
|
|
|
param_3[10] = CONCAT44(CONCAT22((short)((ulonglong)uVar2 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar10 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar27 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar15 >> 0x10)));
|
|
|
|
param_3[0xe] = CONCAT44((int)(CONCAT26((short)((ulonglong)uVar2 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar10 >> 0x30),uVar25)) >>
|
|
|
|
0x20),
|
|
|
|
(int)(CONCAT26((short)((ulonglong)uVar27 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar15 >> 0x30),uVar4)) >> 0x20
|
|
|
|
));
|
|
|
|
param_3[0xc] = CONCAT44(uVar25,uVar4);
|
|
|
|
sVar7 = (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
sVar3 = (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
uVar15 = param_3[6];
|
|
|
|
sVar23 = (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar28 = (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
uVar25 = CONCAT22(sVar28,sVar23);
|
|
|
|
sVar19 = (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar20 = (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
sVar9 = (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar8 = (short)((ulonglong)uVar41 >> 0x10);
|
|
|
|
sVar30 = (short)((ulonglong)uVar41 >> 0x20);
|
|
|
|
sVar32 = (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
uVar4 = CONCAT22(sVar32,sVar30);
|
|
|
|
sVar21 = (short)((ulonglong)uVar41 >> 0x30);
|
|
|
|
sVar22 = (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
uVar10 = param_3[0xe];
|
|
|
|
uVar27 = param_3[8];
|
|
|
|
*param_3 = CONCAT44(CONCAT22((short)uVar15,(short)uVar41),CONCAT22((short)uVar6,(short)uVar5));
|
|
|
|
param_3[2] = CONCAT44(CONCAT22(sVar9,sVar8),CONCAT22(sVar7,sVar3));
|
|
|
|
sVar34 = (short)uVar5 + (short)uVar10;
|
|
|
|
sVar35 = (short)uVar6 + (short)((ulonglong)uVar10 >> 0x10);
|
|
|
|
sVar36 = (short)uVar41 + (short)((ulonglong)uVar10 >> 0x20);
|
|
|
|
sVar37 = (short)uVar15 + (short)((ulonglong)uVar10 >> 0x30);
|
|
|
|
param_3[4] = CONCAT44(uVar4,uVar25);
|
|
|
|
param_3[6] = CONCAT44((int)(CONCAT26(sVar22,CONCAT24(sVar21,uVar4)) >> 0x20),
|
|
|
|
(int)(CONCAT26(sVar20,CONCAT24(sVar19,uVar25)) >> 0x20));
|
|
|
|
sVar19 = sVar19 + (short)uVar27;
|
|
|
|
sVar20 = sVar20 + (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar21 = sVar21 + (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar22 = sVar22 + (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
uVar5 = param_3[0xc];
|
|
|
|
sVar3 = sVar3 + (short)uVar5;
|
|
|
|
sVar7 = sVar7 + (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar8 = sVar8 + (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar9 = sVar9 + (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar38 = sVar34 - sVar19;
|
|
|
|
sVar42 = sVar35 - sVar20;
|
|
|
|
sVar43 = sVar36 - sVar21;
|
|
|
|
sVar44 = sVar37 - sVar22;
|
|
|
|
uVar5 = param_3[10];
|
|
|
|
sVar23 = sVar23 + (short)uVar5;
|
|
|
|
sVar28 = sVar28 + (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar30 = sVar30 + (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar32 = sVar32 + (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar34 = sVar34 + sVar19;
|
|
|
|
sVar35 = sVar35 + sVar20;
|
|
|
|
sVar36 = sVar36 + sVar21;
|
|
|
|
sVar37 = sVar37 + sVar22;
|
|
|
|
sVar21 = sVar3 + sVar23;
|
|
|
|
sVar20 = sVar7 + sVar28;
|
|
|
|
sVar11 = sVar8 + sVar30;
|
|
|
|
sVar12 = sVar9 + sVar32;
|
|
|
|
uVar5 = psllw(CONCAT26((sVar9 - sVar32) + sVar44,
|
|
|
|
CONCAT24((sVar8 - sVar30) + sVar43,
|
|
|
|
CONCAT22((sVar7 - sVar28) + sVar42,(sVar3 - sVar23) + sVar38))),1)
|
|
|
|
;
|
|
|
|
uVar6 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
uVar5 = param_3[6];
|
|
|
|
uVar15 = param_3[8];
|
|
|
|
uVar10 = param_3[4];
|
|
|
|
sVar7 = (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
sVar9 = (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
uVar27 = param_3[10];
|
|
|
|
sVar14 = (short)uVar10 - (short)uVar27;
|
|
|
|
sVar16 = (short)((ulonglong)uVar10 >> 0x10) - (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar17 = (short)((ulonglong)uVar10 >> 0x20) - (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar18 = (short)((ulonglong)uVar10 >> 0x30) - (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
uVar10 = param_3[2];
|
|
|
|
sVar24 = ((short)uVar5 - (short)uVar15) + sVar14;
|
|
|
|
sVar29 = ((short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10)) + sVar16;
|
|
|
|
sVar31 = ((short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20)) + sVar17;
|
|
|
|
sVar33 = ((short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30)) + sVar18;
|
|
|
|
uVar5 = param_3[0xc];
|
|
|
|
sVar19 = (short)uVar10 - (short)uVar5;
|
|
|
|
sVar28 = (short)((ulonglong)uVar10 >> 0x10) - (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar23 = (short)((ulonglong)uVar10 >> 0x20) - (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar13 = (short)((ulonglong)uVar10 >> 0x30) - (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
uVar5 = *param_3;
|
|
|
|
uVar15 = param_3[0xe];
|
|
|
|
sVar3 = (short)uVar5 - (short)uVar15;
|
|
|
|
sVar8 = (short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar32 = (short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar30 = (short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar18 + sVar13,
|
|
|
|
CONCAT24(sVar17 + sVar23,CONCAT22(sVar16 + sVar28,sVar14 + sVar19))),1);
|
|
|
|
*param_3 = CONCAT26(sVar37 + sVar12,
|
|
|
|
CONCAT24(sVar36 + sVar11,CONCAT22(sVar35 + sVar20,sVar34 + sVar21)));
|
|
|
|
param_3[4] = CONCAT26(sVar44 + sVar22,
|
|
|
|
CONCAT24(sVar43 + sVar9,CONCAT22(sVar42 + sVar7,sVar38 + (short)uVar6)));
|
|
|
|
uVar15 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
sVar19 = sVar19 + sVar3;
|
|
|
|
sVar28 = sVar28 + sVar8;
|
|
|
|
sVar23 = sVar23 + sVar32;
|
|
|
|
sVar13 = sVar13 + sVar30;
|
|
|
|
param_3[8] = CONCAT26(sVar37 - sVar12,
|
|
|
|
CONCAT24(sVar36 - sVar11,CONCAT22(sVar35 - sVar20,sVar34 - sVar21)));
|
|
|
|
uVar27 = pmulhw(CONCAT26(sVar33 - sVar13,
|
|
|
|
CONCAT24(sVar31 - sVar23,CONCAT22(sVar29 - sVar28,sVar24 - sVar19))),
|
|
|
|
_DAT_00833320);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar33,CONCAT24(sVar31,CONCAT22(sVar29,sVar24))),1);
|
|
|
|
uVar41 = pmulhw(uVar5,_DAT_00833328);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar13,CONCAT24(sVar23,CONCAT22(sVar28,sVar19))),2);
|
|
|
|
uVar10 = pmulhw(uVar5,_DAT_00833338);
|
|
|
|
sVar23 = sVar3 - (short)uVar15;
|
|
|
|
sVar21 = (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar12 = sVar8 - sVar21;
|
|
|
|
sVar19 = (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar13 = sVar32 - sVar19;
|
|
|
|
sVar20 = (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar14 = sVar30 - sVar20;
|
|
|
|
param_3[0xc] = CONCAT26(sVar44 - sVar22,
|
|
|
|
CONCAT24(sVar43 - sVar9,CONCAT22(sVar42 - sVar7,sVar38 - (short)uVar6)));
|
|
|
|
sVar3 = sVar3 + (short)uVar15;
|
|
|
|
sVar8 = sVar8 + sVar21;
|
|
|
|
sVar32 = sVar32 + sVar19;
|
|
|
|
sVar30 = sVar30 + sVar20;
|
|
|
|
uVar5 = param_3[7];
|
|
|
|
sVar16 = (short)uVar41 + (short)uVar27;
|
|
|
|
sVar22 = (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar17 = (short)((ulonglong)uVar41 >> 0x10) + sVar22;
|
|
|
|
sVar19 = (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar18 = (short)((ulonglong)uVar41 >> 0x20) + sVar19;
|
|
|
|
sVar28 = (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
sVar24 = (short)((ulonglong)uVar41 >> 0x30) + sVar28;
|
|
|
|
uVar15 = param_3[9];
|
|
|
|
sVar9 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar21 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar20 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar11 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar7 = (short)uVar10 + (short)uVar27;
|
|
|
|
sVar22 = (short)((ulonglong)uVar10 >> 0x10) + sVar22;
|
|
|
|
sVar19 = (short)((ulonglong)uVar10 >> 0x20) + sVar19;
|
|
|
|
sVar28 = (short)((ulonglong)uVar10 >> 0x30) + sVar28;
|
|
|
|
uVar5 = param_3[1];
|
|
|
|
uVar15 = param_3[0xf];
|
|
|
|
sVar29 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar33 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar35 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar37 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
param_3[10] = CONCAT26(sVar14 + sVar24,
|
|
|
|
CONCAT24(sVar13 + sVar18,CONCAT22(sVar12 + sVar17,sVar23 + sVar16)));
|
|
|
|
param_3[6] = CONCAT26(sVar14 - sVar24,
|
|
|
|
CONCAT24(sVar13 - sVar18,CONCAT22(sVar12 - sVar17,sVar23 - sVar16)));
|
|
|
|
uVar5 = param_3[3];
|
|
|
|
uVar15 = param_3[0xd];
|
|
|
|
sVar23 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar13 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar18 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar31 = sVar29 + sVar9;
|
|
|
|
sVar34 = sVar33 + sVar21;
|
|
|
|
sVar36 = sVar35 + sVar20;
|
|
|
|
sVar38 = sVar37 + sVar11;
|
|
|
|
uVar5 = param_3[5];
|
|
|
|
sVar29 = sVar29 - sVar9;
|
|
|
|
sVar33 = sVar33 - sVar21;
|
|
|
|
sVar35 = sVar35 - sVar20;
|
|
|
|
sVar37 = sVar37 - sVar11;
|
|
|
|
uVar15 = param_3[0xb];
|
|
|
|
sVar9 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar21 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar20 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar11 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar12 = sVar23 + sVar9;
|
|
|
|
sVar14 = sVar13 + sVar21;
|
|
|
|
sVar17 = sVar16 + sVar20;
|
|
|
|
sVar24 = sVar18 + sVar11;
|
|
|
|
param_3[2] = CONCAT26(sVar30 + sVar28,
|
|
|
|
CONCAT24(sVar32 + sVar19,CONCAT22(sVar8 + sVar22,sVar3 + sVar7)));
|
|
|
|
param_3[0xe] = CONCAT26(sVar30 - sVar28,
|
|
|
|
CONCAT24(sVar32 - sVar19,CONCAT22(sVar8 - sVar22,sVar3 - sVar7)));
|
|
|
|
uVar5 = psllw(CONCAT26((sVar18 - sVar11) + sVar37,
|
|
|
|
CONCAT24((sVar16 - sVar20) + sVar35,
|
|
|
|
CONCAT22((sVar13 - sVar21) + sVar33,(sVar23 - sVar9) + sVar29))),1
|
|
|
|
);
|
|
|
|
uVar6 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
uVar5 = param_3[7];
|
|
|
|
uVar15 = param_3[9];
|
|
|
|
uVar10 = param_3[5];
|
|
|
|
uVar27 = param_3[0xb];
|
|
|
|
sVar3 = (short)uVar10 - (short)uVar27;
|
|
|
|
sVar7 = (short)((ulonglong)uVar10 >> 0x10) - (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar8 = (short)((ulonglong)uVar10 >> 0x20) - (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar9 = (short)((ulonglong)uVar10 >> 0x30) - (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
sVar42 = (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
sVar43 = (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
sVar44 = (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
uVar10 = param_3[3];
|
|
|
|
uVar27 = param_3[0xd];
|
|
|
|
sVar19 = (short)uVar10 - (short)uVar27;
|
|
|
|
sVar20 = (short)((ulonglong)uVar10 >> 0x10) - (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar28 = (short)((ulonglong)uVar10 >> 0x20) - (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar11 = (short)((ulonglong)uVar10 >> 0x30) - (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
sVar32 = ((short)uVar5 - (short)uVar15) + sVar3;
|
|
|
|
sVar22 = ((short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10)) + sVar7;
|
|
|
|
sVar30 = ((short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20)) + sVar8;
|
|
|
|
sVar21 = ((short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30)) + sVar9;
|
|
|
|
uVar5 = param_3[1];
|
|
|
|
uVar15 = param_3[0xf];
|
|
|
|
sVar23 = (short)uVar5 - (short)uVar15;
|
|
|
|
sVar13 = (short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar18 = (short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar9 + sVar11,
|
|
|
|
CONCAT24(sVar8 + sVar28,CONCAT22(sVar7 + sVar20,sVar3 + sVar19))),1);
|
|
|
|
param_3[1] = CONCAT26(sVar38 + sVar24,
|
|
|
|
CONCAT24(sVar36 + sVar17,CONCAT22(sVar34 + sVar14,sVar31 + sVar12)));
|
|
|
|
param_3[5] = CONCAT26(sVar37 + sVar44,
|
|
|
|
CONCAT24(sVar35 + sVar43,CONCAT22(sVar33 + sVar42,sVar29 + (short)uVar6)));
|
|
|
|
uVar5 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
sVar19 = sVar19 + sVar23;
|
|
|
|
sVar20 = sVar20 + sVar13;
|
|
|
|
sVar28 = sVar28 + sVar16;
|
|
|
|
sVar11 = sVar11 + sVar18;
|
|
|
|
param_3[9] = CONCAT26(sVar38 - sVar24,
|
|
|
|
CONCAT24(sVar36 - sVar17,CONCAT22(sVar34 - sVar14,sVar31 - sVar12)));
|
|
|
|
uVar15 = pmulhw(CONCAT26(sVar21 - sVar11,
|
|
|
|
CONCAT24(sVar30 - sVar28,CONCAT22(sVar22 - sVar20,sVar32 - sVar19))),
|
|
|
|
_DAT_00833320);
|
|
|
|
uVar10 = psllw(CONCAT26(sVar21,CONCAT24(sVar30,CONCAT22(sVar22,sVar32))),1);
|
|
|
|
uVar27 = pmulhw(uVar10,_DAT_00833328);
|
|
|
|
sVar32 = sVar23 + (short)uVar5;
|
|
|
|
sVar3 = (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar22 = sVar13 + sVar3;
|
|
|
|
sVar7 = (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar30 = sVar16 + sVar7;
|
|
|
|
sVar8 = (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar21 = sVar18 + sVar8;
|
|
|
|
param_3[0xd] = CONCAT26(sVar37 - sVar44,
|
|
|
|
CONCAT24(sVar35 - sVar43,CONCAT22(sVar33 - sVar42,sVar29 - (short)uVar6)))
|
|
|
|
;
|
|
|
|
uVar10 = psllw(CONCAT26(sVar11,CONCAT24(sVar28,CONCAT22(sVar20,sVar19))),2);
|
|
|
|
uVar10 = pmulhw(uVar10,_DAT_00833338);
|
|
|
|
sVar23 = sVar23 - (short)uVar5;
|
|
|
|
sVar13 = sVar13 - sVar3;
|
|
|
|
sVar16 = sVar16 - sVar7;
|
|
|
|
sVar18 = sVar18 - sVar8;
|
|
|
|
sVar19 = (short)uVar27 + (short)uVar15;
|
|
|
|
sVar3 = (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar20 = (short)((ulonglong)uVar27 >> 0x10) + sVar3;
|
|
|
|
sVar7 = (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar28 = (short)((ulonglong)uVar27 >> 0x20) + sVar7;
|
|
|
|
sVar8 = (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar11 = (short)((ulonglong)uVar27 >> 0x30) + sVar8;
|
|
|
|
uVar5 = param_3[8];
|
|
|
|
sVar9 = (short)uVar10 + (short)uVar15;
|
|
|
|
sVar3 = (short)((ulonglong)uVar10 >> 0x10) + sVar3;
|
|
|
|
sVar7 = (short)((ulonglong)uVar10 >> 0x20) + sVar7;
|
|
|
|
sVar8 = (short)((ulonglong)uVar10 >> 0x30) + sVar8;
|
|
|
|
param_3[0xb] = CONCAT26(sVar18 + sVar11,
|
|
|
|
CONCAT24(sVar16 + sVar28,CONCAT22(sVar13 + sVar20,sVar23 + sVar19)));
|
|
|
|
uVar15 = param_3[0xe];
|
|
|
|
uVar10 = param_3[10];
|
|
|
|
uVar27 = param_3[0xc];
|
|
|
|
uVar4 = CONCAT22((short)((ulonglong)uVar10 >> 0x20),(short)((ulonglong)uVar5 >> 0x20));
|
|
|
|
param_3[0xf] = CONCAT26(sVar21 - sVar8,
|
|
|
|
CONCAT24(sVar30 - sVar7,CONCAT22(sVar22 - sVar3,sVar32 - sVar9)));
|
|
|
|
uVar25 = CONCAT22((short)((ulonglong)uVar15 >> 0x20),(short)((ulonglong)uVar27 >> 0x20));
|
|
|
|
uVar6 = param_3[1];
|
|
|
|
param_3[1] = CONCAT44(CONCAT22((short)uVar15,(short)uVar27),CONCAT22((short)uVar10,(short)uVar5));
|
|
|
|
param_3[3] = CONCAT44(CONCAT22((short)((ulonglong)uVar15 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar27 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar10 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar5 >> 0x10)));
|
|
|
|
uVar41 = param_3[5];
|
|
|
|
param_3[5] = CONCAT44(uVar25,uVar4);
|
|
|
|
uVar26 = CONCAT22(sVar30 + sVar7,(short)((ulonglong)uVar6 >> 0x20));
|
|
|
|
uVar39 = CONCAT22(sVar16 - sVar28,(short)((ulonglong)uVar41 >> 0x20));
|
|
|
|
param_3[7] = CONCAT44((int)(CONCAT26((short)((ulonglong)uVar15 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar27 >> 0x30),uVar25)) >> 0x20)
|
|
|
|
,(int)(CONCAT26((short)((ulonglong)uVar10 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar5 >> 0x30),uVar4)) >> 0x20))
|
|
|
|
;
|
|
|
|
uVar5 = param_3[0xb];
|
|
|
|
uVar15 = param_3[9];
|
|
|
|
uVar10 = param_3[0xd];
|
|
|
|
param_3[8] = CONCAT44(CONCAT22(sVar23 - sVar19,(short)uVar41),
|
|
|
|
CONCAT22(sVar32 + sVar9,(short)uVar6));
|
|
|
|
param_3[10] = CONCAT44(CONCAT22(sVar13 - sVar20,(short)((ulonglong)uVar41 >> 0x10)),
|
|
|
|
CONCAT22(sVar22 + sVar3,(short)((ulonglong)uVar6 >> 0x10)));
|
|
|
|
uVar27 = param_3[0xf];
|
|
|
|
param_3[0xc] = CONCAT44(uVar39,uVar26);
|
|
|
|
uVar40 = CONCAT22((short)((ulonglong)uVar5 >> 0x20),(short)((ulonglong)uVar15 >> 0x20));
|
|
|
|
param_3[0xe] = CONCAT44((int)(CONCAT26(sVar18 - sVar11,
|
|
|
|
CONCAT24((short)((ulonglong)uVar41 >> 0x30),uVar39)) >>
|
|
|
|
0x20),
|
|
|
|
(int)(CONCAT26(sVar21 + sVar8,
|
|
|
|
CONCAT24((short)((ulonglong)uVar6 >> 0x30),uVar26)) >> 0x20
|
|
|
|
));
|
|
|
|
uVar25 = CONCAT22((short)((ulonglong)uVar27 >> 0x20),(short)((ulonglong)uVar10 >> 0x20));
|
|
|
|
uVar6 = *param_3;
|
|
|
|
uVar41 = param_3[2];
|
|
|
|
param_3[9] = CONCAT44(CONCAT22((short)uVar27,(short)uVar10),CONCAT22((short)uVar5,(short)uVar15));
|
|
|
|
param_3[0xb] = CONCAT44(CONCAT22((short)((ulonglong)uVar27 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar10 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar5 >> 0x10),
|
|
|
|
(short)((ulonglong)uVar15 >> 0x10)));
|
|
|
|
uVar1 = param_3[6];
|
|
|
|
param_3[0xf] = CONCAT44((int)(CONCAT26((short)((ulonglong)uVar27 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar10 >> 0x30),uVar25)) >>
|
|
|
|
0x20),
|
|
|
|
(int)(CONCAT26((short)((ulonglong)uVar5 >> 0x30),
|
|
|
|
CONCAT24((short)((ulonglong)uVar15 >> 0x30),uVar40)) >>
|
|
|
|
0x20));
|
|
|
|
sVar11 = (short)((ulonglong)uVar41 >> 0x10);
|
|
|
|
sVar8 = (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
uVar5 = param_3[4];
|
|
|
|
sVar17 = (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
sVar18 = (short)((ulonglong)uVar41 >> 0x20);
|
|
|
|
uVar4 = CONCAT22(sVar18,sVar17);
|
|
|
|
sVar23 = (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
sVar14 = (short)((ulonglong)uVar41 >> 0x30);
|
|
|
|
sVar28 = (short)((ulonglong)uVar1 >> 0x10);
|
|
|
|
sVar13 = (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
param_3[0xd] = CONCAT44(uVar25,uVar40);
|
|
|
|
sVar24 = (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar12 = (short)((ulonglong)uVar1 >> 0x20);
|
|
|
|
uVar25 = CONCAT22(sVar12,sVar24);
|
|
|
|
sVar16 = (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar20 = (short)((ulonglong)uVar1 >> 0x30);
|
|
|
|
uVar15 = param_3[8];
|
|
|
|
*param_3 = CONCAT44(CONCAT22((short)uVar1,(short)uVar5),CONCAT22((short)uVar41,(short)uVar6));
|
|
|
|
uVar10 = param_3[0xe];
|
|
|
|
sVar3 = (short)uVar6 + (short)uVar10;
|
|
|
|
sVar9 = (short)uVar41 + (short)((ulonglong)uVar10 >> 0x10);
|
|
|
|
sVar22 = (short)uVar5 + (short)((ulonglong)uVar10 >> 0x20);
|
|
|
|
sVar21 = (short)uVar1 + (short)((ulonglong)uVar10 >> 0x30);
|
|
|
|
param_3[2] = CONCAT44(CONCAT22(sVar28,sVar13),CONCAT22(sVar11,sVar8));
|
|
|
|
param_3[6] = CONCAT44((int)(CONCAT26(sVar20,CONCAT24(sVar16,uVar25)) >> 0x20),
|
|
|
|
(int)(CONCAT26(sVar14,CONCAT24(sVar23,uVar4)) >> 0x20));
|
|
|
|
uVar5 = param_3[0xc];
|
|
|
|
sVar8 = sVar8 + (short)uVar5;
|
|
|
|
sVar11 = sVar11 + (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar13 = sVar13 + (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar28 = sVar28 + (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar23 = sVar23 + (short)uVar15;
|
|
|
|
sVar14 = sVar14 + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar16 = sVar16 + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar20 = sVar20 + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
param_3[4] = CONCAT44(uVar25,uVar4);
|
|
|
|
sVar7 = sVar3 + sVar23;
|
|
|
|
sVar32 = sVar9 + sVar14;
|
|
|
|
sVar30 = sVar22 + sVar16;
|
|
|
|
sVar19 = sVar21 + sVar20;
|
|
|
|
uVar5 = param_3[10];
|
|
|
|
sVar17 = sVar17 + (short)uVar5;
|
|
|
|
sVar18 = sVar18 + (short)((ulonglong)uVar5 >> 0x10);
|
|
|
|
sVar24 = sVar24 + (short)((ulonglong)uVar5 >> 0x20);
|
|
|
|
sVar12 = sVar12 + (short)((ulonglong)uVar5 >> 0x30);
|
|
|
|
sVar3 = sVar3 - sVar23;
|
|
|
|
sVar9 = sVar9 - sVar14;
|
|
|
|
sVar22 = sVar22 - sVar16;
|
|
|
|
sVar21 = sVar21 - sVar20;
|
|
|
|
uVar5 = param_3[4];
|
|
|
|
sVar20 = sVar8 + sVar17;
|
|
|
|
sVar23 = sVar11 + sVar18;
|
|
|
|
sVar14 = sVar13 + sVar24;
|
|
|
|
sVar16 = sVar28 + sVar12;
|
|
|
|
uVar15 = param_3[6];
|
|
|
|
uVar10 = param_3[8];
|
|
|
|
param_3[8] = CONCAT26(sVar19 - sVar16,
|
|
|
|
CONCAT24(sVar30 - sVar14,CONCAT22(sVar32 - sVar23,sVar7 - sVar20)));
|
|
|
|
uVar6 = psllw(CONCAT26((sVar28 - sVar12) + sVar21,
|
|
|
|
CONCAT24((sVar13 - sVar24) + sVar22,
|
|
|
|
CONCAT22((sVar11 - sVar18) + sVar9,(sVar8 - sVar17) + sVar3))),1);
|
|
|
|
uVar27 = param_3[2];
|
|
|
|
uVar41 = pmulhw(uVar6,_DAT_00833330);
|
|
|
|
uVar6 = param_3[10];
|
|
|
|
sVar17 = (short)uVar5 - (short)uVar6;
|
|
|
|
sVar18 = (short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
sVar24 = (short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
sVar35 = (short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
uVar5 = *param_3;
|
|
|
|
sVar28 = ((short)uVar15 - (short)uVar10) + sVar17;
|
|
|
|
sVar11 = ((short)((ulonglong)uVar15 >> 0x10) - (short)((ulonglong)uVar10 >> 0x10)) + sVar18;
|
|
|
|
sVar12 = ((short)((ulonglong)uVar15 >> 0x20) - (short)((ulonglong)uVar10 >> 0x20)) + sVar24;
|
|
|
|
sVar13 = ((short)((ulonglong)uVar15 >> 0x30) - (short)((ulonglong)uVar10 >> 0x30)) + sVar35;
|
|
|
|
*param_3 = CONCAT26(sVar19 + sVar16,
|
|
|
|
CONCAT24(sVar30 + sVar14,CONCAT22(sVar32 + sVar23,sVar7 + sVar20)));
|
|
|
|
sVar23 = (short)((ulonglong)uVar41 >> 0x10);
|
|
|
|
sVar14 = (short)((ulonglong)uVar41 >> 0x20);
|
|
|
|
sVar16 = (short)((ulonglong)uVar41 >> 0x30);
|
|
|
|
uVar15 = param_3[0xc];
|
|
|
|
sVar7 = (short)uVar27 - (short)uVar15;
|
|
|
|
sVar8 = (short)((ulonglong)uVar27 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar32 = (short)((ulonglong)uVar27 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar30 = (short)((ulonglong)uVar27 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
param_3[4] = CONCAT26(sVar21 + sVar16,
|
|
|
|
CONCAT24(sVar22 + sVar14,CONCAT22(sVar9 + sVar23,sVar3 + (short)uVar41)));
|
|
|
|
uVar15 = param_3[0xe];
|
|
|
|
sVar29 = (short)uVar5 - (short)uVar15;
|
|
|
|
sVar31 = (short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar33 = (short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar34 = (short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar35 + sVar30,
|
|
|
|
CONCAT24(sVar24 + sVar32,CONCAT22(sVar18 + sVar8,sVar17 + sVar7))),1);
|
|
|
|
uVar10 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
sVar7 = sVar7 + sVar29;
|
|
|
|
sVar8 = sVar8 + sVar31;
|
|
|
|
sVar32 = sVar32 + sVar33;
|
|
|
|
sVar30 = sVar30 + sVar34;
|
|
|
|
uVar27 = psllw(CONCAT26(sVar13,CONCAT24(sVar12,CONCAT22(sVar11,sVar28))),1);
|
|
|
|
uVar15 = pmulhw(CONCAT26(sVar13 - sVar30,
|
|
|
|
CONCAT24(sVar12 - sVar32,CONCAT22(sVar11 - sVar8,sVar28 - sVar7))),
|
|
|
|
_DAT_00833320);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar30,CONCAT24(sVar32,CONCAT22(sVar8,sVar7))),2);
|
|
|
|
uVar27 = pmulhw(uVar27,_DAT_00833328);
|
|
|
|
sVar7 = sVar29 - (short)uVar10;
|
|
|
|
sVar19 = (short)((ulonglong)uVar10 >> 0x10);
|
|
|
|
sVar8 = sVar31 - sVar19;
|
|
|
|
sVar20 = (short)((ulonglong)uVar10 >> 0x20);
|
|
|
|
sVar32 = sVar33 - sVar20;
|
|
|
|
sVar28 = (short)((ulonglong)uVar10 >> 0x30);
|
|
|
|
sVar30 = sVar34 - sVar28;
|
|
|
|
uVar5 = pmulhw(uVar5,_DAT_00833338);
|
|
|
|
param_3[0xc] = CONCAT26(sVar21 - sVar16,
|
|
|
|
CONCAT24(sVar22 - sVar14,CONCAT22(sVar9 - sVar23,sVar3 - (short)uVar41)));
|
|
|
|
sVar29 = sVar29 + (short)uVar10;
|
|
|
|
sVar31 = sVar31 + sVar19;
|
|
|
|
sVar33 = sVar33 + sVar20;
|
|
|
|
sVar34 = sVar34 + sVar28;
|
|
|
|
sVar3 = (short)uVar27 + (short)uVar15;
|
|
|
|
sVar28 = (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar9 = (short)((ulonglong)uVar27 >> 0x10) + sVar28;
|
|
|
|
sVar23 = (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar27 >> 0x20) + sVar23;
|
|
|
|
sVar13 = (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar21 = (short)((ulonglong)uVar27 >> 0x30) + sVar13;
|
|
|
|
sVar19 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar28 = (short)((ulonglong)uVar5 >> 0x10) + sVar28;
|
|
|
|
sVar23 = (short)((ulonglong)uVar5 >> 0x20) + sVar23;
|
|
|
|
sVar13 = (short)((ulonglong)uVar5 >> 0x30) + sVar13;
|
|
|
|
param_3[6] = CONCAT26(sVar30 - sVar21,
|
|
|
|
CONCAT24(sVar32 - sVar22,CONCAT22(sVar8 - sVar9,sVar7 - sVar3)));
|
|
|
|
uVar5 = param_3[3];
|
|
|
|
uVar15 = param_3[0xd];
|
|
|
|
sVar35 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar36 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar37 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar38 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
param_3[10] = CONCAT26(sVar30 + sVar21,
|
|
|
|
CONCAT24(sVar32 + sVar22,CONCAT22(sVar8 + sVar9,sVar7 + sVar3)));
|
|
|
|
uVar5 = param_3[1];
|
|
|
|
uVar15 = param_3[0xf];
|
|
|
|
sVar3 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar8 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar32 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar30 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
param_3[2] = CONCAT26(sVar34 + sVar13,
|
|
|
|
CONCAT24(sVar33 + sVar23,CONCAT22(sVar31 + sVar28,sVar29 + sVar19)));
|
|
|
|
uVar5 = param_3[7];
|
|
|
|
uVar15 = param_3[9];
|
|
|
|
sVar20 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar11 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar12 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar14 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
uVar5 = param_3[5];
|
|
|
|
sVar7 = sVar3 + sVar20;
|
|
|
|
sVar9 = sVar8 + sVar11;
|
|
|
|
sVar22 = sVar32 + sVar12;
|
|
|
|
sVar21 = sVar30 + sVar14;
|
|
|
|
uVar15 = param_3[0xb];
|
|
|
|
sVar16 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar17 = (short)((ulonglong)uVar5 >> 0x10) + (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar18 = (short)((ulonglong)uVar5 >> 0x20) + (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar24 = (short)((ulonglong)uVar5 >> 0x30) + (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar3 = sVar3 - sVar20;
|
|
|
|
sVar8 = sVar8 - sVar11;
|
|
|
|
sVar32 = sVar32 - sVar12;
|
|
|
|
sVar30 = sVar30 - sVar14;
|
|
|
|
sVar20 = sVar35 + sVar16;
|
|
|
|
sVar11 = sVar36 + sVar17;
|
|
|
|
sVar12 = sVar37 + sVar18;
|
|
|
|
sVar14 = sVar38 + sVar24;
|
|
|
|
param_3[0xe] = CONCAT26(sVar34 - sVar13,
|
|
|
|
CONCAT24(sVar33 - sVar23,CONCAT22(sVar31 - sVar28,sVar29 - sVar19)));
|
|
|
|
uVar5 = param_3[7];
|
|
|
|
uVar15 = param_3[9];
|
|
|
|
uVar10 = psllw(CONCAT26((sVar38 - sVar24) + sVar30,
|
|
|
|
CONCAT24((sVar37 - sVar18) + sVar32,
|
|
|
|
CONCAT22((sVar36 - sVar17) + sVar8,(sVar35 - sVar16) + sVar3))),1
|
|
|
|
);
|
|
|
|
uVar6 = pmulhw(uVar10,_DAT_00833330);
|
|
|
|
uVar10 = param_3[5];
|
|
|
|
uVar27 = param_3[0xb];
|
|
|
|
sVar18 = (short)uVar10 - (short)uVar27;
|
|
|
|
sVar24 = (short)((ulonglong)uVar10 >> 0x10) - (short)((ulonglong)uVar27 >> 0x10);
|
|
|
|
sVar29 = (short)((ulonglong)uVar10 >> 0x20) - (short)((ulonglong)uVar27 >> 0x20);
|
|
|
|
sVar31 = (short)((ulonglong)uVar10 >> 0x30) - (short)((ulonglong)uVar27 >> 0x30);
|
|
|
|
param_3[9] = CONCAT26(sVar21 - sVar14,
|
|
|
|
CONCAT24(sVar22 - sVar12,CONCAT22(sVar9 - sVar11,sVar7 - sVar20)));
|
|
|
|
sVar33 = (short)((ulonglong)uVar6 >> 0x10);
|
|
|
|
sVar34 = (short)((ulonglong)uVar6 >> 0x20);
|
|
|
|
sVar36 = (short)((ulonglong)uVar6 >> 0x30);
|
|
|
|
sVar23 = ((short)uVar5 - (short)uVar15) + sVar18;
|
|
|
|
sVar13 = ((short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10)) + sVar24;
|
|
|
|
sVar16 = ((short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20)) + sVar29;
|
|
|
|
sVar17 = ((short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30)) + sVar31;
|
|
|
|
uVar5 = param_3[1];
|
|
|
|
param_3[1] = CONCAT26(sVar21 + sVar14,
|
|
|
|
CONCAT24(sVar22 + sVar12,CONCAT22(sVar9 + sVar11,sVar7 + sVar20)));
|
|
|
|
uVar15 = param_3[3];
|
|
|
|
uVar10 = param_3[0xd];
|
|
|
|
sVar7 = (short)uVar15 - (short)uVar10;
|
|
|
|
sVar22 = (short)((ulonglong)uVar15 >> 0x10) - (short)((ulonglong)uVar10 >> 0x10);
|
|
|
|
sVar19 = (short)((ulonglong)uVar15 >> 0x20) - (short)((ulonglong)uVar10 >> 0x20);
|
|
|
|
sVar28 = (short)((ulonglong)uVar15 >> 0x30) - (short)((ulonglong)uVar10 >> 0x30);
|
|
|
|
param_3[5] = CONCAT26(sVar30 + sVar36,
|
|
|
|
CONCAT24(sVar32 + sVar34,CONCAT22(sVar8 + sVar33,sVar3 + (short)uVar6)));
|
|
|
|
uVar15 = param_3[0xf];
|
|
|
|
sVar12 = (short)uVar5 - (short)uVar15;
|
|
|
|
sVar14 = (short)((ulonglong)uVar5 >> 0x10) - (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar35 = (short)((ulonglong)uVar5 >> 0x20) - (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar37 = (short)((ulonglong)uVar5 >> 0x30) - (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar9 = sVar7 + sVar12;
|
|
|
|
sVar21 = sVar22 + sVar14;
|
|
|
|
sVar20 = sVar19 + sVar35;
|
|
|
|
sVar11 = sVar28 + sVar37;
|
|
|
|
uVar5 = psllw(CONCAT26(sVar31 + sVar28,
|
|
|
|
CONCAT24(sVar29 + sVar19,CONCAT22(sVar24 + sVar22,sVar18 + sVar7))),1);
|
|
|
|
uVar10 = pmulhw(uVar5,_DAT_00833330);
|
|
|
|
uVar15 = pmulhw(CONCAT26(sVar17 - sVar11,
|
|
|
|
CONCAT24(sVar16 - sVar20,CONCAT22(sVar13 - sVar21,sVar23 - sVar9))),
|
|
|
|
_DAT_00833320);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar17,CONCAT24(sVar16,CONCAT22(sVar13,sVar23))),1);
|
|
|
|
uVar27 = pmulhw(uVar5,_DAT_00833328);
|
|
|
|
uVar5 = psllw(CONCAT26(sVar11,CONCAT24(sVar20,CONCAT22(sVar21,sVar9))),2);
|
|
|
|
param_3[0xd] = CONCAT26(sVar30 - sVar36,
|
|
|
|
CONCAT24(sVar32 - sVar34,CONCAT22(sVar8 - sVar33,sVar3 - (short)uVar6)));
|
|
|
|
uVar5 = pmulhw(uVar5,_DAT_00833338);
|
|
|
|
sVar3 = sVar12 - (short)uVar10;
|
|
|
|
sVar32 = (short)((ulonglong)uVar10 >> 0x10);
|
|
|
|
sVar7 = sVar14 - sVar32;
|
|
|
|
sVar19 = (short)((ulonglong)uVar10 >> 0x20);
|
|
|
|
sVar8 = sVar35 - sVar19;
|
|
|
|
sVar20 = (short)((ulonglong)uVar10 >> 0x30);
|
|
|
|
sVar9 = sVar37 - sVar20;
|
|
|
|
sVar28 = (short)uVar27 + (short)uVar15;
|
|
|
|
sVar22 = (short)((ulonglong)uVar15 >> 0x10);
|
|
|
|
sVar11 = (short)((ulonglong)uVar27 >> 0x10) + sVar22;
|
|
|
|
sVar30 = (short)((ulonglong)uVar15 >> 0x20);
|
|
|
|
sVar23 = (short)((ulonglong)uVar27 >> 0x20) + sVar30;
|
|
|
|
sVar21 = (short)((ulonglong)uVar15 >> 0x30);
|
|
|
|
sVar13 = (short)((ulonglong)uVar27 >> 0x30) + sVar21;
|
|
|
|
sVar12 = sVar12 + (short)uVar10;
|
|
|
|
sVar14 = sVar14 + sVar32;
|
|
|
|
sVar35 = sVar35 + sVar19;
|
|
|
|
sVar37 = sVar37 + sVar20;
|
|
|
|
sVar32 = (short)uVar5 + (short)uVar15;
|
|
|
|
sVar22 = (short)((ulonglong)uVar5 >> 0x10) + sVar22;
|
|
|
|
sVar30 = (short)((ulonglong)uVar5 >> 0x20) + sVar30;
|
|
|
|
sVar21 = (short)((ulonglong)uVar5 >> 0x30) + sVar21;
|
|
|
|
param_3[0xb] = CONCAT26(sVar9 + sVar13,
|
|
|
|
CONCAT24(sVar8 + sVar23,CONCAT22(sVar7 + sVar11,sVar3 + sVar28)));
|
|
|
|
param_3[7] = CONCAT26(sVar9 - sVar13,
|
|
|
|
CONCAT24(sVar8 - sVar23,CONCAT22(sVar7 - sVar11,sVar3 - sVar28)));
|
|
|
|
param_3[3] = CONCAT26(sVar37 + sVar21,
|
|
|
|
CONCAT24(sVar35 + sVar30,CONCAT22(sVar14 + sVar22,sVar12 + sVar32)));
|
|
|
|
param_3[0xf] = CONCAT26(sVar37 - sVar21,
|
|
|
|
CONCAT24(sVar35 - sVar30,CONCAT22(sVar14 - sVar22,sVar12 - sVar32)));
|
|
|
|
return CONCAT44(param_2,in_EAX);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064e0c0 at 0x0064E0C0 (size: 1875) ---
|
|
|
|
|
|
undefined8 __fastcall FUN_0064e0c0(undefined4 param_1,undefined4 param_2,ulonglong *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ulonglong uVar1;
|
|
|
|
ulonglong uVar2;
|
|
|
|
ulonglong uVar3;
|
|
|
|
ulonglong uVar4;
|
|
|
|
ulonglong uVar5;
|
|
|
|
ulonglong uVar6;
|
|
|
|
ulonglong uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
char cVar9;
|
|
|
|
char cVar10;
|
|
|
|
undefined4 in_EAX;
|
|
|
|
undefined2 uVar11;
|
|
|
|
undefined4 uVar12;
|
|
|
|
short sVar13;
|
|
|
|
short sVar15;
|
|
|
|
short sVar16;
|
|
|
|
undefined8 uVar14;
|
|
|
|
short sVar17;
|
|
|
|
short sVar18;
|
|
|
|
undefined2 uVar19;
|
|
|
|
undefined4 uVar20;
|
|
|
|
short sVar22;
|
|
|
|
short sVar23;
|
|
|
|
short sVar24;
|
|
|
|
undefined8 uVar21;
|
|
|
|
short sVar25;
|
|
|
|
short sVar26;
|
|
|
|
short sVar27;
|
|
|
|
short sVar28;
|
|
|
|
short sVar29;
|
|
|
|
undefined4 uVar30;
|
|
|
|
short sVar32;
|
|
|
|
short sVar33;
|
|
|
|
short sVar34;
|
|
|
|
undefined8 uVar31;
|
|
|
|
short sVar35;
|
|
|
|
short sVar36;
|
|
|
|
short sVar37;
|
|
|
|
short sVar38;
|
|
|
|
short sVar39;
|
|
|
|
short sVar40;
|
|
|
|
short sVar41;
|
|
|
|
short sVar42;
|
|
|
|
short sVar43;
|
|
|
|
short sVar44;
|
|
|
|
short sVar46;
|
|
|
|
short sVar47;
|
|
|
|
short sVar48;
|
|
|
|
undefined8 uVar45;
|
|
|
|
|
|
|
|
uVar1 = param_3[0xc];
|
|
|
|
uVar2 = param_3[4];
|
|
|
|
uVar3 = *param_3;
|
|
|
|
uVar4 = param_3[8];
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar22 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar23 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar24 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
uVar14 = psllw(CONCAT26(sVar24 - sVar16,
|
|
|
|
CONCAT24(sVar23 - sVar15,
|
|
|
|
CONCAT22(sVar22 - sVar13,(short)uVar2 - (short)uVar1))),2);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833370);
|
|
|
|
sVar18 = (short)uVar2 + (short)uVar1;
|
|
|
|
sVar22 = sVar22 + sVar13;
|
|
|
|
sVar23 = sVar23 + sVar15;
|
|
|
|
sVar24 = sVar24 + sVar16;
|
|
|
|
sVar25 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar32 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar35 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar26 = sVar32 + sVar35;
|
|
|
|
sVar33 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar34 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar36 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar27 = sVar33 + sVar36;
|
|
|
|
sVar37 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar28 = sVar34 + sVar37;
|
|
|
|
sVar13 = (short)uVar14 - sVar18;
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x10) - sVar22;
|
|
|
|
sVar16 = (short)((ulonglong)uVar14 >> 0x20) - sVar23;
|
|
|
|
sVar17 = (short)((ulonglong)uVar14 >> 0x30) - sVar24;
|
|
|
|
sVar29 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar32 = sVar32 - sVar35;
|
|
|
|
sVar33 = sVar33 - sVar36;
|
|
|
|
sVar34 = sVar34 - sVar37;
|
|
|
|
param_3[4] = CONCAT26(sVar28 + sVar24,
|
|
|
|
CONCAT24(sVar27 + sVar23,CONCAT22(sVar26 + sVar22,sVar25 + sVar18)));
|
|
|
|
param_3[0xc] = CONCAT26(sVar17 + sVar34,
|
|
|
|
CONCAT24(sVar16 + sVar33,CONCAT22(sVar15 + sVar32,sVar13 + sVar29)));
|
|
|
|
sVar25 = sVar25 - sVar18;
|
|
|
|
sVar26 = sVar26 - sVar22;
|
|
|
|
sVar27 = sVar27 - sVar23;
|
|
|
|
sVar28 = sVar28 - sVar24;
|
|
|
|
*param_3 = CONCAT26(sVar34 - sVar17,
|
|
|
|
CONCAT24(sVar33 - sVar16,CONCAT22(sVar32 - sVar15,sVar29 - sVar13)));
|
|
|
|
uVar1 = param_3[10];
|
|
|
|
uVar2 = param_3[6];
|
|
|
|
uVar3 = param_3[2];
|
|
|
|
sVar44 = (short)uVar1 - (short)uVar2;
|
|
|
|
sVar13 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar24 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar46 = sVar24 - sVar13;
|
|
|
|
sVar15 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar17 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar18 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar47 = sVar17 - sVar15;
|
|
|
|
sVar16 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar48 = sVar18 - sVar16;
|
|
|
|
uVar4 = param_3[0xe];
|
|
|
|
sVar23 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar24 = sVar24 + sVar13;
|
|
|
|
sVar17 = sVar17 + sVar15;
|
|
|
|
sVar18 = sVar18 + sVar16;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar48,CONCAT24(sVar47,CONCAT22(sVar46,sVar44))),3);
|
|
|
|
uVar45 = pmulhw(uVar14,DAT_00833378);
|
|
|
|
sVar29 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar32 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar36 = sVar15 + sVar32;
|
|
|
|
sVar33 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar22 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar38 = sVar16 + sVar33;
|
|
|
|
sVar34 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar40 = sVar22 + sVar34;
|
|
|
|
sVar13 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar15 = sVar15 - sVar32;
|
|
|
|
sVar16 = sVar16 - sVar33;
|
|
|
|
sVar22 = sVar22 - sVar34;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar22,CONCAT24(sVar16,CONCAT22(sVar15,sVar13))),2);
|
|
|
|
sVar35 = sVar29 + sVar23;
|
|
|
|
sVar37 = sVar36 + sVar24;
|
|
|
|
sVar39 = sVar38 + sVar17;
|
|
|
|
sVar41 = sVar40 + sVar18;
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833380);
|
|
|
|
uVar21 = psllw(CONCAT26(sVar48 + sVar22,
|
|
|
|
CONCAT24(sVar47 + sVar16,CONCAT22(sVar46 + sVar15,sVar44 + sVar13))),2);
|
|
|
|
uVar31 = psllw(CONCAT26(sVar40 - sVar18,
|
|
|
|
CONCAT24(sVar38 - sVar17,CONCAT22(sVar36 - sVar24,sVar29 - sVar23))),2);
|
|
|
|
uVar21 = pmulhw(DAT_00833388,uVar21);
|
|
|
|
uVar1 = param_3[0xc];
|
|
|
|
uVar31 = pmulhw(uVar31,DAT_00833370);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
uVar2 = param_3[4];
|
|
|
|
sVar23 = ((short)uVar21 + (short)uVar45) - sVar35;
|
|
|
|
sVar24 = (sVar15 + (short)((ulonglong)uVar45 >> 0x10)) - sVar37;
|
|
|
|
sVar17 = (sVar16 + (short)((ulonglong)uVar45 >> 0x20)) - sVar39;
|
|
|
|
sVar18 = (sVar22 + (short)((ulonglong)uVar45 >> 0x30)) - sVar41;
|
|
|
|
sVar32 = (short)uVar31 - sVar23;
|
|
|
|
sVar33 = (short)((ulonglong)uVar31 >> 0x10) - sVar24;
|
|
|
|
sVar34 = (short)((ulonglong)uVar31 >> 0x20) - sVar17;
|
|
|
|
sVar29 = (short)((ulonglong)uVar31 >> 0x30) - sVar18;
|
|
|
|
sVar13 = ((short)uVar14 - (short)uVar21) + sVar32;
|
|
|
|
sVar15 = ((short)((ulonglong)uVar14 >> 0x10) - sVar15) + sVar33;
|
|
|
|
sVar16 = ((short)((ulonglong)uVar14 >> 0x20) - sVar16) + sVar34;
|
|
|
|
sVar22 = ((short)((ulonglong)uVar14 >> 0x30) - sVar22) + sVar29;
|
|
|
|
param_3[8] = CONCAT26(sVar28 + sVar22,
|
|
|
|
CONCAT24(sVar27 + sVar16,CONCAT22(sVar26 + sVar15,sVar25 + sVar13)));
|
|
|
|
sVar36 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar38 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar40 = (short)(uVar2 >> 0x30);
|
|
|
|
param_3[6] = CONCAT26(sVar28 - sVar22,
|
|
|
|
CONCAT24(sVar27 - sVar16,CONCAT22(sVar26 - sVar15,sVar25 - sVar13)));
|
|
|
|
uVar3 = *param_3;
|
|
|
|
*param_3 = CONCAT26(sVar40 + sVar41,
|
|
|
|
CONCAT24(sVar38 + sVar39,CONCAT22(sVar36 + sVar37,(short)uVar2 + sVar35)));
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
param_3[0xe] = CONCAT26(sVar40 - sVar41,
|
|
|
|
CONCAT24(sVar38 - sVar39,CONCAT22(sVar36 - sVar37,(short)uVar2 - sVar35)))
|
|
|
|
;
|
|
|
|
param_3[2] = CONCAT26(sVar16 + sVar18,
|
|
|
|
CONCAT24(sVar15 + sVar17,CONCAT22(sVar13 + sVar24,(short)uVar1 + sVar23)));
|
|
|
|
param_3[0xc] = CONCAT26(sVar16 - sVar18,
|
|
|
|
CONCAT24(sVar15 - sVar17,CONCAT22(sVar13 - sVar24,(short)uVar1 - sVar23)))
|
|
|
|
;
|
|
|
|
sVar13 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar3 >> 0x30);
|
|
|
|
uVar1 = param_3[5];
|
|
|
|
param_3[4] = CONCAT26(sVar16 + sVar29,
|
|
|
|
CONCAT24(sVar15 + sVar34,CONCAT22(sVar13 + sVar33,(short)uVar3 + sVar32)));
|
|
|
|
uVar2 = param_3[0xd];
|
|
|
|
param_3[10] = CONCAT26(sVar16 - sVar29,
|
|
|
|
CONCAT24(sVar15 - sVar34,CONCAT22(sVar13 - sVar33,(short)uVar3 - sVar32)));
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar22 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar25 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar26 = (short)(uVar2 >> 0x30);
|
|
|
|
uVar3 = param_3[1];
|
|
|
|
sVar23 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar24 = sVar13 + sVar22;
|
|
|
|
sVar17 = sVar15 + sVar25;
|
|
|
|
sVar18 = sVar16 + sVar26;
|
|
|
|
uVar4 = param_3[9];
|
|
|
|
uVar14 = psllw(CONCAT26(sVar16 - sVar26,
|
|
|
|
CONCAT24(sVar15 - sVar25,
|
|
|
|
CONCAT22(sVar13 - sVar22,(short)uVar1 - (short)uVar2))),2);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833370);
|
|
|
|
uVar1 = param_3[0xb];
|
|
|
|
sVar25 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar32 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar13 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar26 = sVar32 + sVar13;
|
|
|
|
sVar33 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar28 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar15 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar27 = sVar33 + sVar15;
|
|
|
|
sVar16 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar34 = sVar28 + sVar16;
|
|
|
|
sVar29 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar32 = sVar32 - sVar13;
|
|
|
|
sVar33 = sVar33 - sVar15;
|
|
|
|
sVar28 = sVar28 - sVar16;
|
|
|
|
sVar13 = (short)uVar14 - sVar23;
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x10) - sVar24;
|
|
|
|
sVar16 = (short)((ulonglong)uVar14 >> 0x20) - sVar17;
|
|
|
|
sVar22 = (short)((ulonglong)uVar14 >> 0x30) - sVar18;
|
|
|
|
uVar2 = param_3[7];
|
|
|
|
param_3[5] = CONCAT26(sVar34 + sVar18,
|
|
|
|
CONCAT24(sVar27 + sVar17,CONCAT22(sVar26 + sVar24,sVar25 + sVar23)));
|
|
|
|
sVar25 = sVar25 - sVar23;
|
|
|
|
sVar26 = sVar26 - sVar24;
|
|
|
|
sVar27 = sVar27 - sVar17;
|
|
|
|
sVar34 = sVar34 - sVar18;
|
|
|
|
param_3[0xd] = CONCAT26(sVar28 + sVar22,
|
|
|
|
CONCAT24(sVar33 + sVar16,CONCAT22(sVar32 + sVar15,sVar29 + sVar13)));
|
|
|
|
param_3[9] = CONCAT26(sVar28 - sVar22,
|
|
|
|
CONCAT24(sVar33 - sVar16,CONCAT22(sVar32 - sVar15,sVar29 - sVar13)));
|
|
|
|
sVar13 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar16 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar32 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = sVar16 + sVar32;
|
|
|
|
sVar23 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar17 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar33 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar22 = sVar23 + sVar33;
|
|
|
|
sVar28 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar24 = sVar17 + sVar28;
|
|
|
|
uVar3 = param_3[0xf];
|
|
|
|
sVar18 = (short)uVar1 - (short)uVar2;
|
|
|
|
sVar16 = sVar16 - sVar32;
|
|
|
|
sVar23 = sVar23 - sVar33;
|
|
|
|
sVar17 = sVar17 - sVar28;
|
|
|
|
uVar1 = param_3[3];
|
|
|
|
uVar14 = psllw(CONCAT26(sVar17,CONCAT24(sVar23,CONCAT22(sVar16,sVar18))),3);
|
|
|
|
sVar29 = (short)uVar1 + (short)uVar3;
|
|
|
|
sVar32 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar36 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar35 = sVar36 + sVar32;
|
|
|
|
sVar33 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar38 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar46 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar37 = sVar38 + sVar33;
|
|
|
|
sVar28 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar39 = sVar46 + sVar28;
|
|
|
|
sVar48 = (short)uVar1 - (short)uVar3;
|
|
|
|
sVar36 = sVar36 - sVar32;
|
|
|
|
sVar38 = sVar38 - sVar33;
|
|
|
|
sVar46 = sVar46 - sVar28;
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833378);
|
|
|
|
sVar40 = sVar29 + sVar13;
|
|
|
|
sVar41 = sVar35 + sVar15;
|
|
|
|
sVar44 = sVar37 + sVar22;
|
|
|
|
sVar47 = sVar39 + sVar24;
|
|
|
|
uVar21 = psllw(CONCAT26(sVar39 - sVar24,
|
|
|
|
CONCAT24(sVar37 - sVar22,CONCAT22(sVar35 - sVar15,sVar29 - sVar13))),2);
|
|
|
|
uVar31 = pmulhw(uVar21,DAT_00833370);
|
|
|
|
uVar21 = psllw(CONCAT26(sVar17 + sVar46,
|
|
|
|
CONCAT24(sVar23 + sVar38,CONCAT22(sVar16 + sVar36,sVar18 + sVar48))),2);
|
|
|
|
uVar45 = psllw(CONCAT26(sVar46,CONCAT24(sVar38,CONCAT22(sVar36,sVar48))),2);
|
|
|
|
uVar21 = pmulhw(uVar21,DAT_00833388);
|
|
|
|
uVar1 = param_3[5];
|
|
|
|
uVar45 = pmulhw(uVar45,DAT_00833380);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar24 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
sVar17 = ((short)uVar21 + (short)uVar14) - sVar40;
|
|
|
|
sVar18 = (sVar15 + (short)((ulonglong)uVar14 >> 0x10)) - sVar41;
|
|
|
|
sVar33 = (sVar22 + (short)((ulonglong)uVar14 >> 0x20)) - sVar44;
|
|
|
|
sVar29 = (sVar24 + (short)((ulonglong)uVar14 >> 0x30)) - sVar47;
|
|
|
|
sVar36 = (short)uVar31 - sVar17;
|
|
|
|
sVar37 = (short)((ulonglong)uVar31 >> 0x10) - sVar18;
|
|
|
|
sVar38 = (short)((ulonglong)uVar31 >> 0x20) - sVar33;
|
|
|
|
sVar39 = (short)((ulonglong)uVar31 >> 0x30) - sVar29;
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar23 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar46 = ((short)uVar45 - (short)uVar21) + sVar36;
|
|
|
|
sVar48 = ((short)((ulonglong)uVar45 >> 0x10) - sVar15) + sVar37;
|
|
|
|
sVar42 = ((short)((ulonglong)uVar45 >> 0x20) - sVar22) + sVar38;
|
|
|
|
sVar43 = ((short)((ulonglong)uVar45 >> 0x30) - sVar24) + sVar39;
|
|
|
|
uVar2 = param_3[0xd];
|
|
|
|
param_3[1] = CONCAT26(sVar23 + sVar47,
|
|
|
|
CONCAT24(sVar16 + sVar44,CONCAT22(sVar13 + sVar41,(short)uVar1 + sVar40)));
|
|
|
|
uVar3 = param_3[9];
|
|
|
|
param_3[7] = CONCAT26(sVar34 - sVar43,
|
|
|
|
CONCAT24(sVar27 - sVar42,CONCAT22(sVar26 - sVar48,sVar25 - sVar46)));
|
|
|
|
sVar32 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar28 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar35 = (short)(uVar2 >> 0x30);
|
|
|
|
param_3[3] = CONCAT26(sVar35 + sVar29,
|
|
|
|
CONCAT24(sVar28 + sVar33,CONCAT22(sVar32 + sVar18,(short)uVar2 + sVar17)));
|
|
|
|
sVar15 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar22 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar24 = (short)(uVar3 >> 0x30);
|
|
|
|
param_3[5] = CONCAT26(sVar24 + sVar39,
|
|
|
|
CONCAT24(sVar22 + sVar38,CONCAT22(sVar15 + sVar37,(short)uVar3 + sVar36)));
|
|
|
|
uVar12 = CONCAT22(sVar22 - sVar38,sVar27 + sVar42);
|
|
|
|
uVar4 = *param_3;
|
|
|
|
uVar5 = param_3[2];
|
|
|
|
uVar20 = CONCAT22(sVar16 - sVar44,sVar28 - sVar33);
|
|
|
|
param_3[9] = CONCAT44(CONCAT22((short)uVar1 - sVar40,(short)uVar2 - sVar17),
|
|
|
|
CONCAT22((short)uVar3 - sVar36,sVar25 + sVar46));
|
|
|
|
param_3[0xb] = CONCAT44(CONCAT22(sVar13 - sVar41,sVar32 - sVar18),
|
|
|
|
CONCAT22(sVar15 - sVar37,sVar26 + sVar48));
|
|
|
|
param_3[0xd] = CONCAT44(uVar20,uVar12);
|
|
|
|
param_3[0xf] = CONCAT44((int)(CONCAT26(sVar23 - sVar47,CONCAT24(sVar35 - sVar29,uVar20)) >> 0x20),
|
|
|
|
(int)(CONCAT26(sVar24 - sVar39,CONCAT24(sVar34 + sVar43,uVar12)) >> 0x20))
|
|
|
|
;
|
|
|
|
uVar20 = CONCAT22((short)(uVar5 >> 0x20),(short)(uVar4 >> 0x20));
|
|
|
|
uVar1 = param_3[4];
|
|
|
|
uVar2 = param_3[6];
|
|
|
|
uVar12 = CONCAT22((short)(uVar2 >> 0x20),(short)(uVar1 >> 0x20));
|
|
|
|
*param_3 = CONCAT44(CONCAT22((short)uVar2,(short)uVar1),CONCAT22((short)uVar5,(short)uVar4));
|
|
|
|
param_3[2] = CONCAT44(CONCAT22((short)(uVar2 >> 0x10),(short)(uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar5 >> 0x10),(short)(uVar4 >> 0x10)));
|
|
|
|
param_3[4] = CONCAT44(uVar12,uVar20);
|
|
|
|
param_3[6] = CONCAT44((int)(CONCAT26((short)(uVar2 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar1 >> 0x30),uVar12)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar5 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar4 >> 0x30),uVar20)) >> 0x20));
|
|
|
|
uVar1 = param_3[1];
|
|
|
|
uVar2 = param_3[3];
|
|
|
|
uVar3 = param_3[5];
|
|
|
|
uVar20 = CONCAT22((short)(uVar2 >> 0x20),(short)(uVar1 >> 0x20));
|
|
|
|
uVar4 = param_3[7];
|
|
|
|
uVar30 = CONCAT22((short)(uVar4 >> 0x20),(short)(uVar3 >> 0x20));
|
|
|
|
uVar5 = param_3[8];
|
|
|
|
param_3[8] = CONCAT44(CONCAT22((short)uVar4,(short)uVar3),CONCAT22((short)uVar2,(short)uVar1));
|
|
|
|
uVar6 = param_3[10];
|
|
|
|
param_3[10] = CONCAT44(CONCAT22((short)(uVar4 >> 0x10),(short)(uVar3 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar2 >> 0x10),(short)(uVar1 >> 0x10)));
|
|
|
|
uVar7 = param_3[0xc];
|
|
|
|
uVar12 = CONCAT22((short)(uVar6 >> 0x20),(short)(uVar5 >> 0x20));
|
|
|
|
uVar8 = param_3[0xe];
|
|
|
|
param_3[0xc] = CONCAT44(uVar30,uVar20);
|
|
|
|
param_3[0xe] = CONCAT44((int)(CONCAT26((short)(uVar4 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar3 >> 0x30),uVar30)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar2 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar1 >> 0x30),uVar20)) >> 0x20));
|
|
|
|
uVar20 = CONCAT22((short)(uVar8 >> 0x20),(short)(uVar7 >> 0x20));
|
|
|
|
param_3[1] = CONCAT44(CONCAT22((short)uVar8,(short)uVar7),CONCAT22((short)uVar6,(short)uVar5));
|
|
|
|
param_3[3] = CONCAT44(CONCAT22((short)(uVar8 >> 0x10),(short)(uVar7 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar6 >> 0x10),(short)(uVar5 >> 0x10)));
|
|
|
|
param_3[5] = CONCAT44(uVar20,uVar12);
|
|
|
|
param_3[7] = CONCAT44((int)(CONCAT26((short)(uVar8 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar7 >> 0x30),uVar20)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar6 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar5 >> 0x30),uVar12)) >> 0x20));
|
|
|
|
uVar1 = param_3[0xc];
|
|
|
|
uVar2 = param_3[4];
|
|
|
|
uVar3 = *param_3;
|
|
|
|
uVar4 = param_3[8];
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar22 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar23 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar24 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar17 = (short)uVar2 + (short)uVar1;
|
|
|
|
sVar18 = sVar22 + sVar13;
|
|
|
|
sVar25 = sVar23 + sVar15;
|
|
|
|
sVar26 = sVar24 + sVar16;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar24 - sVar16,
|
|
|
|
CONCAT24(sVar23 - sVar15,
|
|
|
|
CONCAT22(sVar22 - sVar13,(short)uVar2 - (short)uVar1))),2);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833370);
|
|
|
|
sVar32 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar23 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar13 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar27 = sVar23 + sVar13;
|
|
|
|
sVar24 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar34 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar15 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar33 = sVar24 + sVar15;
|
|
|
|
sVar16 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar28 = sVar34 + sVar16;
|
|
|
|
sVar29 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar23 = sVar23 - sVar13;
|
|
|
|
sVar24 = sVar24 - sVar15;
|
|
|
|
sVar34 = sVar34 - sVar16;
|
|
|
|
sVar13 = (short)uVar14 - sVar17;
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x10) - sVar18;
|
|
|
|
sVar16 = (short)((ulonglong)uVar14 >> 0x20) - sVar25;
|
|
|
|
sVar22 = (short)((ulonglong)uVar14 >> 0x30) - sVar26;
|
|
|
|
param_3[4] = CONCAT26(sVar28 + sVar26,
|
|
|
|
CONCAT24(sVar33 + sVar25,CONCAT22(sVar27 + sVar18,sVar32 + sVar17)));
|
|
|
|
param_3[0xc] = CONCAT26(sVar22 + sVar34,
|
|
|
|
CONCAT24(sVar16 + sVar24,CONCAT22(sVar15 + sVar23,sVar13 + sVar29)));
|
|
|
|
sVar32 = sVar32 - sVar17;
|
|
|
|
sVar27 = sVar27 - sVar18;
|
|
|
|
sVar33 = sVar33 - sVar25;
|
|
|
|
sVar28 = sVar28 - sVar26;
|
|
|
|
*param_3 = CONCAT26(sVar34 - sVar22,
|
|
|
|
CONCAT24(sVar24 - sVar16,CONCAT22(sVar23 - sVar15,sVar29 - sVar13)));
|
|
|
|
uVar1 = param_3[10];
|
|
|
|
uVar2 = param_3[6];
|
|
|
|
uVar3 = param_3[2];
|
|
|
|
sVar35 = (short)uVar1 - (short)uVar2;
|
|
|
|
sVar13 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar24 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar37 = sVar24 - sVar13;
|
|
|
|
sVar15 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar17 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar18 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar39 = sVar17 - sVar15;
|
|
|
|
sVar16 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar41 = sVar18 - sVar16;
|
|
|
|
uVar4 = param_3[0xe];
|
|
|
|
sVar23 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar24 = sVar24 + sVar13;
|
|
|
|
sVar17 = sVar17 + sVar15;
|
|
|
|
sVar18 = sVar18 + sVar16;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar41,CONCAT24(sVar39,CONCAT22(sVar37,sVar35))),3);
|
|
|
|
uVar45 = pmulhw(uVar14,DAT_00833378);
|
|
|
|
sVar29 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar25 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar36 = sVar15 + sVar25;
|
|
|
|
sVar26 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar22 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar38 = sVar16 + sVar26;
|
|
|
|
sVar34 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar40 = sVar22 + sVar34;
|
|
|
|
sVar13 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar15 = sVar15 - sVar25;
|
|
|
|
sVar16 = sVar16 - sVar26;
|
|
|
|
sVar22 = sVar22 - sVar34;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar22,CONCAT24(sVar16,CONCAT22(sVar15,sVar13))),2);
|
|
|
|
uVar21 = psllw(CONCAT26(sVar41 + sVar22,
|
|
|
|
CONCAT24(sVar39 + sVar16,CONCAT22(sVar37 + sVar15,sVar35 + sVar13))),2);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833380);
|
|
|
|
uVar21 = pmulhw(uVar21,DAT_00833388);
|
|
|
|
sVar35 = sVar29 + sVar23;
|
|
|
|
sVar37 = sVar36 + sVar24;
|
|
|
|
sVar39 = sVar38 + sVar17;
|
|
|
|
sVar41 = sVar40 + sVar18;
|
|
|
|
uVar31 = psllw(CONCAT26(sVar40 - sVar18,
|
|
|
|
CONCAT24(sVar38 - sVar17,CONCAT22(sVar36 - sVar24,sVar29 - sVar23))),2);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
uVar31 = pmulhw(uVar31,DAT_00833370);
|
|
|
|
uVar1 = param_3[0xc];
|
|
|
|
sVar23 = ((short)uVar21 + (short)uVar45) - sVar35;
|
|
|
|
sVar24 = (sVar15 + (short)((ulonglong)uVar45 >> 0x10)) - sVar37;
|
|
|
|
sVar17 = (sVar16 + (short)((ulonglong)uVar45 >> 0x20)) - sVar39;
|
|
|
|
sVar18 = (sVar22 + (short)((ulonglong)uVar45 >> 0x30)) - sVar41;
|
|
|
|
uVar2 = param_3[4];
|
|
|
|
sVar25 = (short)uVar31 - sVar23;
|
|
|
|
sVar26 = (short)((ulonglong)uVar31 >> 0x10) - sVar24;
|
|
|
|
sVar34 = (short)((ulonglong)uVar31 >> 0x20) - sVar17;
|
|
|
|
sVar29 = (short)((ulonglong)uVar31 >> 0x30) - sVar18;
|
|
|
|
sVar13 = ((short)uVar14 - (short)uVar21) + sVar25;
|
|
|
|
sVar15 = ((short)((ulonglong)uVar14 >> 0x10) - sVar15) + sVar26;
|
|
|
|
sVar16 = ((short)((ulonglong)uVar14 >> 0x20) - sVar16) + sVar34;
|
|
|
|
sVar22 = ((short)((ulonglong)uVar14 >> 0x30) - sVar22) + sVar29;
|
|
|
|
param_3[8] = CONCAT26(sVar28 + sVar22,
|
|
|
|
CONCAT24(sVar33 + sVar16,CONCAT22(sVar27 + sVar15,sVar32 + sVar13)));
|
|
|
|
sVar36 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar38 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar40 = (short)(uVar2 >> 0x30);
|
|
|
|
param_3[6] = CONCAT26(sVar28 - sVar22,
|
|
|
|
CONCAT24(sVar33 - sVar16,CONCAT22(sVar27 - sVar15,sVar32 - sVar13)));
|
|
|
|
uVar3 = *param_3;
|
|
|
|
*param_3 = CONCAT26(sVar40 + sVar41,
|
|
|
|
CONCAT24(sVar38 + sVar39,CONCAT22(sVar36 + sVar37,(short)uVar2 + sVar35)));
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
param_3[0xe] = CONCAT26(sVar40 - sVar41,
|
|
|
|
CONCAT24(sVar38 - sVar39,CONCAT22(sVar36 - sVar37,(short)uVar2 - sVar35)))
|
|
|
|
;
|
|
|
|
param_3[2] = CONCAT26(sVar16 + sVar18,
|
|
|
|
CONCAT24(sVar15 + sVar17,CONCAT22(sVar13 + sVar24,(short)uVar1 + sVar23)));
|
|
|
|
param_3[0xc] = CONCAT26(sVar16 - sVar18,
|
|
|
|
CONCAT24(sVar15 - sVar17,CONCAT22(sVar13 - sVar24,(short)uVar1 - sVar23)))
|
|
|
|
;
|
|
|
|
sVar13 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar3 >> 0x30);
|
|
|
|
uVar1 = param_3[5];
|
|
|
|
param_3[4] = CONCAT26(sVar16 + sVar29,
|
|
|
|
CONCAT24(sVar15 + sVar34,CONCAT22(sVar13 + sVar26,(short)uVar3 + sVar25)));
|
|
|
|
param_3[10] = CONCAT26(sVar16 - sVar29,
|
|
|
|
CONCAT24(sVar15 - sVar34,CONCAT22(sVar13 - sVar26,(short)uVar3 - sVar25)));
|
|
|
|
uVar2 = param_3[0xd];
|
|
|
|
uVar3 = param_3[1];
|
|
|
|
sVar13 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar22 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar16 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar25 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar26 = (short)(uVar2 >> 0x30);
|
|
|
|
uVar4 = param_3[9];
|
|
|
|
sVar23 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar24 = sVar13 + sVar22;
|
|
|
|
sVar17 = sVar15 + sVar25;
|
|
|
|
sVar18 = sVar16 + sVar26;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar16 - sVar26,
|
|
|
|
CONCAT24(sVar15 - sVar25,
|
|
|
|
CONCAT22(sVar13 - sVar22,(short)uVar1 - (short)uVar2))),2);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833370);
|
|
|
|
sVar25 = (short)uVar3 + (short)uVar4;
|
|
|
|
sVar32 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar13 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar26 = sVar32 + sVar13;
|
|
|
|
sVar33 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar28 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar15 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar27 = sVar33 + sVar15;
|
|
|
|
sVar16 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar34 = sVar28 + sVar16;
|
|
|
|
sVar29 = (short)uVar3 - (short)uVar4;
|
|
|
|
sVar32 = sVar32 - sVar13;
|
|
|
|
sVar33 = sVar33 - sVar15;
|
|
|
|
sVar28 = sVar28 - sVar16;
|
|
|
|
sVar13 = (short)uVar14 - sVar23;
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x10) - sVar24;
|
|
|
|
sVar16 = (short)((ulonglong)uVar14 >> 0x20) - sVar17;
|
|
|
|
sVar22 = (short)((ulonglong)uVar14 >> 0x30) - sVar18;
|
|
|
|
param_3[5] = CONCAT26(sVar34 + sVar18,
|
|
|
|
CONCAT24(sVar27 + sVar17,CONCAT22(sVar26 + sVar24,sVar25 + sVar23)));
|
|
|
|
param_3[0xd] = CONCAT26(sVar28 + sVar22,
|
|
|
|
CONCAT24(sVar33 + sVar16,CONCAT22(sVar32 + sVar15,sVar29 + sVar13)));
|
|
|
|
sVar25 = sVar25 - sVar23;
|
|
|
|
sVar26 = sVar26 - sVar24;
|
|
|
|
sVar27 = sVar27 - sVar17;
|
|
|
|
sVar34 = sVar34 - sVar18;
|
|
|
|
param_3[9] = CONCAT26(sVar28 - sVar22,
|
|
|
|
CONCAT24(sVar33 - sVar16,CONCAT22(sVar32 - sVar15,sVar29 - sVar13)));
|
|
|
|
uVar1 = param_3[0xb];
|
|
|
|
uVar2 = param_3[7];
|
|
|
|
uVar3 = param_3[0xf];
|
|
|
|
sVar13 = (short)uVar1 + (short)uVar2;
|
|
|
|
sVar16 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar32 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar15 = sVar16 + sVar32;
|
|
|
|
sVar23 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar17 = (short)(uVar1 >> 0x30);
|
|
|
|
sVar33 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar22 = sVar23 + sVar33;
|
|
|
|
sVar28 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar24 = sVar17 + sVar28;
|
|
|
|
uVar4 = param_3[3];
|
|
|
|
sVar18 = (short)uVar1 - (short)uVar2;
|
|
|
|
sVar16 = sVar16 - sVar32;
|
|
|
|
sVar23 = sVar23 - sVar33;
|
|
|
|
sVar17 = sVar17 - sVar28;
|
|
|
|
uVar14 = psllw(CONCAT26(sVar17,CONCAT24(sVar23,CONCAT22(sVar16,sVar18))),3);
|
|
|
|
uVar14 = pmulhw(uVar14,DAT_00833378);
|
|
|
|
sVar29 = (short)uVar4 + (short)uVar3;
|
|
|
|
sVar32 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar36 = (short)(uVar4 >> 0x10);
|
|
|
|
sVar35 = sVar36 + sVar32;
|
|
|
|
sVar33 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar38 = (short)(uVar4 >> 0x20);
|
|
|
|
sVar46 = (short)(uVar4 >> 0x30);
|
|
|
|
sVar37 = sVar38 + sVar33;
|
|
|
|
sVar28 = (short)(uVar3 >> 0x30);
|
|
|
|
sVar39 = sVar46 + sVar28;
|
|
|
|
sVar48 = (short)uVar4 - (short)uVar3;
|
|
|
|
sVar36 = sVar36 - sVar32;
|
|
|
|
sVar38 = sVar38 - sVar33;
|
|
|
|
sVar46 = sVar46 - sVar28;
|
|
|
|
sVar40 = sVar29 + sVar13;
|
|
|
|
sVar41 = sVar35 + sVar15;
|
|
|
|
sVar44 = sVar37 + sVar22;
|
|
|
|
sVar47 = sVar39 + sVar24;
|
|
|
|
uVar21 = psllw(CONCAT26(sVar39 - sVar24,
|
|
|
|
CONCAT24(sVar37 - sVar22,CONCAT22(sVar35 - sVar15,sVar29 - sVar13))),2);
|
|
|
|
uVar31 = pmulhw(uVar21,DAT_00833370);
|
|
|
|
uVar21 = psllw(CONCAT26(sVar17 + sVar46,
|
|
|
|
CONCAT24(sVar23 + sVar38,CONCAT22(sVar16 + sVar36,sVar18 + sVar48))),2);
|
|
|
|
uVar45 = psllw(CONCAT26(sVar46,CONCAT24(sVar38,CONCAT22(sVar36,sVar48))),2);
|
|
|
|
uVar1 = param_3[5];
|
|
|
|
uVar21 = pmulhw(uVar21,DAT_00833388);
|
|
|
|
uVar45 = pmulhw(uVar45,DAT_00833380);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar24 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
sVar17 = ((short)uVar21 + (short)uVar14) - sVar40;
|
|
|
|
sVar18 = (sVar15 + (short)((ulonglong)uVar14 >> 0x10)) - sVar41;
|
|
|
|
sVar33 = (sVar22 + (short)((ulonglong)uVar14 >> 0x20)) - sVar44;
|
|
|
|
sVar29 = (sVar24 + (short)((ulonglong)uVar14 >> 0x30)) - sVar47;
|
|
|
|
sVar36 = (short)uVar31 - sVar17;
|
|
|
|
sVar37 = (short)((ulonglong)uVar31 >> 0x10) - sVar18;
|
|
|
|
sVar38 = (short)((ulonglong)uVar31 >> 0x20) - sVar33;
|
|
|
|
sVar39 = (short)((ulonglong)uVar31 >> 0x30) - sVar29;
|
|
|
|
sVar16 = (short)(uVar1 >> 0x10);
|
|
|
|
sVar13 = (short)(uVar1 >> 0x20);
|
|
|
|
sVar23 = (short)(uVar1 >> 0x30);
|
|
|
|
uVar2 = param_3[0xd];
|
|
|
|
sVar46 = ((short)uVar45 - (short)uVar21) + sVar36;
|
|
|
|
sVar48 = ((short)((ulonglong)uVar45 >> 0x10) - sVar15) + sVar37;
|
|
|
|
sVar42 = ((short)((ulonglong)uVar45 >> 0x20) - sVar22) + sVar38;
|
|
|
|
sVar43 = ((short)((ulonglong)uVar45 >> 0x30) - sVar24) + sVar39;
|
|
|
|
param_3[1] = CONCAT26(sVar23 + sVar47,
|
|
|
|
CONCAT24(sVar13 + sVar44,CONCAT22(sVar16 + sVar41,(short)uVar1 + sVar40)));
|
|
|
|
uVar3 = param_3[9];
|
|
|
|
param_3[7] = CONCAT26(sVar34 - sVar43,
|
|
|
|
CONCAT24(sVar27 - sVar42,CONCAT22(sVar26 - sVar48,sVar25 - sVar46)));
|
|
|
|
sVar32 = (short)(uVar2 >> 0x10);
|
|
|
|
sVar28 = (short)(uVar2 >> 0x20);
|
|
|
|
sVar35 = (short)(uVar2 >> 0x30);
|
|
|
|
sVar22 = (short)(uVar3 >> 0x10);
|
|
|
|
sVar15 = (short)(uVar3 >> 0x20);
|
|
|
|
sVar24 = (short)(uVar3 >> 0x30);
|
|
|
|
param_3[3] = CONCAT26(sVar35 + sVar29,
|
|
|
|
CONCAT24(sVar28 + sVar33,CONCAT22(sVar32 + sVar18,(short)uVar2 + sVar17)));
|
|
|
|
param_3[5] = CONCAT26(sVar24 + sVar39,
|
|
|
|
CONCAT24(sVar15 + sVar38,CONCAT22(sVar22 + sVar37,(short)uVar3 + sVar36)));
|
|
|
|
uVar14 = DAT_008333b0;
|
|
|
|
uVar12 = CONCAT22(sVar15 - sVar38,sVar27 + sVar42);
|
|
|
|
uVar4 = *param_3;
|
|
|
|
uVar5 = param_3[2];
|
|
|
|
uVar20 = CONCAT22(sVar13 - sVar44,sVar28 - sVar33);
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)uVar1 - sVar40,(short)uVar2 - sVar17),
|
|
|
|
CONCAT22((short)uVar3 - sVar36,sVar25 + sVar46)),4);
|
|
|
|
uVar21 = paddsw(uVar21,DAT_008333b0);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[9] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22(sVar16 - sVar41,sVar32 - sVar18),
|
|
|
|
CONCAT22(sVar22 - sVar37,sVar26 + sVar48)),4);
|
|
|
|
uVar31 = paddsw(uVar21,uVar14);
|
|
|
|
uVar21 = psraw(CONCAT44(uVar20,uVar12),4);
|
|
|
|
sVar13 = (short)uVar31;
|
|
|
|
sVar15 = (short)((ulonglong)uVar31 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar31 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar31 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar31 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar31 >> 0x30);
|
|
|
|
param_3[0xb] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15)
|
|
|
|
* (sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar31 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar31 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
uVar31 = psraw(CONCAT44((int)(CONCAT26(sVar23 - sVar47,CONCAT24(sVar35 - sVar29,uVar20)) >> 0x20),
|
|
|
|
(int)(CONCAT26(sVar24 - sVar39,CONCAT24(sVar34 + sVar43,uVar12)) >> 0x20))
|
|
|
|
,4);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[0xd] = (ulonglong)
|
|
|
|
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
|
|
|
|
(sVar22 < 0x100) *
|
|
|
|
(char)((ulonglong)
|
|
|
|
uVar21 >>
|
|
|
|
0x30) -
|
|
|
|
(0xff < sVar22)) <<
|
|
|
|
0x30) >> 0x28),
|
|
|
|
(0 < sVar16) * (sVar16 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar16)) << 0x20) >> 0x18),
|
|
|
|
(0 < sVar15) * (sVar15 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15)),
|
|
|
|
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 -
|
|
|
|
(0xff < sVar13)));
|
|
|
|
uVar21 = paddsw(uVar31,uVar14);
|
|
|
|
uVar20 = CONCAT22((short)(uVar5 >> 0x20),(short)(uVar4 >> 0x20));
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[0xf] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15)
|
|
|
|
* (sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar1 = param_3[6];
|
|
|
|
uVar2 = param_3[4];
|
|
|
|
uVar12 = CONCAT22((short)(uVar1 >> 0x20),(short)(uVar2 >> 0x20));
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)uVar1,(short)uVar2),CONCAT22((short)uVar5,(short)uVar4)),4
|
|
|
|
);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
*param_3 = (ulonglong)
|
|
|
|
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
|
|
|
|
(sVar22 < 0x100) *
|
|
|
|
(char)((ulonglong)
|
|
|
|
uVar21 >> 0x30)
|
|
|
|
- (0xff < sVar22)) <<
|
|
|
|
0x30) >> 0x28),
|
|
|
|
(0 < sVar16) * (sVar16 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar16)) << 0x20) >> 0x18),
|
|
|
|
(0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) -
|
|
|
|
(0xff < sVar15)),
|
|
|
|
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 -
|
|
|
|
(0xff < sVar13)));
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)(uVar1 >> 0x10),(short)(uVar2 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar5 >> 0x10),(short)(uVar4 >> 0x10))),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[2] = (ulonglong)
|
|
|
|
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
|
|
|
|
(sVar22 < 0x100) *
|
|
|
|
(char)((ulonglong)
|
|
|
|
uVar21 >> 0x30
|
|
|
|
) -
|
|
|
|
(0xff < sVar22)) <<
|
|
|
|
0x30) >> 0x28),
|
|
|
|
(0 < sVar16) * (sVar16 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar16)) << 0x20) >> 0x18),
|
|
|
|
(0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10)
|
|
|
|
- (0xff < sVar15)),
|
|
|
|
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 -
|
|
|
|
(0xff < sVar13)));
|
|
|
|
uVar21 = psraw(CONCAT44(uVar12,uVar20),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[4] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44((int)(CONCAT26((short)(uVar1 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar2 >> 0x30),uVar12)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar5 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar4 >> 0x30),uVar20)) >> 0x20)),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
uVar1 = param_3[1];
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
sVar16 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[6] = (ulonglong)
|
|
|
|
CONCAT52(CONCAT41((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22) *
|
|
|
|
(sVar22 < 0x100) *
|
|
|
|
(char)((ulonglong)
|
|
|
|
uVar21 >> 0x30
|
|
|
|
) -
|
|
|
|
(0xff < sVar22)) <<
|
|
|
|
0x30) >> 0x28),
|
|
|
|
(0 < sVar16) * (sVar16 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar16)) << 0x20) >> 0x18),
|
|
|
|
(0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10)
|
|
|
|
- (0xff < sVar15)),
|
|
|
|
(ushort)(byte)((0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 -
|
|
|
|
(0xff < sVar13)));
|
|
|
|
uVar2 = param_3[3];
|
|
|
|
uVar3 = param_3[5];
|
|
|
|
uVar20 = CONCAT22((short)(uVar2 >> 0x20),(short)(uVar1 >> 0x20));
|
|
|
|
uVar4 = param_3[7];
|
|
|
|
uVar30 = CONCAT22((short)(uVar4 >> 0x20),(short)(uVar3 >> 0x20));
|
|
|
|
uVar5 = param_3[8];
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)uVar4,(short)uVar3),CONCAT22((short)uVar2,(short)uVar1)),4
|
|
|
|
);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[8] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44(uVar30,uVar20),4);
|
|
|
|
uVar6 = param_3[10];
|
|
|
|
uVar31 = paddsw(uVar21,uVar14);
|
|
|
|
uVar7 = param_3[0xc];
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)(uVar4 >> 0x10),(short)(uVar3 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar2 >> 0x10),(short)(uVar1 >> 0x10))),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar31;
|
|
|
|
sVar15 = (short)((ulonglong)uVar31 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar31 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar19 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar31 - (0xff < sVar13));
|
|
|
|
sVar16 = (short)((ulonglong)uVar31 >> 0x20);
|
|
|
|
sVar22 = (short)((ulonglong)uVar31 >> 0x30);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar10 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar10,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[10] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15)
|
|
|
|
* (sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar10,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffffffff00ff;
|
|
|
|
uVar12 = CONCAT22((short)(uVar6 >> 0x20),(short)(uVar5 >> 0x20));
|
|
|
|
uVar8 = param_3[0xe];
|
|
|
|
param_3[0xc] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar22)
|
|
|
|
* (sVar22 <
|
|
|
|
0x100) * (char)((ulonglong)uVar31 >> 0x30) -
|
|
|
|
(0xff < sVar22)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar16) * (sVar16 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar31 >> 0x20) -
|
|
|
|
(0xff < sVar16)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar19)) >> 0x10),uVar19) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44((int)(CONCAT26((short)(uVar4 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar3 >> 0x30),uVar30)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar2 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar1 >> 0x30),uVar20)) >> 0x20)),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
uVar20 = CONCAT22((short)(uVar8 >> 0x20),(short)(uVar7 >> 0x20));
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[0xe] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15)
|
|
|
|
* (sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)uVar8,(short)uVar7),CONCAT22((short)uVar6,(short)uVar5)),4
|
|
|
|
);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[1] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44(CONCAT22((short)(uVar8 >> 0x10),(short)(uVar7 >> 0x10)),
|
|
|
|
CONCAT22((short)(uVar6 >> 0x10),(short)(uVar5 >> 0x10))),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[3] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44(uVar20,uVar12),4);
|
|
|
|
uVar21 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar21;
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar21 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar21 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar21 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar21 >> 0x30);
|
|
|
|
param_3[5] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar21 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar21 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
uVar21 = psraw(CONCAT44((int)(CONCAT26((short)(uVar8 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar7 >> 0x30),uVar20)) >> 0x20),
|
|
|
|
(int)(CONCAT26((short)(uVar6 >> 0x30),
|
|
|
|
CONCAT24((short)(uVar5 >> 0x30),uVar12)) >> 0x20)),4);
|
|
|
|
uVar14 = paddsw(uVar21,uVar14);
|
|
|
|
sVar13 = (short)uVar14;
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x10);
|
|
|
|
cVar9 = (0 < sVar15) * (sVar15 < 0x100) * (char)((ulonglong)uVar14 >> 0x10) - (0xff < sVar15);
|
|
|
|
uVar11 = CONCAT11(cVar9,(0 < sVar13) * (sVar13 < 0x100) * (char)uVar14 - (0xff < sVar13));
|
|
|
|
sVar13 = (short)((ulonglong)uVar14 >> 0x20);
|
|
|
|
sVar15 = (short)((ulonglong)uVar14 >> 0x30);
|
|
|
|
param_3[7] = (ulonglong)
|
|
|
|
CONCAT52((int5)(CONCAT43((int)(((uint7)CONCAT21((short)(((uint7)(byte)((0 < sVar15) *
|
|
|
|
(sVar15 <
|
|
|
|
0x100) * (char)((ulonglong)uVar14 >> 0x30) -
|
|
|
|
(0xff < sVar15)) << 0x30) >> 0x28),
|
|
|
|
(0 < sVar13) * (sVar13 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar14 >> 0x20) -
|
|
|
|
(0xff < sVar13)) << 0x20) >> 0x18),
|
|
|
|
CONCAT12(cVar9,uVar11)) >> 0x10),uVar11) &
|
|
|
|
0xffffffff00ff00ff;
|
|
|
|
return CONCAT44(param_2,in_EAX);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064e820 at 0x0064E820 (size: 501) ---
|
|
|
|
|
|
void FUN_0064e820(undefined8 *param_1,undefined8 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
|
|
|
|
uVar2 = *param_2;
|
|
|
|
uVar4 = param_2[1];
|
|
|
|
uVar1 = psllw(*param_1,3);
|
|
|
|
uVar3 = psllw(param_1[1],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
*param_1 = uVar2;
|
|
|
|
param_1[1] = uVar4;
|
|
|
|
uVar2 = param_2[2];
|
|
|
|
uVar4 = param_2[3];
|
|
|
|
uVar1 = psllw(param_1[2],3);
|
|
|
|
uVar3 = psllw(param_1[3],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[2] = uVar2;
|
|
|
|
param_1[3] = uVar4;
|
|
|
|
uVar2 = param_2[4];
|
|
|
|
uVar4 = param_2[5];
|
|
|
|
uVar1 = psllw(param_1[4],3);
|
|
|
|
uVar3 = psllw(param_1[5],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[4] = uVar2;
|
|
|
|
param_1[5] = uVar4;
|
|
|
|
uVar2 = param_2[6];
|
|
|
|
uVar4 = param_2[7];
|
|
|
|
uVar1 = psllw(param_1[6],3);
|
|
|
|
uVar3 = psllw(param_1[7],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[6] = uVar2;
|
|
|
|
param_1[7] = uVar4;
|
|
|
|
uVar2 = param_2[8];
|
|
|
|
uVar4 = param_2[9];
|
|
|
|
uVar1 = psllw(param_1[8],3);
|
|
|
|
uVar3 = psllw(param_1[9],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[8] = uVar2;
|
|
|
|
param_1[9] = uVar4;
|
|
|
|
uVar2 = param_2[10];
|
|
|
|
uVar4 = param_2[0xb];
|
|
|
|
uVar1 = psllw(param_1[10],3);
|
|
|
|
uVar3 = psllw(param_1[0xb],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[10] = uVar2;
|
|
|
|
param_1[0xb] = uVar4;
|
|
|
|
uVar2 = param_2[0xc];
|
|
|
|
uVar4 = param_2[0xd];
|
|
|
|
uVar1 = psllw(param_1[0xc],3);
|
|
|
|
uVar3 = psllw(param_1[0xd],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[0xc] = uVar2;
|
|
|
|
param_1[0xd] = uVar4;
|
|
|
|
uVar2 = param_2[0xe];
|
|
|
|
uVar4 = param_2[0xf];
|
|
|
|
uVar1 = psllw(param_1[0xe],3);
|
|
|
|
uVar3 = psllw(param_1[0xf],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[0xe] = uVar2;
|
|
|
|
param_1[0xf] = uVar4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ea20 at 0x0064EA20 (size: 501) ---
|
|
|
|
|
|
void FUN_0064ea20(undefined8 *param_1,undefined8 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
|
|
|
|
uVar2 = *param_2;
|
|
|
|
uVar4 = param_2[1];
|
|
|
|
uVar1 = psllw(*param_1,3);
|
|
|
|
uVar3 = psllw(param_1[1],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
*param_1 = uVar2;
|
|
|
|
param_1[1] = uVar4;
|
|
|
|
uVar2 = param_2[2];
|
|
|
|
uVar4 = param_2[3];
|
|
|
|
uVar1 = psllw(param_1[2],3);
|
|
|
|
uVar3 = psllw(param_1[3],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[2] = uVar2;
|
|
|
|
param_1[3] = uVar4;
|
|
|
|
uVar2 = param_2[4];
|
|
|
|
uVar4 = param_2[5];
|
|
|
|
uVar1 = psllw(param_1[4],3);
|
|
|
|
uVar3 = psllw(param_1[5],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[4] = uVar2;
|
|
|
|
param_1[5] = uVar4;
|
|
|
|
uVar2 = param_2[6];
|
|
|
|
uVar4 = param_2[7];
|
|
|
|
uVar1 = psllw(param_1[6],3);
|
|
|
|
uVar3 = psllw(param_1[7],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[6] = uVar2;
|
|
|
|
param_1[7] = uVar4;
|
|
|
|
uVar2 = param_2[8];
|
|
|
|
uVar4 = param_2[9];
|
|
|
|
uVar1 = psllw(param_1[8],3);
|
|
|
|
uVar3 = psllw(param_1[9],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[8] = uVar2;
|
|
|
|
param_1[9] = uVar4;
|
|
|
|
uVar2 = param_2[10];
|
|
|
|
uVar4 = param_2[0xb];
|
|
|
|
uVar1 = psllw(param_1[10],3);
|
|
|
|
uVar3 = psllw(param_1[0xb],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[10] = uVar2;
|
|
|
|
param_1[0xb] = uVar4;
|
|
|
|
uVar2 = param_2[0xc];
|
|
|
|
uVar4 = param_2[0xd];
|
|
|
|
uVar1 = psllw(param_1[0xc],3);
|
|
|
|
uVar3 = psllw(param_1[0xd],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[0xc] = uVar2;
|
|
|
|
param_1[0xd] = uVar4;
|
|
|
|
uVar2 = param_2[0xe];
|
|
|
|
uVar4 = param_2[0xf];
|
|
|
|
uVar1 = psllw(param_1[0xe],3);
|
|
|
|
uVar3 = psllw(param_1[0xf],3);
|
|
|
|
uVar2 = pmulhw(uVar1,CONCAT26((ushort)((ulonglong)uVar2 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar2 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar2 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar2 >> 1))));
|
|
|
|
uVar4 = pmulhw(uVar3,CONCAT26((ushort)((ulonglong)uVar4 >> 0x31),
|
|
|
|
CONCAT24((ushort)((ulonglong)uVar4 >> 0x20) >> 1,
|
|
|
|
CONCAT22((ushort)((ulonglong)uVar4 >> 0x10) >> 1,
|
|
|
|
(ushort)uVar4 >> 1))));
|
|
|
|
uVar2 = psraw(CONCAT26((short)((ulonglong)uVar2 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar2 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar2 >> 0x10) + 1,(short)uVar2 + 1)))
|
|
|
|
,1);
|
|
|
|
uVar4 = psraw(CONCAT26((short)((ulonglong)uVar4 >> 0x30) + 1,
|
|
|
|
CONCAT24((short)((ulonglong)uVar4 >> 0x20) + 1,
|
|
|
|
CONCAT22((short)((ulonglong)uVar4 >> 0x10) + 1,(short)uVar4 + 1)))
|
|
|
|
,1);
|
|
|
|
param_1[0xe] = uVar2;
|
|
|
|
param_1[0xf] = uVar4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064ec20 at 0x0064EC20 (size: 1282) ---
|
|
|
|
|
|
void FUN_0064ec20(undefined1 (*param_1) [16],ushort *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 auVar1 [16];
|
|
|
|
undefined1 auVar2 [16];
|
|
|
|
undefined1 auVar3 [16];
|
|
|
|
undefined1 auVar4 [16];
|
|
|
|
undefined1 auVar5 [16];
|
|
|
|
undefined1 auVar6 [16];
|
|
|
|
undefined1 auVar7 [16];
|
|
|
|
undefined1 auVar8 [16];
|
|
|
|
undefined1 auVar9 [16];
|
|
|
|
undefined1 auVar10 [16];
|
|
|
|
undefined1 auVar11 [16];
|
|
|
|
undefined1 auVar12 [16];
|
|
|
|
undefined1 auVar13 [16];
|
|
|
|
undefined1 auVar14 [16];
|
|
|
|
undefined1 auVar15 [16];
|
|
|
|
undefined1 auVar16 [16];
|
|
|
|
undefined1 auVar17 [16];
|
|
|
|
undefined1 auVar18 [16];
|
|
|
|
undefined1 auVar19 [16];
|
|
|
|
undefined1 auVar20 [16];
|
|
|
|
undefined1 auVar21 [16];
|
|
|
|
undefined1 auVar22 [16];
|
|
|
|
undefined1 auVar23 [16];
|
|
|
|
undefined1 auVar24 [16];
|
|
|
|
undefined1 auVar25 [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];
|
|
|
|
|
|
|
|
if (((uint)param_1 & 0xf) == 0) {
|
|
|
|
if (((uint)param_2 & 0xf) == 0) {
|
|
|
|
auVar1 = psllw(*param_1,3);
|
|
|
|
auVar32 = psllw(param_1[1],3);
|
|
|
|
auVar28._0_2_ = *param_2 >> 1;
|
|
|
|
auVar28._2_2_ = param_2[1] >> 1;
|
|
|
|
auVar28._4_2_ = param_2[2] >> 1;
|
|
|
|
auVar28._6_2_ = param_2[3] >> 1;
|
|
|
|
auVar28._8_2_ = param_2[4] >> 1;
|
|
|
|
auVar28._10_2_ = param_2[5] >> 1;
|
|
|
|
auVar28._12_2_ = param_2[6] >> 1;
|
|
|
|
auVar28._14_2_ = param_2[7] >> 1;
|
|
|
|
auVar62._0_2_ = param_2[8] >> 1;
|
|
|
|
auVar62._2_2_ = param_2[9] >> 1;
|
|
|
|
auVar62._4_2_ = param_2[10] >> 1;
|
|
|
|
auVar62._6_2_ = param_2[0xb] >> 1;
|
|
|
|
auVar62._8_2_ = param_2[0xc] >> 1;
|
|
|
|
auVar62._10_2_ = param_2[0xd] >> 1;
|
|
|
|
auVar62._12_2_ = param_2[0xe] >> 1;
|
|
|
|
auVar62._14_2_ = param_2[0xf] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar28);
|
|
|
|
auVar45 = pmulhw(auVar32,auVar62);
|
|
|
|
auVar32._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar32._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar32._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar32._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar32._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar32._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar32._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar32._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar46._0_2_ = auVar45._0_2_ + 1;
|
|
|
|
auVar46._2_2_ = auVar45._2_2_ + 1;
|
|
|
|
auVar46._4_2_ = auVar45._4_2_ + 1;
|
|
|
|
auVar46._6_2_ = auVar45._6_2_ + 1;
|
|
|
|
auVar46._8_2_ = auVar45._8_2_ + 1;
|
|
|
|
auVar46._10_2_ = auVar45._10_2_ + 1;
|
|
|
|
auVar46._12_2_ = auVar45._12_2_ + 1;
|
|
|
|
auVar46._14_2_ = auVar45._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar32,1);
|
|
|
|
auVar32 = psraw(auVar46,1);
|
|
|
|
*param_1 = auVar1;
|
|
|
|
param_1[1] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[2],3);
|
|
|
|
auVar32 = psllw(param_1[3],3);
|
|
|
|
auVar29._0_2_ = param_2[0x10] >> 1;
|
|
|
|
auVar29._2_2_ = param_2[0x11] >> 1;
|
|
|
|
auVar29._4_2_ = param_2[0x12] >> 1;
|
|
|
|
auVar29._6_2_ = param_2[0x13] >> 1;
|
|
|
|
auVar29._8_2_ = param_2[0x14] >> 1;
|
|
|
|
auVar29._10_2_ = param_2[0x15] >> 1;
|
|
|
|
auVar29._12_2_ = param_2[0x16] >> 1;
|
|
|
|
auVar29._14_2_ = param_2[0x17] >> 1;
|
|
|
|
auVar63._0_2_ = param_2[0x18] >> 1;
|
|
|
|
auVar63._2_2_ = param_2[0x19] >> 1;
|
|
|
|
auVar63._4_2_ = param_2[0x1a] >> 1;
|
|
|
|
auVar63._6_2_ = param_2[0x1b] >> 1;
|
|
|
|
auVar63._8_2_ = param_2[0x1c] >> 1;
|
|
|
|
auVar63._10_2_ = param_2[0x1d] >> 1;
|
|
|
|
auVar63._12_2_ = param_2[0x1e] >> 1;
|
|
|
|
auVar63._14_2_ = param_2[0x1f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar29);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar63);
|
|
|
|
auVar45._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar45._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar45._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar45._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar45._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar45._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar45._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar45._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar47._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar47._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar47._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar47._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar47._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar47._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar47._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar47._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar45,1);
|
|
|
|
auVar32 = psraw(auVar47,1);
|
|
|
|
param_1[2] = auVar1;
|
|
|
|
param_1[3] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[4],3);
|
|
|
|
auVar32 = psllw(param_1[5],3);
|
|
|
|
auVar30._0_2_ = param_2[0x20] >> 1;
|
|
|
|
auVar30._2_2_ = param_2[0x21] >> 1;
|
|
|
|
auVar30._4_2_ = param_2[0x22] >> 1;
|
|
|
|
auVar30._6_2_ = param_2[0x23] >> 1;
|
|
|
|
auVar30._8_2_ = param_2[0x24] >> 1;
|
|
|
|
auVar30._10_2_ = param_2[0x25] >> 1;
|
|
|
|
auVar30._12_2_ = param_2[0x26] >> 1;
|
|
|
|
auVar30._14_2_ = param_2[0x27] >> 1;
|
|
|
|
auVar64._0_2_ = param_2[0x28] >> 1;
|
|
|
|
auVar64._2_2_ = param_2[0x29] >> 1;
|
|
|
|
auVar64._4_2_ = param_2[0x2a] >> 1;
|
|
|
|
auVar64._6_2_ = param_2[0x2b] >> 1;
|
|
|
|
auVar64._8_2_ = param_2[0x2c] >> 1;
|
|
|
|
auVar64._10_2_ = param_2[0x2d] >> 1;
|
|
|
|
auVar64._12_2_ = param_2[0x2e] >> 1;
|
|
|
|
auVar64._14_2_ = param_2[0x2f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar30);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar64);
|
|
|
|
auVar14._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar14._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar14._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar14._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar14._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar14._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar14._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar14._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar48._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar48._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar48._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar48._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar48._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar48._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar48._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar48._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar14,1);
|
|
|
|
auVar32 = psraw(auVar48,1);
|
|
|
|
param_1[4] = auVar1;
|
|
|
|
param_1[5] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[6],3);
|
|
|
|
auVar32 = psllw(param_1[7],3);
|
|
|
|
auVar31._0_2_ = param_2[0x30] >> 1;
|
|
|
|
auVar31._2_2_ = param_2[0x31] >> 1;
|
|
|
|
auVar31._4_2_ = param_2[0x32] >> 1;
|
|
|
|
auVar31._6_2_ = param_2[0x33] >> 1;
|
|
|
|
auVar31._8_2_ = param_2[0x34] >> 1;
|
|
|
|
auVar31._10_2_ = param_2[0x35] >> 1;
|
|
|
|
auVar31._12_2_ = param_2[0x36] >> 1;
|
|
|
|
auVar31._14_2_ = param_2[0x37] >> 1;
|
|
|
|
auVar65._0_2_ = param_2[0x38] >> 1;
|
|
|
|
auVar65._2_2_ = param_2[0x39] >> 1;
|
|
|
|
auVar65._4_2_ = param_2[0x3a] >> 1;
|
|
|
|
auVar65._6_2_ = param_2[0x3b] >> 1;
|
|
|
|
auVar65._8_2_ = param_2[0x3c] >> 1;
|
|
|
|
auVar65._10_2_ = param_2[0x3d] >> 1;
|
|
|
|
auVar65._12_2_ = param_2[0x3e] >> 1;
|
|
|
|
auVar65._14_2_ = param_2[0x3f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar31);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar65);
|
|
|
|
auVar15._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar15._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar15._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar15._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar15._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar15._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar15._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar15._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar49._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar49._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar49._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar49._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar49._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar49._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar49._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar49._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar15,1);
|
|
|
|
auVar32 = psraw(auVar49,1);
|
|
|
|
param_1[6] = auVar1;
|
|
|
|
param_1[7] = auVar32;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
auVar1 = psllw(*param_1,3);
|
|
|
|
auVar32 = psllw(param_1[1],3);
|
|
|
|
auVar24._0_2_ = *param_2 >> 1;
|
|
|
|
auVar24._2_2_ = param_2[1] >> 1;
|
|
|
|
auVar24._4_2_ = param_2[2] >> 1;
|
|
|
|
auVar24._6_2_ = param_2[3] >> 1;
|
|
|
|
auVar24._8_2_ = param_2[4] >> 1;
|
|
|
|
auVar24._10_2_ = param_2[5] >> 1;
|
|
|
|
auVar24._12_2_ = param_2[6] >> 1;
|
|
|
|
auVar24._14_2_ = param_2[7] >> 1;
|
|
|
|
auVar58._0_2_ = param_2[8] >> 1;
|
|
|
|
auVar58._2_2_ = param_2[9] >> 1;
|
|
|
|
auVar58._4_2_ = param_2[10] >> 1;
|
|
|
|
auVar58._6_2_ = param_2[0xb] >> 1;
|
|
|
|
auVar58._8_2_ = param_2[0xc] >> 1;
|
|
|
|
auVar58._10_2_ = param_2[0xd] >> 1;
|
|
|
|
auVar58._12_2_ = param_2[0xe] >> 1;
|
|
|
|
auVar58._14_2_ = param_2[0xf] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar24);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar58);
|
|
|
|
auVar10._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar10._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar10._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar10._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar10._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar10._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar10._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar10._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar41._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar41._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar41._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar41._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar41._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar41._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar41._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar41._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar10,1);
|
|
|
|
auVar32 = psraw(auVar41,1);
|
|
|
|
*param_1 = auVar1;
|
|
|
|
param_1[1] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[2],3);
|
|
|
|
auVar32 = psllw(param_1[3],3);
|
|
|
|
auVar25._0_2_ = param_2[0x10] >> 1;
|
|
|
|
auVar25._2_2_ = param_2[0x11] >> 1;
|
|
|
|
auVar25._4_2_ = param_2[0x12] >> 1;
|
|
|
|
auVar25._6_2_ = param_2[0x13] >> 1;
|
|
|
|
auVar25._8_2_ = param_2[0x14] >> 1;
|
|
|
|
auVar25._10_2_ = param_2[0x15] >> 1;
|
|
|
|
auVar25._12_2_ = param_2[0x16] >> 1;
|
|
|
|
auVar25._14_2_ = param_2[0x17] >> 1;
|
|
|
|
auVar59._0_2_ = param_2[0x18] >> 1;
|
|
|
|
auVar59._2_2_ = param_2[0x19] >> 1;
|
|
|
|
auVar59._4_2_ = param_2[0x1a] >> 1;
|
|
|
|
auVar59._6_2_ = param_2[0x1b] >> 1;
|
|
|
|
auVar59._8_2_ = param_2[0x1c] >> 1;
|
|
|
|
auVar59._10_2_ = param_2[0x1d] >> 1;
|
|
|
|
auVar59._12_2_ = param_2[0x1e] >> 1;
|
|
|
|
auVar59._14_2_ = param_2[0x1f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar25);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar59);
|
|
|
|
auVar11._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar11._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar11._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar11._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar11._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar11._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar11._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar11._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar42._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar42._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar42._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar42._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar42._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar42._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar42._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar42._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar11,1);
|
|
|
|
auVar32 = psraw(auVar42,1);
|
|
|
|
param_1[2] = auVar1;
|
|
|
|
param_1[3] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[4],3);
|
|
|
|
auVar32 = psllw(param_1[5],3);
|
|
|
|
auVar26._0_2_ = param_2[0x20] >> 1;
|
|
|
|
auVar26._2_2_ = param_2[0x21] >> 1;
|
|
|
|
auVar26._4_2_ = param_2[0x22] >> 1;
|
|
|
|
auVar26._6_2_ = param_2[0x23] >> 1;
|
|
|
|
auVar26._8_2_ = param_2[0x24] >> 1;
|
|
|
|
auVar26._10_2_ = param_2[0x25] >> 1;
|
|
|
|
auVar26._12_2_ = param_2[0x26] >> 1;
|
|
|
|
auVar26._14_2_ = param_2[0x27] >> 1;
|
|
|
|
auVar60._0_2_ = param_2[0x28] >> 1;
|
|
|
|
auVar60._2_2_ = param_2[0x29] >> 1;
|
|
|
|
auVar60._4_2_ = param_2[0x2a] >> 1;
|
|
|
|
auVar60._6_2_ = param_2[0x2b] >> 1;
|
|
|
|
auVar60._8_2_ = param_2[0x2c] >> 1;
|
|
|
|
auVar60._10_2_ = param_2[0x2d] >> 1;
|
|
|
|
auVar60._12_2_ = param_2[0x2e] >> 1;
|
|
|
|
auVar60._14_2_ = param_2[0x2f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar26);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar60);
|
|
|
|
auVar12._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar12._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar12._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar12._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar12._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar12._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar12._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar12._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar43._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar43._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar43._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar43._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar43._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar43._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar43._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar43._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar12,1);
|
|
|
|
auVar32 = psraw(auVar43,1);
|
|
|
|
param_1[4] = auVar1;
|
|
|
|
param_1[5] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[6],3);
|
|
|
|
auVar32 = psllw(param_1[7],3);
|
|
|
|
auVar27._0_2_ = param_2[0x30] >> 1;
|
|
|
|
auVar27._2_2_ = param_2[0x31] >> 1;
|
|
|
|
auVar27._4_2_ = param_2[0x32] >> 1;
|
|
|
|
auVar27._6_2_ = param_2[0x33] >> 1;
|
|
|
|
auVar27._8_2_ = param_2[0x34] >> 1;
|
|
|
|
auVar27._10_2_ = param_2[0x35] >> 1;
|
|
|
|
auVar27._12_2_ = param_2[0x36] >> 1;
|
|
|
|
auVar27._14_2_ = param_2[0x37] >> 1;
|
|
|
|
auVar61._0_2_ = param_2[0x38] >> 1;
|
|
|
|
auVar61._2_2_ = param_2[0x39] >> 1;
|
|
|
|
auVar61._4_2_ = param_2[0x3a] >> 1;
|
|
|
|
auVar61._6_2_ = param_2[0x3b] >> 1;
|
|
|
|
auVar61._8_2_ = param_2[0x3c] >> 1;
|
|
|
|
auVar61._10_2_ = param_2[0x3d] >> 1;
|
|
|
|
auVar61._12_2_ = param_2[0x3e] >> 1;
|
|
|
|
auVar61._14_2_ = param_2[0x3f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar27);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar61);
|
|
|
|
auVar13._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar13._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar13._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar13._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar13._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar13._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar13._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar13._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar44._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar44._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar44._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar44._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar44._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar44._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar44._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar44._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar13,1);
|
|
|
|
auVar32 = psraw(auVar44,1);
|
|
|
|
param_1[6] = auVar1;
|
|
|
|
param_1[7] = auVar32;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((uint)param_2 & 0xf) == 0) {
|
|
|
|
auVar1 = psllw(*param_1,3);
|
|
|
|
auVar32 = psllw(param_1[1],3);
|
|
|
|
auVar20._0_2_ = *param_2 >> 1;
|
|
|
|
auVar20._2_2_ = param_2[1] >> 1;
|
|
|
|
auVar20._4_2_ = param_2[2] >> 1;
|
|
|
|
auVar20._6_2_ = param_2[3] >> 1;
|
|
|
|
auVar20._8_2_ = param_2[4] >> 1;
|
|
|
|
auVar20._10_2_ = param_2[5] >> 1;
|
|
|
|
auVar20._12_2_ = param_2[6] >> 1;
|
|
|
|
auVar20._14_2_ = param_2[7] >> 1;
|
|
|
|
auVar54._0_2_ = param_2[8] >> 1;
|
|
|
|
auVar54._2_2_ = param_2[9] >> 1;
|
|
|
|
auVar54._4_2_ = param_2[10] >> 1;
|
|
|
|
auVar54._6_2_ = param_2[0xb] >> 1;
|
|
|
|
auVar54._8_2_ = param_2[0xc] >> 1;
|
|
|
|
auVar54._10_2_ = param_2[0xd] >> 1;
|
|
|
|
auVar54._12_2_ = param_2[0xe] >> 1;
|
|
|
|
auVar54._14_2_ = param_2[0xf] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar20);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar54);
|
|
|
|
auVar6._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar6._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar6._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar6._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar6._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar6._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar6._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar6._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar37._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar37._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar37._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar37._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar37._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar37._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar37._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar37._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar6,1);
|
|
|
|
auVar32 = psraw(auVar37,1);
|
|
|
|
*param_1 = auVar1;
|
|
|
|
param_1[1] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[2],3);
|
|
|
|
auVar32 = psllw(param_1[3],3);
|
|
|
|
auVar21._0_2_ = param_2[0x10] >> 1;
|
|
|
|
auVar21._2_2_ = param_2[0x11] >> 1;
|
|
|
|
auVar21._4_2_ = param_2[0x12] >> 1;
|
|
|
|
auVar21._6_2_ = param_2[0x13] >> 1;
|
|
|
|
auVar21._8_2_ = param_2[0x14] >> 1;
|
|
|
|
auVar21._10_2_ = param_2[0x15] >> 1;
|
|
|
|
auVar21._12_2_ = param_2[0x16] >> 1;
|
|
|
|
auVar21._14_2_ = param_2[0x17] >> 1;
|
|
|
|
auVar55._0_2_ = param_2[0x18] >> 1;
|
|
|
|
auVar55._2_2_ = param_2[0x19] >> 1;
|
|
|
|
auVar55._4_2_ = param_2[0x1a] >> 1;
|
|
|
|
auVar55._6_2_ = param_2[0x1b] >> 1;
|
|
|
|
auVar55._8_2_ = param_2[0x1c] >> 1;
|
|
|
|
auVar55._10_2_ = param_2[0x1d] >> 1;
|
|
|
|
auVar55._12_2_ = param_2[0x1e] >> 1;
|
|
|
|
auVar55._14_2_ = param_2[0x1f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar21);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar55);
|
|
|
|
auVar7._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar7._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar7._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar7._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar7._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar7._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar7._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar7._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar38._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar38._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar38._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar38._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar38._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar38._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar38._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar38._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar7,1);
|
|
|
|
auVar32 = psraw(auVar38,1);
|
|
|
|
param_1[2] = auVar1;
|
|
|
|
param_1[3] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[4],3);
|
|
|
|
auVar32 = psllw(param_1[5],3);
|
|
|
|
auVar22._0_2_ = param_2[0x20] >> 1;
|
|
|
|
auVar22._2_2_ = param_2[0x21] >> 1;
|
|
|
|
auVar22._4_2_ = param_2[0x22] >> 1;
|
|
|
|
auVar22._6_2_ = param_2[0x23] >> 1;
|
|
|
|
auVar22._8_2_ = param_2[0x24] >> 1;
|
|
|
|
auVar22._10_2_ = param_2[0x25] >> 1;
|
|
|
|
auVar22._12_2_ = param_2[0x26] >> 1;
|
|
|
|
auVar22._14_2_ = param_2[0x27] >> 1;
|
|
|
|
auVar56._0_2_ = param_2[0x28] >> 1;
|
|
|
|
auVar56._2_2_ = param_2[0x29] >> 1;
|
|
|
|
auVar56._4_2_ = param_2[0x2a] >> 1;
|
|
|
|
auVar56._6_2_ = param_2[0x2b] >> 1;
|
|
|
|
auVar56._8_2_ = param_2[0x2c] >> 1;
|
|
|
|
auVar56._10_2_ = param_2[0x2d] >> 1;
|
|
|
|
auVar56._12_2_ = param_2[0x2e] >> 1;
|
|
|
|
auVar56._14_2_ = param_2[0x2f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar22);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar56);
|
|
|
|
auVar8._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar8._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar8._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar8._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar8._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar8._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar8._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar8._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar39._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar39._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar39._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar39._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar39._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar39._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar39._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar39._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar8,1);
|
|
|
|
auVar32 = psraw(auVar39,1);
|
|
|
|
param_1[4] = auVar1;
|
|
|
|
param_1[5] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[6],3);
|
|
|
|
auVar32 = psllw(param_1[7],3);
|
|
|
|
auVar23._0_2_ = param_2[0x30] >> 1;
|
|
|
|
auVar23._2_2_ = param_2[0x31] >> 1;
|
|
|
|
auVar23._4_2_ = param_2[0x32] >> 1;
|
|
|
|
auVar23._6_2_ = param_2[0x33] >> 1;
|
|
|
|
auVar23._8_2_ = param_2[0x34] >> 1;
|
|
|
|
auVar23._10_2_ = param_2[0x35] >> 1;
|
|
|
|
auVar23._12_2_ = param_2[0x36] >> 1;
|
|
|
|
auVar23._14_2_ = param_2[0x37] >> 1;
|
|
|
|
auVar57._0_2_ = param_2[0x38] >> 1;
|
|
|
|
auVar57._2_2_ = param_2[0x39] >> 1;
|
|
|
|
auVar57._4_2_ = param_2[0x3a] >> 1;
|
|
|
|
auVar57._6_2_ = param_2[0x3b] >> 1;
|
|
|
|
auVar57._8_2_ = param_2[0x3c] >> 1;
|
|
|
|
auVar57._10_2_ = param_2[0x3d] >> 1;
|
|
|
|
auVar57._12_2_ = param_2[0x3e] >> 1;
|
|
|
|
auVar57._14_2_ = param_2[0x3f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar23);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar57);
|
|
|
|
auVar9._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar9._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar9._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar9._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar9._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar9._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar9._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar9._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar40._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar40._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar40._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar40._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar40._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar40._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar40._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar40._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar9,1);
|
|
|
|
auVar32 = psraw(auVar40,1);
|
|
|
|
param_1[6] = auVar1;
|
|
|
|
param_1[7] = auVar32;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
auVar1 = psllw(*param_1,3);
|
|
|
|
auVar32 = psllw(param_1[1],3);
|
|
|
|
auVar16._0_2_ = *param_2 >> 1;
|
|
|
|
auVar16._2_2_ = param_2[1] >> 1;
|
|
|
|
auVar16._4_2_ = param_2[2] >> 1;
|
|
|
|
auVar16._6_2_ = param_2[3] >> 1;
|
|
|
|
auVar16._8_2_ = param_2[4] >> 1;
|
|
|
|
auVar16._10_2_ = param_2[5] >> 1;
|
|
|
|
auVar16._12_2_ = param_2[6] >> 1;
|
|
|
|
auVar16._14_2_ = param_2[7] >> 1;
|
|
|
|
auVar50._0_2_ = param_2[8] >> 1;
|
|
|
|
auVar50._2_2_ = param_2[9] >> 1;
|
|
|
|
auVar50._4_2_ = param_2[10] >> 1;
|
|
|
|
auVar50._6_2_ = param_2[0xb] >> 1;
|
|
|
|
auVar50._8_2_ = param_2[0xc] >> 1;
|
|
|
|
auVar50._10_2_ = param_2[0xd] >> 1;
|
|
|
|
auVar50._12_2_ = param_2[0xe] >> 1;
|
|
|
|
auVar50._14_2_ = param_2[0xf] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar16);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar50);
|
|
|
|
auVar2._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar2._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar2._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar2._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar2._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar2._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar2._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar2._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar33._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar33._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar33._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar33._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar33._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar33._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar33._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar33._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar2,1);
|
|
|
|
auVar32 = psraw(auVar33,1);
|
|
|
|
*param_1 = auVar1;
|
|
|
|
param_1[1] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[2],3);
|
|
|
|
auVar32 = psllw(param_1[3],3);
|
|
|
|
auVar17._0_2_ = param_2[0x10] >> 1;
|
|
|
|
auVar17._2_2_ = param_2[0x11] >> 1;
|
|
|
|
auVar17._4_2_ = param_2[0x12] >> 1;
|
|
|
|
auVar17._6_2_ = param_2[0x13] >> 1;
|
|
|
|
auVar17._8_2_ = param_2[0x14] >> 1;
|
|
|
|
auVar17._10_2_ = param_2[0x15] >> 1;
|
|
|
|
auVar17._12_2_ = param_2[0x16] >> 1;
|
|
|
|
auVar17._14_2_ = param_2[0x17] >> 1;
|
|
|
|
auVar51._0_2_ = param_2[0x18] >> 1;
|
|
|
|
auVar51._2_2_ = param_2[0x19] >> 1;
|
|
|
|
auVar51._4_2_ = param_2[0x1a] >> 1;
|
|
|
|
auVar51._6_2_ = param_2[0x1b] >> 1;
|
|
|
|
auVar51._8_2_ = param_2[0x1c] >> 1;
|
|
|
|
auVar51._10_2_ = param_2[0x1d] >> 1;
|
|
|
|
auVar51._12_2_ = param_2[0x1e] >> 1;
|
|
|
|
auVar51._14_2_ = param_2[0x1f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar17);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar51);
|
|
|
|
auVar3._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar3._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar3._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar3._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar3._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar3._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar3._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar3._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar34._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar34._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar34._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar34._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar34._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar34._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar34._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar34._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar3,1);
|
|
|
|
auVar32 = psraw(auVar34,1);
|
|
|
|
param_1[2] = auVar1;
|
|
|
|
param_1[3] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[4],3);
|
|
|
|
auVar32 = psllw(param_1[5],3);
|
|
|
|
auVar18._0_2_ = param_2[0x20] >> 1;
|
|
|
|
auVar18._2_2_ = param_2[0x21] >> 1;
|
|
|
|
auVar18._4_2_ = param_2[0x22] >> 1;
|
|
|
|
auVar18._6_2_ = param_2[0x23] >> 1;
|
|
|
|
auVar18._8_2_ = param_2[0x24] >> 1;
|
|
|
|
auVar18._10_2_ = param_2[0x25] >> 1;
|
|
|
|
auVar18._12_2_ = param_2[0x26] >> 1;
|
|
|
|
auVar18._14_2_ = param_2[0x27] >> 1;
|
|
|
|
auVar52._0_2_ = param_2[0x28] >> 1;
|
|
|
|
auVar52._2_2_ = param_2[0x29] >> 1;
|
|
|
|
auVar52._4_2_ = param_2[0x2a] >> 1;
|
|
|
|
auVar52._6_2_ = param_2[0x2b] >> 1;
|
|
|
|
auVar52._8_2_ = param_2[0x2c] >> 1;
|
|
|
|
auVar52._10_2_ = param_2[0x2d] >> 1;
|
|
|
|
auVar52._12_2_ = param_2[0x2e] >> 1;
|
|
|
|
auVar52._14_2_ = param_2[0x2f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar18);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar52);
|
|
|
|
auVar4._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar4._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar4._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar4._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar4._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar4._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar4._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar4._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar35._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar35._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar35._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar35._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar35._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar35._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar35._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar35._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar4,1);
|
|
|
|
auVar32 = psraw(auVar35,1);
|
|
|
|
param_1[4] = auVar1;
|
|
|
|
param_1[5] = auVar32;
|
|
|
|
auVar1 = psllw(param_1[6],3);
|
|
|
|
auVar32 = psllw(param_1[7],3);
|
|
|
|
auVar19._0_2_ = param_2[0x30] >> 1;
|
|
|
|
auVar19._2_2_ = param_2[0x31] >> 1;
|
|
|
|
auVar19._4_2_ = param_2[0x32] >> 1;
|
|
|
|
auVar19._6_2_ = param_2[0x33] >> 1;
|
|
|
|
auVar19._8_2_ = param_2[0x34] >> 1;
|
|
|
|
auVar19._10_2_ = param_2[0x35] >> 1;
|
|
|
|
auVar19._12_2_ = param_2[0x36] >> 1;
|
|
|
|
auVar19._14_2_ = param_2[0x37] >> 1;
|
|
|
|
auVar53._0_2_ = param_2[0x38] >> 1;
|
|
|
|
auVar53._2_2_ = param_2[0x39] >> 1;
|
|
|
|
auVar53._4_2_ = param_2[0x3a] >> 1;
|
|
|
|
auVar53._6_2_ = param_2[0x3b] >> 1;
|
|
|
|
auVar53._8_2_ = param_2[0x3c] >> 1;
|
|
|
|
auVar53._10_2_ = param_2[0x3d] >> 1;
|
|
|
|
auVar53._12_2_ = param_2[0x3e] >> 1;
|
|
|
|
auVar53._14_2_ = param_2[0x3f] >> 1;
|
|
|
|
auVar1 = pmulhw(auVar1,auVar19);
|
|
|
|
auVar32 = pmulhw(auVar32,auVar53);
|
|
|
|
auVar5._0_2_ = auVar1._0_2_ + 1;
|
|
|
|
auVar5._2_2_ = auVar1._2_2_ + 1;
|
|
|
|
auVar5._4_2_ = auVar1._4_2_ + 1;
|
|
|
|
auVar5._6_2_ = auVar1._6_2_ + 1;
|
|
|
|
auVar5._8_2_ = auVar1._8_2_ + 1;
|
|
|
|
auVar5._10_2_ = auVar1._10_2_ + 1;
|
|
|
|
auVar5._12_2_ = auVar1._12_2_ + 1;
|
|
|
|
auVar5._14_2_ = auVar1._14_2_ + 1;
|
|
|
|
auVar36._0_2_ = auVar32._0_2_ + 1;
|
|
|
|
auVar36._2_2_ = auVar32._2_2_ + 1;
|
|
|
|
auVar36._4_2_ = auVar32._4_2_ + 1;
|
|
|
|
auVar36._6_2_ = auVar32._6_2_ + 1;
|
|
|
|
auVar36._8_2_ = auVar32._8_2_ + 1;
|
|
|
|
auVar36._10_2_ = auVar32._10_2_ + 1;
|
|
|
|
auVar36._12_2_ = auVar32._12_2_ + 1;
|
|
|
|
auVar36._14_2_ = auVar32._14_2_ + 1;
|
|
|
|
auVar1 = psraw(auVar5,1);
|
|
|
|
auVar32 = psraw(auVar36,1);
|
|
|
|
param_1[6] = auVar1;
|
|
|
|
param_1[7] = auVar32;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064f130 at 0x0064F130 (size: 2007) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0064f130(undefined8 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
ulonglong uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined8 uVar9;
|
|
|
|
undefined8 uVar10;
|
|
|
|
int iVar11;
|
|
|
|
undefined8 uVar12;
|
|
|
|
int iVar13;
|
|
|
|
|
|
|
|
uVar1 = paddsw(param_1[2],param_1[0xc]);
|
|
|
|
uVar1 = psllw(uVar1,3);
|
|
|
|
uVar5 = paddsw(param_1[10],param_1[4]);
|
|
|
|
uVar7 = paddsw(*param_1,param_1[0xe]);
|
|
|
|
uVar6 = psllw(uVar5,3);
|
|
|
|
uVar4 = psubsw(param_1[2],param_1[0xc]);
|
|
|
|
uVar5 = psubsw(uVar1,uVar6);
|
|
|
|
uVar2 = pmulhw(DAT_00833400,uVar5);
|
|
|
|
uVar12 = paddsw(param_1[6],param_1[8]);
|
|
|
|
uVar7 = psllw(uVar7,3);
|
|
|
|
uVar9 = paddsw(uVar1,uVar6);
|
|
|
|
uVar6 = psllw(uVar12,3);
|
|
|
|
uVar1 = psubsw(uVar7,uVar6);
|
|
|
|
uVar3 = paddsw(uVar2,uVar1);
|
|
|
|
uVar2 = paddsw(uVar7,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,4);
|
|
|
|
uVar12 = pmulhw(uVar1,DAT_00833400);
|
|
|
|
uVar1 = psubsw(param_1[4],param_1[10]);
|
|
|
|
uVar6 = psubsw(uVar2,uVar9);
|
|
|
|
param_1[4] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar9 = paddsw(uVar2,uVar9);
|
|
|
|
uVar7 = psllw(uVar1,4);
|
|
|
|
uVar2 = psubsw(param_1[6],param_1[8]);
|
|
|
|
param_1[8] = uVar6;
|
|
|
|
uVar1 = DAT_00833410;
|
|
|
|
uVar6 = paddsw(uVar4,uVar7);
|
|
|
|
uVar3 = pmulhw(uVar6,_DAT_00833430);
|
|
|
|
uVar4 = psubsw(uVar4,uVar7);
|
|
|
|
uVar6 = pmulhw(uVar4,_DAT_00833430);
|
|
|
|
uVar8 = psubsw(uVar12,uVar5);
|
|
|
|
uVar8 = uVar8 | _DAT_008333d0;
|
|
|
|
uVar5 = psllw(uVar2,3);
|
|
|
|
uVar3 = uVar3 | _DAT_008333d0;
|
|
|
|
uVar2 = paddsw(uVar5,uVar6);
|
|
|
|
uVar4 = psubsw(*param_1,param_1[0xe]);
|
|
|
|
uVar6 = psubsw(uVar5,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,3);
|
|
|
|
uVar5 = pmulhw(DAT_008333f0,uVar2);
|
|
|
|
*param_1 = uVar9;
|
|
|
|
uVar7 = pmulhw(uVar1,uVar6);
|
|
|
|
param_1[0xc] = uVar8;
|
|
|
|
uVar12 = psubsw(uVar4,uVar3);
|
|
|
|
uVar1 = paddsw(uVar4,uVar3);
|
|
|
|
uVar4 = pmulhw(DAT_00833410,uVar12);
|
|
|
|
uVar3 = paddsw(uVar5,uVar1);
|
|
|
|
uVar7 = paddsw(uVar7,uVar6);
|
|
|
|
uVar1 = pmulhw(uVar1,DAT_008333f0);
|
|
|
|
uVar5 = paddsw(uVar4,uVar12);
|
|
|
|
uVar4 = psubsw(uVar12,uVar7);
|
|
|
|
param_1[2] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar5 = paddsw(uVar5,uVar6);
|
|
|
|
param_1[6] = uVar4;
|
|
|
|
uVar1 = psubsw(uVar1,uVar2);
|
|
|
|
param_1[10] = uVar5;
|
|
|
|
param_1[0xe] = uVar1;
|
|
|
|
uVar1 = paddsw(param_1[3],param_1[0xd]);
|
|
|
|
uVar1 = psllw(uVar1,3);
|
|
|
|
uVar5 = paddsw(param_1[0xb],param_1[5]);
|
|
|
|
uVar7 = paddsw(param_1[1],param_1[0xf]);
|
|
|
|
uVar6 = psllw(uVar5,3);
|
|
|
|
uVar4 = psubsw(param_1[3],param_1[0xd]);
|
|
|
|
uVar5 = psubsw(uVar1,uVar6);
|
|
|
|
uVar2 = pmulhw(DAT_00833400,uVar5);
|
|
|
|
uVar12 = paddsw(param_1[7],param_1[9]);
|
|
|
|
uVar7 = psllw(uVar7,3);
|
|
|
|
uVar9 = paddsw(uVar1,uVar6);
|
|
|
|
uVar6 = psllw(uVar12,3);
|
|
|
|
uVar1 = psubsw(uVar7,uVar6);
|
|
|
|
uVar3 = paddsw(uVar2,uVar1);
|
|
|
|
uVar2 = paddsw(uVar7,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,4);
|
|
|
|
uVar12 = pmulhw(uVar1,DAT_00833400);
|
|
|
|
uVar1 = psubsw(param_1[5],param_1[0xb]);
|
|
|
|
uVar6 = psubsw(uVar2,uVar9);
|
|
|
|
param_1[5] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar9 = paddsw(uVar2,uVar9);
|
|
|
|
uVar7 = psllw(uVar1,4);
|
|
|
|
uVar2 = psubsw(param_1[7],param_1[9]);
|
|
|
|
param_1[9] = uVar6;
|
|
|
|
uVar1 = DAT_00833410;
|
|
|
|
uVar6 = paddsw(uVar4,uVar7);
|
|
|
|
uVar3 = pmulhw(uVar6,_DAT_00833430);
|
|
|
|
uVar4 = psubsw(uVar4,uVar7);
|
|
|
|
uVar6 = pmulhw(uVar4,_DAT_00833430);
|
|
|
|
uVar8 = psubsw(uVar12,uVar5);
|
|
|
|
uVar8 = uVar8 | _DAT_008333d0;
|
|
|
|
uVar5 = psllw(uVar2,3);
|
|
|
|
uVar3 = uVar3 | _DAT_008333d0;
|
|
|
|
uVar2 = paddsw(uVar5,uVar6);
|
|
|
|
uVar4 = psubsw(param_1[1],param_1[0xf]);
|
|
|
|
uVar6 = psubsw(uVar5,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,3);
|
|
|
|
uVar5 = pmulhw(DAT_008333f0,uVar2);
|
|
|
|
param_1[1] = uVar9;
|
|
|
|
uVar7 = pmulhw(uVar1,uVar6);
|
|
|
|
param_1[0xd] = uVar8;
|
|
|
|
uVar12 = psubsw(uVar4,uVar3);
|
|
|
|
uVar1 = paddsw(uVar4,uVar3);
|
|
|
|
uVar4 = pmulhw(DAT_00833410,uVar12);
|
|
|
|
uVar3 = paddsw(uVar5,uVar1);
|
|
|
|
uVar7 = paddsw(uVar7,uVar6);
|
|
|
|
uVar1 = pmulhw(uVar1,DAT_008333f0);
|
|
|
|
uVar5 = paddsw(uVar4,uVar12);
|
|
|
|
uVar4 = psubsw(uVar12,uVar7);
|
|
|
|
param_1[3] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar5 = paddsw(uVar5,uVar6);
|
|
|
|
param_1[7] = uVar4;
|
|
|
|
uVar1 = psubsw(uVar1,uVar2);
|
|
|
|
param_1[0xb] = uVar5;
|
|
|
|
param_1[0xf] = uVar1;
|
|
|
|
uVar1 = param_1[1];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(*param_1,uVar5);
|
|
|
|
uVar2 = psubsw(*param_1,uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833440,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833448,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833450,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833458,uVar6);
|
|
|
|
iVar11 = (int)DAT_008333e0;
|
|
|
|
iVar13 = (int)((ulonglong)DAT_008333e0 >> 0x20);
|
|
|
|
uVar4 = pmaddwd(DAT_00833460,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_00833468,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833470);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_00833478);
|
|
|
|
*param_1 = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[1] = uVar1;
|
|
|
|
uVar1 = param_1[3];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[2],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[2],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833480,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833488,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833490,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833498,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_008334a0,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_008334a8,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334b0);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_008334b8);
|
|
|
|
param_1[2] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[3] = uVar1;
|
|
|
|
uVar1 = param_1[5];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[4],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[4],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_008334c0,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_008334c8,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_008334d0,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_008334d8,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_008334e0,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_008334e8,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334f0);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_008334f8);
|
|
|
|
param_1[4] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[5] = uVar1;
|
|
|
|
uVar1 = param_1[7];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[6],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[6],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833500,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833508,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833510,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833518,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_00833520,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_00833528,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833530);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_00833538);
|
|
|
|
param_1[6] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[7] = uVar1;
|
|
|
|
uVar1 = param_1[9];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[8],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[8],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833440,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833448,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833450,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833458,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_00833460,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_00833468,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833470);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_00833478);
|
|
|
|
param_1[8] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[9] = uVar1;
|
|
|
|
uVar1 = param_1[0xb];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[10],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[10],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833500,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833508,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833510,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833518,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_00833520,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_00833528,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833530);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_00833538);
|
|
|
|
param_1[10] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xb] = uVar1;
|
|
|
|
uVar1 = param_1[0xd];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[0xc],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[0xc],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_008334c0,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_008334c8,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_008334d0,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_008334d8,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_008334e0,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_008334e8,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334f0);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_008334f8);
|
|
|
|
param_1[0xc] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xd] = uVar1;
|
|
|
|
uVar1 = param_1[0xf];
|
|
|
|
uVar5 = CONCAT44(CONCAT22((short)uVar1,(short)((ulonglong)uVar1 >> 0x10)),
|
|
|
|
CONCAT22((short)((ulonglong)uVar1 >> 0x20),(short)((ulonglong)uVar1 >> 0x30)));
|
|
|
|
uVar1 = paddsw(param_1[0xe],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[0xe],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar7 = pmaddwd(DAT_00833480,uVar5);
|
|
|
|
uVar6 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar12 = pmaddwd(DAT_00833488,uVar6);
|
|
|
|
uVar10 = pmaddwd(DAT_00833490,uVar5);
|
|
|
|
uVar2 = pmaddwd(DAT_00833498,uVar6);
|
|
|
|
uVar4 = pmaddwd(DAT_008334a0,uVar5);
|
|
|
|
uVar9 = pmaddwd(DAT_008334a8,uVar6);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334b0);
|
|
|
|
uVar2 = packssdw(CONCAT44((int)((ulonglong)uVar7 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar7 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar10 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar2 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar10 + iVar11 + (int)uVar2 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar6,_DAT_008334b8);
|
|
|
|
param_1[0xe] = uVar2;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar9 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar9 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xf] = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0064f910 at 0x0064F910 (size: 1879) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0064f910(undefined8 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
ulonglong uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined8 uVar9;
|
|
|
|
undefined8 uVar10;
|
|
|
|
int iVar11;
|
|
|
|
undefined8 uVar12;
|
|
|
|
int iVar13;
|
|
|
|
|
|
|
|
uVar1 = paddsw(param_1[2],param_1[0xc]);
|
|
|
|
uVar1 = psllw(uVar1,3);
|
|
|
|
uVar5 = paddsw(param_1[10],param_1[4]);
|
|
|
|
uVar7 = paddsw(*param_1,param_1[0xe]);
|
|
|
|
uVar6 = psllw(uVar5,3);
|
|
|
|
uVar4 = psubsw(param_1[2],param_1[0xc]);
|
|
|
|
uVar5 = psubsw(uVar1,uVar6);
|
|
|
|
uVar2 = pmulhw(DAT_00833400,uVar5);
|
|
|
|
uVar12 = paddsw(param_1[6],param_1[8]);
|
|
|
|
uVar7 = psllw(uVar7,3);
|
|
|
|
uVar9 = paddsw(uVar1,uVar6);
|
|
|
|
uVar6 = psllw(uVar12,3);
|
|
|
|
uVar1 = psubsw(uVar7,uVar6);
|
|
|
|
uVar3 = paddsw(uVar2,uVar1);
|
|
|
|
uVar2 = paddsw(uVar7,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,4);
|
|
|
|
uVar12 = pmulhw(uVar1,DAT_00833400);
|
|
|
|
uVar1 = psubsw(param_1[4],param_1[10]);
|
|
|
|
uVar6 = psubsw(uVar2,uVar9);
|
|
|
|
param_1[4] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar9 = paddsw(uVar2,uVar9);
|
|
|
|
uVar7 = psllw(uVar1,4);
|
|
|
|
uVar2 = psubsw(param_1[6],param_1[8]);
|
|
|
|
param_1[8] = uVar6;
|
|
|
|
uVar1 = DAT_00833410;
|
|
|
|
uVar6 = paddsw(uVar4,uVar7);
|
|
|
|
uVar3 = pmulhw(uVar6,_DAT_00833430);
|
|
|
|
uVar4 = psubsw(uVar4,uVar7);
|
|
|
|
uVar6 = pmulhw(uVar4,_DAT_00833430);
|
|
|
|
uVar8 = psubsw(uVar12,uVar5);
|
|
|
|
uVar8 = uVar8 | _DAT_008333d0;
|
|
|
|
uVar5 = psllw(uVar2,3);
|
|
|
|
uVar3 = uVar3 | _DAT_008333d0;
|
|
|
|
uVar2 = paddsw(uVar5,uVar6);
|
|
|
|
uVar4 = psubsw(*param_1,param_1[0xe]);
|
|
|
|
uVar6 = psubsw(uVar5,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,3);
|
|
|
|
uVar5 = pmulhw(DAT_008333f0,uVar2);
|
|
|
|
*param_1 = uVar9;
|
|
|
|
uVar7 = pmulhw(uVar1,uVar6);
|
|
|
|
param_1[0xc] = uVar8;
|
|
|
|
uVar12 = psubsw(uVar4,uVar3);
|
|
|
|
uVar1 = paddsw(uVar4,uVar3);
|
|
|
|
uVar4 = pmulhw(DAT_00833410,uVar12);
|
|
|
|
uVar3 = paddsw(uVar5,uVar1);
|
|
|
|
uVar7 = paddsw(uVar7,uVar6);
|
|
|
|
uVar1 = pmulhw(uVar1,DAT_008333f0);
|
|
|
|
uVar5 = paddsw(uVar4,uVar12);
|
|
|
|
uVar4 = psubsw(uVar12,uVar7);
|
|
|
|
param_1[2] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar5 = paddsw(uVar5,uVar6);
|
|
|
|
param_1[6] = uVar4;
|
|
|
|
uVar1 = psubsw(uVar1,uVar2);
|
|
|
|
param_1[10] = uVar5;
|
|
|
|
param_1[0xe] = uVar1;
|
|
|
|
uVar1 = paddsw(param_1[3],param_1[0xd]);
|
|
|
|
uVar1 = psllw(uVar1,3);
|
|
|
|
uVar5 = paddsw(param_1[0xb],param_1[5]);
|
|
|
|
uVar7 = paddsw(param_1[1],param_1[0xf]);
|
|
|
|
uVar6 = psllw(uVar5,3);
|
|
|
|
uVar4 = psubsw(param_1[3],param_1[0xd]);
|
|
|
|
uVar5 = psubsw(uVar1,uVar6);
|
|
|
|
uVar2 = pmulhw(DAT_00833400,uVar5);
|
|
|
|
uVar12 = paddsw(param_1[7],param_1[9]);
|
|
|
|
uVar7 = psllw(uVar7,3);
|
|
|
|
uVar9 = paddsw(uVar1,uVar6);
|
|
|
|
uVar6 = psllw(uVar12,3);
|
|
|
|
uVar1 = psubsw(uVar7,uVar6);
|
|
|
|
uVar3 = paddsw(uVar2,uVar1);
|
|
|
|
uVar2 = paddsw(uVar7,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,4);
|
|
|
|
uVar12 = pmulhw(uVar1,DAT_00833400);
|
|
|
|
uVar1 = psubsw(param_1[5],param_1[0xb]);
|
|
|
|
uVar6 = psubsw(uVar2,uVar9);
|
|
|
|
param_1[5] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar9 = paddsw(uVar2,uVar9);
|
|
|
|
uVar7 = psllw(uVar1,4);
|
|
|
|
uVar2 = psubsw(param_1[7],param_1[9]);
|
|
|
|
param_1[9] = uVar6;
|
|
|
|
uVar1 = DAT_00833410;
|
|
|
|
uVar6 = paddsw(uVar4,uVar7);
|
|
|
|
uVar3 = pmulhw(uVar6,_DAT_00833430);
|
|
|
|
uVar4 = psubsw(uVar4,uVar7);
|
|
|
|
uVar6 = pmulhw(uVar4,_DAT_00833430);
|
|
|
|
uVar8 = psubsw(uVar12,uVar5);
|
|
|
|
uVar8 = uVar8 | _DAT_008333d0;
|
|
|
|
uVar5 = psllw(uVar2,3);
|
|
|
|
uVar3 = uVar3 | _DAT_008333d0;
|
|
|
|
uVar2 = paddsw(uVar5,uVar6);
|
|
|
|
uVar4 = psubsw(param_1[1],param_1[0xf]);
|
|
|
|
uVar6 = psubsw(uVar5,uVar6);
|
|
|
|
uVar4 = psllw(uVar4,3);
|
|
|
|
uVar5 = pmulhw(DAT_008333f0,uVar2);
|
|
|
|
param_1[1] = uVar9;
|
|
|
|
uVar7 = pmulhw(uVar1,uVar6);
|
|
|
|
param_1[0xd] = uVar8;
|
|
|
|
uVar12 = psubsw(uVar4,uVar3);
|
|
|
|
uVar1 = paddsw(uVar4,uVar3);
|
|
|
|
uVar4 = pmulhw(DAT_00833410,uVar12);
|
|
|
|
uVar3 = paddsw(uVar5,uVar1);
|
|
|
|
uVar7 = paddsw(uVar7,uVar6);
|
|
|
|
uVar1 = pmulhw(uVar1,DAT_008333f0);
|
|
|
|
uVar5 = paddsw(uVar4,uVar12);
|
|
|
|
uVar4 = psubsw(uVar12,uVar7);
|
|
|
|
param_1[3] = uVar3 | _DAT_008333d0;
|
|
|
|
uVar5 = paddsw(uVar5,uVar6);
|
|
|
|
param_1[7] = uVar4;
|
|
|
|
uVar1 = psubsw(uVar1,uVar2);
|
|
|
|
param_1[0xb] = uVar5;
|
|
|
|
param_1[0xf] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[1],param_1[1],0x1b);
|
|
|
|
uVar1 = paddsw(*param_1,uVar5);
|
|
|
|
uVar2 = psubsw(*param_1,uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833440,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833448,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833450,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833458,uVar2);
|
|
|
|
iVar11 = (int)DAT_008333e0;
|
|
|
|
iVar13 = (int)((ulonglong)DAT_008333e0 >> 0x20);
|
|
|
|
uVar4 = pmaddwd(DAT_00833460,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_00833468,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833470);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_00833478);
|
|
|
|
*param_1 = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[1] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[3],param_1[3],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[2],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[2],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833480,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833488,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833490,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833498,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_008334a0,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_008334a8,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334b0);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_008334b8);
|
|
|
|
param_1[2] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[3] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[5],param_1[5],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[4],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[4],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_008334c0,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_008334c8,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_008334d0,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_008334d8,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_008334e0,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_008334e8,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334f0);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_008334f8);
|
|
|
|
param_1[4] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[5] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[7],param_1[7],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[6],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[6],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833500,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833508,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833510,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833518,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_00833520,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_00833528,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833530);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_00833538);
|
|
|
|
param_1[6] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[7] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[9],param_1[9],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[8],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[8],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833440,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833448,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833450,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833458,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_00833460,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_00833468,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833470);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_00833478);
|
|
|
|
param_1[8] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[9] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[0xb],param_1[0xb],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[10],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[10],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833500,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833508,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833510,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833518,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_00833520,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_00833528,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_00833530);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_00833538);
|
|
|
|
param_1[10] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xb] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[0xd],param_1[0xd],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[0xc],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[0xc],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_008334c0,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_008334c8,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_008334d0,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_008334d8,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_008334e0,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_008334e8,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334f0);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_008334f8);
|
|
|
|
param_1[0xc] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xd] = uVar1;
|
|
|
|
uVar5 = pshufw(param_1[0xf],param_1[0xf],0x1b);
|
|
|
|
uVar1 = paddsw(param_1[0xe],uVar5);
|
|
|
|
uVar2 = psubsw(param_1[0xe],uVar5);
|
|
|
|
uVar5 = CONCAT44((int)uVar2,(int)uVar1);
|
|
|
|
uVar6 = pmaddwd(DAT_00833480,uVar5);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
uVar7 = pmaddwd(DAT_00833488,uVar2);
|
|
|
|
uVar9 = pmaddwd(DAT_00833490,uVar5);
|
|
|
|
uVar10 = pmaddwd(DAT_00833498,uVar2);
|
|
|
|
uVar4 = pmaddwd(DAT_008334a0,uVar5);
|
|
|
|
uVar12 = pmaddwd(DAT_008334a8,uVar2);
|
|
|
|
uVar1 = pmaddwd(uVar5,_DAT_008334b0);
|
|
|
|
uVar6 = packssdw(CONCAT44((int)((ulonglong)uVar6 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar7 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar6 + iVar11 + (int)uVar7 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar9 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar10 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar9 + iVar11 + (int)uVar10 >> 0x14));
|
|
|
|
uVar5 = pmaddwd(uVar2,_DAT_008334b8);
|
|
|
|
param_1[0xe] = uVar6;
|
|
|
|
uVar1 = packssdw(CONCAT44((int)((ulonglong)uVar4 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar12 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar4 + iVar11 + (int)uVar12 >> 0x14),
|
|
|
|
CONCAT44((int)((ulonglong)uVar1 >> 0x20) + iVar13 +
|
|
|
|
(int)((ulonglong)uVar5 >> 0x20) >> 0x14,
|
|
|
|
(int)uVar1 + iVar11 + (int)uVar5 >> 0x14));
|
|
|
|
param_1[0xf] = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|