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>
7647 lines
221 KiB
C
7647 lines
221 KiB
C
// Decompiled from acclient.exe — chunk 0x00630000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_00631630 at 0x00631630 (size: 3537) ---
|
|
|
|
|
|
void FUN_00631630(int param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
|
|
|
|
int param_6,char param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
undefined1 *puVar2;
|
|
|
|
short sVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined1 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined1 *puVar8;
|
|
|
|
undefined1 *puVar9;
|
|
|
|
short *psVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
short *psVar16;
|
|
|
|
int iVar17;
|
|
|
|
undefined1 *puVar18;
|
|
|
|
undefined1 *puVar19;
|
|
|
|
undefined1 *puVar20;
|
|
|
|
int iVar21;
|
|
|
|
undefined1 local_58c [1280];
|
|
|
|
int local_8c;
|
|
|
|
int local_88;
|
|
|
|
int local_84;
|
|
|
|
int local_80;
|
|
|
|
undefined1 *local_7c;
|
|
|
|
undefined1 *local_78;
|
|
|
|
int local_74;
|
|
|
|
int local_70;
|
|
|
|
int local_6c;
|
|
|
|
int local_68;
|
|
|
|
undefined1 *local_64;
|
|
|
|
int local_60;
|
|
|
|
undefined1 *local_5c;
|
|
|
|
int local_58;
|
|
|
|
int local_54;
|
|
|
|
int local_50;
|
|
|
|
undefined1 *local_4c;
|
|
|
|
undefined1 *local_48;
|
|
|
|
undefined1 *local_44;
|
|
|
|
int local_40;
|
|
|
|
short *local_3c;
|
|
|
|
undefined1 *local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
undefined1 *local_2c;
|
|
|
|
undefined1 *local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x37b8);
|
|
|
|
if (iVar4 == 2) {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37bc);
|
|
|
|
if (iVar14 == 1) {
|
|
|
|
local_74 = 0;
|
|
|
|
iVar12 = *(int *)(param_1 + 0x37c0) + -1;
|
|
|
|
if (*(int *)(param_1 + 0x37c0) != 0) {
|
|
|
|
local_74 = 0;
|
|
|
|
iVar6 = iVar12 * 0x10;
|
|
|
|
local_7c = (undefined1 *)0x0;
|
|
|
|
do {
|
|
|
|
iVar12 = iVar12 + -1;
|
|
|
|
local_74 = local_74 +
|
|
|
|
*(int *)(iVar6 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar6 + 8 + *(int *)(param_1 + 0x37cc));
|
|
|
|
iVar6 = iVar6 + -0x10;
|
|
|
|
} while (iVar12 != -1);
|
|
|
|
local_78 = (undefined1 *)0x2;
|
|
|
|
}
|
|
|
|
local_18 = local_74 * 0x40;
|
|
|
|
local_1c = *(int *)(param_1 + 0x4dec);
|
|
|
|
local_6c = param_4 * 2 * local_18 + *(int *)(local_1c + 4);
|
|
|
|
local_74 = local_74 * 0x100 + local_6c;
|
|
|
|
goto LAB_00631677;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37bc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x37b8);
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37bc);
|
|
|
|
}
|
|
|
|
local_6c = 0;
|
|
|
|
local_74 = 0;
|
|
|
|
LAB_00631677:
|
|
|
|
puVar8 = (undefined1 *)0x0;
|
|
|
|
local_70 = *(int *)(param_1 + 0x4834);
|
|
|
|
iVar4 = FUN_0062f6a0(param_1 + 4,iVar4 * param_6,iVar14 * param_6,param_4,param_5,
|
|
|
|
*(undefined4 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x3c),
|
|
|
|
*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
|
|
|
|
*(undefined4 *)(param_1 + 0x28),param_2 + 0x2c,&local_8c);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
local_24 = *(int *)(param_2 + 0x2c);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
if (*(int *)(param_2 + 0x38) == 0) {
|
|
|
|
local_24 = local_24 + 2;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_2 + 0x38) == 1) {
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37c0);
|
|
|
|
local_1c = 0;
|
|
|
|
local_20 = param_6 << 5;
|
|
|
|
while( true ) {
|
|
|
|
if (iVar4 == 3) {
|
|
|
|
iVar12 = 3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
iVar6 = iVar14;
|
|
|
|
if (iVar12 <= iVar14) {
|
|
|
|
if (iVar4 == 3) {
|
|
|
|
iVar6 = 3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (iVar6 <= local_1c) break;
|
|
|
|
if ((*(int *)(param_1 + 0x58) != 4) || (local_1c < 1)) {
|
|
|
|
local_48 = *(undefined1 **)(param_1 + 0x37b8);
|
|
|
|
iVar11 = local_1c * 0x10;
|
|
|
|
local_40 = iVar11;
|
|
|
|
iVar12 = iVar11 + *(int *)(param_1 + 0x37cc);
|
|
|
|
puVar8 = *(undefined1 **)(iVar12 + 4);
|
|
|
|
local_60 = iVar12;
|
|
|
|
local_5c = puVar8;
|
|
|
|
puVar5 = (undefined1 *)((int)local_48 / (int)puVar8);
|
|
|
|
local_44 = *(undefined1 **)(param_1 + 0x37bc);
|
|
|
|
iVar14 = *(int *)(iVar12 + 8);
|
|
|
|
iVar6 = (int)local_44 / iVar14;
|
|
|
|
if (param_7 == '\0') {
|
|
|
|
if ((((*(int *)(param_1 + 0x4de8) == 1) && (local_48 == (undefined1 *)0x2)) &&
|
|
|
|
(local_44 == (undefined1 *)0x1)) && (param_6 != 1)) {
|
|
|
|
local_4c = local_58c;
|
|
|
|
local_48 = (undefined1 *)0x0;
|
|
|
|
if (0 < (int)puVar8) {
|
|
|
|
local_54 = param_6 + -1;
|
|
|
|
local_58 = param_6 + -6;
|
|
|
|
local_50 = (int)puVar5 * param_6;
|
|
|
|
local_44 = (undefined1 *)(param_6 * 8);
|
|
|
|
puVar18 = (undefined1 *)0x0;
|
|
|
|
local_7c = puVar5;
|
|
|
|
do {
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0 < (int)local_44) {
|
|
|
|
local_18 = local_6c + param_6 * 2;
|
|
|
|
iVar14 = 0;
|
|
|
|
local_28 = (undefined1 *)(local_70 + param_6 * 2);
|
|
|
|
local_48 = puVar18;
|
|
|
|
do {
|
|
|
|
puVar8 = (undefined1 *)(iVar4 << 2);
|
|
|
|
if (local_7c == (undefined1 *)0x2) {
|
|
|
|
local_5c = puVar8;
|
|
|
|
puVar18 = (undefined1 *)(iVar4 * 2);
|
|
|
|
local_2c = puVar18;
|
|
|
|
psVar16 = (short *)(local_70 + iVar4 * 2);
|
|
|
|
local_3c = psVar16;
|
|
|
|
sVar3 = *psVar16;
|
|
|
|
puVar5 = local_4c + iVar4 * 4;
|
|
|
|
local_38 = puVar5;
|
|
|
|
*puVar5 = (char)(*(short *)(local_18 + -2 + iVar4 * 2) + 1 + sVar3 * 3 >> 2);
|
|
|
|
puVar5[1] = (char)(psVar16[1] + 2 + sVar3 * 3 >> 2);
|
|
|
|
if (1 < local_54) {
|
|
|
|
psVar10 = psVar16 + 1;
|
|
|
|
local_30 = iVar14;
|
|
|
|
local_34 = iVar4;
|
|
|
|
do {
|
|
|
|
puVar8 = puVar8 + 2;
|
|
|
|
sVar3 = *psVar10;
|
|
|
|
puVar5 = local_4c + (int)puVar8;
|
|
|
|
*puVar5 = (char)(psVar10[-1] + 1 + sVar3 * 3 >> 2);
|
|
|
|
puVar5[1] = (char)(psVar10[1] + 2 + sVar3 * 3 >> 2);
|
|
|
|
psVar10 = psVar10 + 1;
|
|
|
|
} while ((int)psVar10 < (int)(psVar16 + param_6 + -1));
|
|
|
|
local_38 = puVar5;
|
|
|
|
}
|
|
|
|
puVar8 = local_38;
|
|
|
|
sVar3 = *(short *)(local_28 + -2 + (int)puVar18);
|
|
|
|
local_38[2] = (char)(*(short *)(local_28 + -4 + (int)puVar18) + 1 + sVar3 * 3
|
|
|
|
>> 2);
|
|
|
|
puVar8[3] = (char)(*(short *)(puVar18 + local_74) + 2 + sVar3 * 3 >> 2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0;
|
|
|
|
if (0 < param_6) {
|
|
|
|
if (param_6 < 6) {
|
|
|
|
puVar8 = local_4c + iVar4 * 4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar8 = local_4c + iVar4 * 4;
|
|
|
|
iVar6 = local_70 + iVar14;
|
|
|
|
local_30 = iVar14;
|
|
|
|
do {
|
|
|
|
puVar8[iVar12] = *(undefined1 *)(iVar6 + iVar12 * 2);
|
|
|
|
puVar8[iVar12 + 1] = *(undefined1 *)(iVar6 + 2 + iVar12 * 2);
|
|
|
|
puVar8[iVar12 + 2] = *(undefined1 *)(iVar6 + 4 + iVar12 * 2);
|
|
|
|
puVar8[iVar12 + 3] = *(undefined1 *)(iVar6 + 6 + iVar12 * 2);
|
|
|
|
puVar8[iVar12 + 4] = *(undefined1 *)(iVar6 + 8 + iVar12 * 2);
|
|
|
|
iVar12 = iVar12 + 5;
|
|
|
|
} while (iVar12 <= local_58);
|
|
|
|
}
|
|
|
|
local_34 = iVar4;
|
|
|
|
do {
|
|
|
|
puVar8[iVar12] = *(undefined1 *)(local_70 + iVar14 + iVar12 * 2);
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
} while (iVar12 < param_6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar14 = iVar14 + 0x10;
|
|
|
|
iVar4 = iVar4 + 8;
|
|
|
|
} while (iVar4 < (int)local_44);
|
|
|
|
puVar8 = *(undefined1 **)(local_40 + 4 + *(int *)(param_1 + 0x37cc));
|
|
|
|
puVar18 = local_48;
|
|
|
|
}
|
|
|
|
local_70 = local_70 + 0x80;
|
|
|
|
local_74 = local_74 + 0x80;
|
|
|
|
local_6c = local_6c + 0x80;
|
|
|
|
puVar18 = puVar18 + 1;
|
|
|
|
local_4c = local_4c + local_50;
|
|
|
|
} while ((int)puVar18 < (int)puVar8);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_50 = 0;
|
|
|
|
if (0 < iVar14) {
|
|
|
|
iVar7 = iVar6 * 0x20;
|
|
|
|
local_4c = (undefined1 *)((int)puVar5 * param_6);
|
|
|
|
local_48 = puVar5 + -5;
|
|
|
|
puVar18 = (undefined1 *)0x0;
|
|
|
|
local_44 = (undefined1 *)0x0;
|
|
|
|
iVar4 = 0;
|
|
|
|
local_68 = iVar7;
|
|
|
|
local_18 = local_20 * iVar6;
|
|
|
|
do {
|
|
|
|
puVar19 = local_58c + (int)puVar18;
|
|
|
|
iVar15 = 0;
|
|
|
|
if (0 < (int)puVar8) {
|
|
|
|
local_44 = puVar18;
|
|
|
|
local_50 = iVar4;
|
|
|
|
local_60 = iVar12;
|
|
|
|
iVar14 = local_70;
|
|
|
|
do {
|
|
|
|
iVar12 = 0;
|
|
|
|
if (0 < param_6) {
|
|
|
|
puVar8 = (undefined1 *)0x0;
|
|
|
|
local_30 = iVar15;
|
|
|
|
local_2c = puVar19;
|
|
|
|
do {
|
|
|
|
iVar13 = 0;
|
|
|
|
if (0 < param_6) {
|
|
|
|
local_28 = puVar19 + (int)puVar8;
|
|
|
|
psVar16 = (short *)0x0;
|
|
|
|
local_38 = puVar8;
|
|
|
|
local_34 = iVar12;
|
|
|
|
do {
|
|
|
|
puVar9 = (undefined1 *)0x0;
|
|
|
|
if (0 < iVar7) {
|
|
|
|
puVar1 = puVar19 + (int)puVar8 + (int)psVar16;
|
|
|
|
local_3c = psVar16;
|
|
|
|
local_54 = iVar13;
|
|
|
|
do {
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < (int)puVar5) {
|
|
|
|
if ((int)puVar5 < 5) {
|
|
|
|
puVar20 = (undefined1 *)(iVar12 * 0x10 + iVar14 + iVar13 * 2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar21 = iVar12 * 0x10 + iVar14;
|
|
|
|
puVar20 = (undefined1 *)(iVar21 + iVar13 * 2);
|
|
|
|
puVar2 = puVar9 + (int)puVar1;
|
|
|
|
local_58 = 0;
|
|
|
|
local_5c = puVar2;
|
|
|
|
do {
|
|
|
|
puVar2[local_58] = *(undefined1 *)(iVar21 + iVar13 * 2);
|
|
|
|
puVar2[local_58 + 1] = *(undefined1 *)(iVar21 + iVar13 * 2);
|
|
|
|
puVar2[local_58 + 2] = *(undefined1 *)(iVar21 + iVar13 * 2);
|
|
|
|
puVar2[local_58 + 3] = *(undefined1 *)(iVar21 + iVar13 * 2);
|
|
|
|
iVar17 = local_58 + 4;
|
|
|
|
local_58 = iVar17;
|
|
|
|
} while (iVar17 <= (int)(puVar5 + -5));
|
|
|
|
}
|
|
|
|
local_64 = puVar9;
|
|
|
|
do {
|
|
|
|
(puVar9 + (int)puVar1)[iVar17] = *puVar20;
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
} while (iVar17 < (int)puVar5);
|
|
|
|
}
|
|
|
|
puVar9 = puVar9 + 0x20;
|
|
|
|
local_78 = puVar1;
|
|
|
|
} while ((int)puVar9 < iVar7);
|
|
|
|
}
|
|
|
|
psVar16 = (short *)((int)psVar16 + (int)puVar5);
|
|
|
|
iVar13 = iVar13 + 1;
|
|
|
|
} while (iVar13 < param_6);
|
|
|
|
}
|
|
|
|
puVar8 = puVar8 + iVar7;
|
|
|
|
iVar12 = iVar12 + 1;
|
|
|
|
} while (iVar12 < param_6);
|
|
|
|
local_60 = *(int *)(param_1 + 0x37cc) + iVar11;
|
|
|
|
puVar8 = *(undefined1 **)(local_60 + 4);
|
|
|
|
}
|
|
|
|
puVar19 = puVar19 + (int)puVar5 * param_6;
|
|
|
|
iVar14 = iVar14 + 0x80;
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < (int)puVar8);
|
|
|
|
local_70 = iVar14;
|
|
|
|
iVar14 = *(int *)(local_60 + 8);
|
|
|
|
iVar12 = local_60;
|
|
|
|
}
|
|
|
|
puVar18 = puVar18 + local_20 * iVar6;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < iVar14);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
local_7c = puVar5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_50 = 0;
|
|
|
|
if (0 < iVar14) {
|
|
|
|
iVar7 = iVar6 * param_6;
|
|
|
|
puVar5 = (undefined1 *)((int)puVar5 * param_6);
|
|
|
|
local_44 = puVar5 + -6;
|
|
|
|
iVar4 = 0;
|
|
|
|
puVar18 = (undefined1 *)0x0;
|
|
|
|
local_4c = (undefined1 *)0x0;
|
|
|
|
local_68 = iVar7;
|
|
|
|
do {
|
|
|
|
iVar15 = 0;
|
|
|
|
if (0 < (int)puVar8) {
|
|
|
|
local_4c = puVar18;
|
|
|
|
local_50 = iVar4;
|
|
|
|
iVar14 = local_70;
|
|
|
|
local_48 = local_58c + (int)puVar18;
|
|
|
|
do {
|
|
|
|
iVar13 = 0;
|
|
|
|
if (0 < iVar7) {
|
|
|
|
puVar8 = (undefined1 *)0x0;
|
|
|
|
iVar12 = 0;
|
|
|
|
local_54 = iVar15;
|
|
|
|
do {
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < (int)puVar5) {
|
|
|
|
if ((int)puVar5 < 6) {
|
|
|
|
local_64 = local_48 + (int)puVar8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar19 = local_48 + (int)puVar8;
|
|
|
|
local_64 = puVar19;
|
|
|
|
iVar21 = iVar14 + iVar12;
|
|
|
|
local_60 = iVar12;
|
|
|
|
do {
|
|
|
|
puVar19[iVar17] = *(undefined1 *)(iVar21 + iVar17 * 2);
|
|
|
|
puVar19[iVar17 + 1] = *(undefined1 *)(iVar21 + 2 + iVar17 * 2);
|
|
|
|
puVar19[iVar17 + 2] = *(undefined1 *)(iVar21 + 4 + iVar17 * 2);
|
|
|
|
puVar19[iVar17 + 3] = *(undefined1 *)(iVar21 + 6 + iVar17 * 2);
|
|
|
|
puVar19[iVar17 + 4] = *(undefined1 *)(iVar21 + 8 + iVar17 * 2);
|
|
|
|
iVar17 = iVar17 + 5;
|
|
|
|
} while (iVar17 <= (int)(puVar5 + -6));
|
|
|
|
}
|
|
|
|
local_5c = puVar8;
|
|
|
|
local_58 = iVar13;
|
|
|
|
do {
|
|
|
|
local_64[iVar17] = *(undefined1 *)(iVar14 + iVar12 + iVar17 * 2);
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
} while (iVar17 < (int)puVar5);
|
|
|
|
}
|
|
|
|
puVar8 = puVar8 + 0x20;
|
|
|
|
iVar12 = iVar12 + 0x10;
|
|
|
|
iVar13 = iVar13 + 1;
|
|
|
|
} while (iVar13 < iVar7);
|
|
|
|
iVar12 = *(int *)(param_1 + 0x37cc) + iVar11;
|
|
|
|
puVar8 = *(undefined1 **)(iVar12 + 4);
|
|
|
|
}
|
|
|
|
local_48 = local_48 + (int)puVar5;
|
|
|
|
iVar14 = iVar14 + 0x80;
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < (int)puVar8);
|
|
|
|
local_70 = iVar14;
|
|
|
|
iVar14 = *(int *)(iVar12 + 8);
|
|
|
|
}
|
|
|
|
puVar18 = puVar18 + local_20 * iVar6;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < iVar14);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
local_7c = puVar5;
|
|
|
|
local_78 = (undefined1 *)(local_20 * iVar6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar8 = local_58c;
|
|
|
|
if ((iVar4 == 3) && (local_1c != 0)) {
|
|
|
|
if (local_1c == 2) {
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
}
|
|
|
|
if (local_88 < local_80) {
|
|
|
|
puVar5 = (undefined1 *)(local_88 << 5);
|
|
|
|
iVar4 = local_88;
|
|
|
|
do {
|
|
|
|
if (local_8c < local_84) {
|
|
|
|
local_78 = puVar5;
|
|
|
|
local_7c = puVar8;
|
|
|
|
iVar14 = local_8c;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(iVar4 * *(int *)(param_1 + 0x3c) + local_24 + iVar14 * 2) =
|
|
|
|
(puVar8 + (int)puVar5)[iVar14];
|
|
|
|
iVar14 = iVar14 + 2;
|
|
|
|
} while (iVar14 < local_84);
|
|
|
|
}
|
|
|
|
puVar5 = puVar5 + 0x20;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < local_80);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00633140(param_1,&local_8c,local_1c,local_24,puVar8);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_24 = local_24 + -1;
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
iVar14 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_1c = local_1c + 1;
|
|
|
|
}
|
|
|
|
iVar14 = local_1c;
|
|
|
|
if ((*(int *)(param_1 + 0x74) != 0) &&
|
|
|
|
(iVar14 = *(int *)(param_1 + 0x54), iVar14 + -1 != *(int *)(param_2 + 0x38))) {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
if (((iVar4 != 0xff) || (*(int *)(param_1 + 0x58) != 0xff)) &&
|
|
|
|
(iVar4 = local_24, iVar14 < *(int *)(param_1 + 0x30))) {
|
|
|
|
do {
|
|
|
|
FUN_00633140(param_1,&local_8c,iVar14,iVar4,puVar8);
|
|
|
|
if ((*(int *)(param_1 + 0x34) == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
}
|
|
|
|
iVar14 = iVar14 + 1;
|
|
|
|
} while (iVar14 < *(int *)(param_1 + 0x30));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00632470 at 0x00632470 (size: 801) ---
|
|
|
|
|
|
void FUN_00632470(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int local_44;
|
|
|
|
int local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_24;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar7 = *(int *)(param_1 + 0x4834);
|
|
|
|
iVar2 = FUN_0062f6a0(param_1 + 4,param_5,param_5,param_3,param_4,*(undefined4 *)(param_1 + 0x30),
|
|
|
|
*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x20),
|
|
|
|
*(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x28),
|
|
|
|
param_2 + 0x2c,&local_44);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar2 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_1c = *(int *)(param_2 + 0x2c) + 2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = *(int *)(param_2 + 0x2c);
|
|
|
|
}
|
|
|
|
iVar6 = 0;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
local_24 = iVar7;
|
|
|
|
if (0 < local_18) {
|
|
|
|
do {
|
|
|
|
if (iVar6 < *(int *)(param_1 + 0x37c0)) {
|
|
|
|
iVar3 = iVar6 * 0x10;
|
|
|
|
iVar7 = *(int *)(param_1 + 0x37cc) + iVar3;
|
|
|
|
iVar8 = *(int *)(iVar7 + 8);
|
|
|
|
if (0 < iVar8) {
|
|
|
|
iVar5 = *(int *)(iVar3 + 4 + *(int *)(param_1 + 0x37cc));
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0 < iVar5) {
|
|
|
|
do {
|
|
|
|
if (local_40 < local_38) {
|
|
|
|
iVar8 = local_40 << 4;
|
|
|
|
iVar7 = local_40;
|
|
|
|
do {
|
|
|
|
if (local_44 < local_3c) {
|
|
|
|
iVar5 = local_44;
|
|
|
|
while( true ) {
|
|
|
|
iVar1 = iVar5 * 2;
|
|
|
|
local_18 = local_18 * iVar5;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
*(undefined1 *)(local_18 + iVar7 * *(int *)(param_1 + 0x3c) + local_1c) =
|
|
|
|
*(undefined1 *)(local_24 + iVar8 + iVar1);
|
|
|
|
if (local_3c <= iVar5) break;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + 0x10;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_38);
|
|
|
|
iVar7 = *(int *)(param_1 + 0x37cc) + iVar3;
|
|
|
|
iVar5 = *(int *)(iVar7 + 4);
|
|
|
|
}
|
|
|
|
local_24 = local_24 + 0x80;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < iVar5);
|
|
|
|
iVar8 = *(int *)(iVar7 + 8);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < iVar8);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar6 == 3) && (iVar2 == 5)) {
|
|
|
|
iVar7 = local_40;
|
|
|
|
if (local_40 < local_38) {
|
|
|
|
do {
|
|
|
|
iVar2 = local_44;
|
|
|
|
if (local_44 < local_3c) {
|
|
|
|
while( true ) {
|
|
|
|
local_18 = local_18 * iVar2;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
*(undefined1 *)(local_18 + iVar7 * *(int *)(param_1 + 0x3c) + local_1c) = 0xff;
|
|
|
|
if (local_3c <= iVar2) break;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_38);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
local_24 = local_24 + 0x80;
|
|
|
|
}
|
|
|
|
while( true ) {
|
|
|
|
if ((iVar2 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_1c = local_1c + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = local_1c + 1;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
if (local_18 <= iVar6) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((iVar6 < 1) || (*(int *)(param_1 + 0x58) != 4)) break;
|
|
|
|
iVar7 = local_40;
|
|
|
|
if (local_40 < local_38) {
|
|
|
|
do {
|
|
|
|
iVar2 = local_44;
|
|
|
|
if (local_44 < local_3c) {
|
|
|
|
while( true ) {
|
|
|
|
local_18 = local_18 * iVar2;
|
|
|
|
if (iVar6 < 3) {
|
|
|
|
iVar8 = iVar7 * *(int *)(param_1 + 0x3c) + local_1c;
|
|
|
|
*(undefined1 *)(local_18 + iVar8) = *(undefined1 *)(local_18 + -1 + iVar8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined1 *)(local_18 + iVar7 * *(int *)(param_1 + 0x3c) + local_1c) = 0xff;
|
|
|
|
}
|
|
|
|
if (local_3c <= iVar2 + 1) break;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
}
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 < local_38);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006327e0 at 0x006327E0 (size: 930) ---
|
|
|
|
|
|
void FUN_006327e0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x34);
|
|
|
|
if (((iVar1 != 1) && (iVar1 != 2)) && (iVar1 != 5)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0062f6a0(param_1 + 4,*(int *)(param_1 + 0x37b8) * param_5,
|
|
|
|
param_5 * *(int *)(param_1 + 0x37bc),param_3,param_4,
|
|
|
|
*(undefined4 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x3c),
|
|
|
|
*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
|
|
|
|
*(undefined4 *)(param_1 + 0x28),param_2 + 0x2c,&local_3c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = *(int *)(param_2 + 0x2c);
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
if (local_18 == 3) {
|
|
|
|
for (; local_38 < local_30; local_38 = local_38 + 1) {
|
|
|
|
iVar4 = local_3c * 3;
|
|
|
|
if (iVar4 < local_34 * 3) {
|
|
|
|
do {
|
|
|
|
iVar7 = local_38 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar8 = (uint)*(byte *)(iVar7 + iVar4);
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + 1 + iVar4);
|
|
|
|
uVar9 = (uint)*(byte *)(iVar7 + 2 + iVar4);
|
|
|
|
iVar2 = ((int)(uVar9 * 0x167 + -0xb2f5) >> 8) + uVar8;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = ((int)(uVar5 * -0x58 + 0x87f6 + uVar9 * -0xb7) >> 8) + uVar8;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar8 + ((int)(uVar5 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar6;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar6;
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 3;
|
|
|
|
} while (iVar4 < local_34 * 3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (local_38 < local_30) {
|
|
|
|
local_1c = local_34 * local_18;
|
|
|
|
do {
|
|
|
|
iVar4 = local_18 * local_3c;
|
|
|
|
if (iVar4 < local_1c) {
|
|
|
|
do {
|
|
|
|
iVar7 = local_38 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + iVar4);
|
|
|
|
uVar8 = (uint)*(byte *)(iVar7 + 1 + iVar4);
|
|
|
|
uVar9 = (uint)*(byte *)(iVar7 + 2 + iVar4);
|
|
|
|
iVar2 = ((int)(uVar9 * 0x167 + -0xb2f5) >> 8) + uVar5;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = ((int)(uVar8 * -0x58 + 0x87f6 + uVar9 * -0xb7) >> 8) + uVar5;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar5 + ((int)(uVar8 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x58) == 6) {
|
|
|
|
*(char *)(iVar7 + iVar4) = -1 - (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = -1 - (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = -1 - (char)iVar6;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
local_1c = local_18 * local_34;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x58) == 3) {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar6;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
local_1c = local_18 * local_34;
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + local_18;
|
|
|
|
} while (iVar4 < local_1c);
|
|
|
|
}
|
|
|
|
local_38 = local_38 + 1;
|
|
|
|
} while (local_38 < local_30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00632ba0 at 0x00632BA0 (size: 469) ---
|
|
|
|
|
|
void FUN_00632ba0(int param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5,
|
|
|
|
undefined4 param_6,undefined1 param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x74) != 0) && (*(int *)(param_1 + 0x4de0) == 0)) {
|
|
|
|
FUN_0062fb50(param_1,param_2,param_3,param_4,param_5,param_6,0,param_7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
if ((iVar1 != 0) && (*(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
FUN_0062faa0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((iVar1 == 0) && (*(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
FUN_00632470(param_1,param_2,param_4,param_5,param_6);
|
|
|
|
FUN_006327e0(param_1,param_2,param_4,param_5,param_6);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((iVar1 == 0) || (*(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
if (*(int *)(param_1 + 0x34) != 3) {
|
|
|
|
FUN_00632470(param_1,param_2,param_4,param_5,param_6);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_0062faa0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_3 + 8) == 0) && (*(int *)(param_1 + 0x4de0) == 0)) {
|
|
|
|
FUN_0062fb50(param_1,param_2,param_3,param_4,param_5,param_6,1,param_7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00631630(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00632d80 at 0x00632D80 (size: 880) ---
|
|
|
|
|
|
void FUN_00632d80(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x20);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
if (((iVar2 != 2) && (iVar2 != 1)) && (iVar2 != 5)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 8);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = (int)*(uint *)(param_1 + 0x28) >> 0x1f;
|
|
|
|
iVar2 = (*(uint *)(param_1 + 0x28) ^ uVar3) - uVar3;
|
|
|
|
}
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar4 = (*(int *)(param_1 + 0xc) - *(int *)(param_1 + 4)) * local_18;
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x24) * local_18;
|
|
|
|
}
|
|
|
|
if (local_18 == 3) {
|
|
|
|
iVar11 = iVar2 + -1;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
do {
|
|
|
|
iVar7 = iVar11 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar3 = (uint)*(byte *)(iVar7 + iVar2);
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + 1 + iVar2);
|
|
|
|
uVar10 = (uint)*(byte *)(iVar7 + 2 + iVar2);
|
|
|
|
iVar8 = ((int)(uVar10 * 0x167 + -0xb2f5) >> 8) + uVar3;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
iVar9 = ((int)(uVar5 * -0x58 + 0x87f6 + uVar10 * -0xb7) >> 8) + uVar3;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar3 + ((int)(uVar5 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
*(char *)(iVar7 + iVar2) = (char)iVar6;
|
|
|
|
*(char *)(iVar2 + 1 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar9;
|
|
|
|
*(char *)(iVar2 + 2 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(char *)(iVar7 + iVar2) = (char)iVar8;
|
|
|
|
*(char *)(iVar2 + 1 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar9;
|
|
|
|
*(char *)(iVar2 + 2 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar6;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + *(int *)(param_1 + 0x30);
|
|
|
|
} while (iVar2 < iVar4);
|
|
|
|
}
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = iVar2 + -1;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
do {
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
do {
|
|
|
|
iVar7 = iVar11 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + iVar2);
|
|
|
|
uVar3 = (uint)*(byte *)(iVar7 + 1 + iVar2);
|
|
|
|
uVar10 = (uint)*(byte *)(iVar7 + 2 + iVar2);
|
|
|
|
iVar8 = ((int)(uVar10 * 0x167 + -0xb2f5) >> 8) + uVar5;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
iVar9 = ((int)(uVar3 * -0x58 + 0x87f6 + uVar10 * -0xb7) >> 8) + uVar5;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar5 + ((int)(uVar3 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x58) == 6) {
|
|
|
|
*(char *)(iVar7 + iVar2) = -1 - (char)iVar8;
|
|
|
|
*(char *)(iVar2 + 1 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = -1 - (char)iVar9;
|
|
|
|
*(char *)(iVar2 + 2 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = -1 - (char)iVar6;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x58) == 3) {
|
|
|
|
*(char *)(iVar7 + iVar2) = (char)iVar8;
|
|
|
|
*(char *)(iVar2 + 1 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar9;
|
|
|
|
*(char *)(iVar2 + 2 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = (char)iVar6;
|
|
|
|
*(undefined1 *)(iVar2 + 3 + *(int *)(param_1 + 0x3c) * iVar11 + iVar1) = 0xff;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + local_18;
|
|
|
|
} while (iVar2 < iVar4);
|
|
|
|
}
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00633140 at 0x00633140 (size: 769) ---
|
|
|
|
|
|
void FUN_00633140(int param_1,int *param_2,int param_3,int param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x30) <= param_3) && (*(int *)(param_1 + 0x34) != 3)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_1 + 0x58);
|
|
|
|
if ((iVar5 == 4) && (*(int *)(param_1 + 0x34) == 5)) {
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
if (iVar5 < iVar7) {
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
iVar2 = iVar5 << 5;
|
|
|
|
do {
|
|
|
|
iVar4 = *param_2;
|
|
|
|
if (iVar4 < iVar3) {
|
|
|
|
iVar7 = param_5 + iVar2;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(*(int *)(param_1 + 0x3c) * iVar5 + param_4 + iVar4 * 4) =
|
|
|
|
*(undefined1 *)(iVar7 + iVar4);
|
|
|
|
*(undefined1 *)(*(int *)(param_1 + 0x3c) * iVar5 + param_4 + 1 + iVar4 * 4) =
|
|
|
|
*(undefined1 *)(iVar7 + iVar4);
|
|
|
|
*(undefined1 *)(*(int *)(param_1 + 0x3c) * iVar5 + param_4 + 2 + iVar4 * 4) =
|
|
|
|
*(undefined1 *)(iVar7 + iVar4);
|
|
|
|
*(undefined1 *)(*(int *)(param_1 + 0x3c) * iVar5 + param_4 + 3 + iVar4 * 4) = 0xff;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
} while (iVar4 < iVar3);
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x20;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((iVar5 == 3) || (iVar5 == 1)) && (*(int *)(param_1 + 0x34) == 5)) {
|
|
|
|
if (param_3 < 3) {
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
if (iVar5 < iVar7) {
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
iVar2 = iVar5 << 5;
|
|
|
|
do {
|
|
|
|
iVar4 = *param_2;
|
|
|
|
if (iVar4 < iVar3) {
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(iVar5 * *(int *)(param_1 + 0x3c) + param_4 + iVar4 * 4) =
|
|
|
|
*(undefined1 *)(param_5 + iVar2 + iVar4);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
} while (iVar4 < iVar3);
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x20;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
if (iVar5 < iVar7) {
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
do {
|
|
|
|
iVar2 = *param_2;
|
|
|
|
if (iVar2 < iVar3) {
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(iVar5 * *(int *)(param_1 + 0x3c) + param_4 + iVar2 * 4) = 0xff;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
} while (iVar2 < iVar3);
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (((iVar5 == 4) && (*(int *)(param_1 + 0x34) == 1)) ||
|
|
|
|
((iVar5 == 4 && (*(int *)(param_1 + 0x34) == 2)))) {
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
if (iVar5 < iVar7) {
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
iVar2 = iVar5 << 5;
|
|
|
|
do {
|
|
|
|
iVar4 = *param_2;
|
|
|
|
if (iVar4 < iVar3) {
|
|
|
|
iVar7 = param_5 + iVar2;
|
|
|
|
iVar6 = iVar4 * 3;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(iVar6 + *(int *)(param_1 + 0x3c) * iVar5 + param_4) =
|
|
|
|
*(undefined1 *)(iVar7 + iVar4);
|
|
|
|
*(undefined1 *)(iVar6 + 1 + *(int *)(param_1 + 0x3c) * iVar5 + param_4) =
|
|
|
|
*(undefined1 *)(iVar7 + iVar4);
|
|
|
|
puVar1 = (undefined1 *)(iVar7 + iVar4);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
*(undefined1 *)(iVar6 + 2 + *(int *)(param_1 + 0x3c) * iVar5 + param_4) = *puVar1;
|
|
|
|
iVar6 = iVar6 + 3;
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
} while (iVar4 < iVar3);
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x20;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
if (iVar5 < iVar7) {
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
iVar2 = iVar5 << 5;
|
|
|
|
do {
|
|
|
|
iVar4 = *param_2;
|
|
|
|
if (iVar4 < iVar3) {
|
|
|
|
do {
|
|
|
|
puVar1 = (undefined1 *)(param_5 + iVar2 + iVar4);
|
|
|
|
iVar7 = *(int *)(param_1 + 0x30) * iVar4;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
*(undefined1 *)(iVar7 + iVar5 * *(int *)(param_1 + 0x3c) + param_4) = *puVar1;
|
|
|
|
iVar3 = param_2[2];
|
|
|
|
} while (iVar4 < iVar3);
|
|
|
|
iVar7 = param_2[3];
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 0x20;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00633470 at 0x00633470 (size: 4583) ---
|
|
|
|
|
|
void FUN_00633470(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
short sVar3;
|
|
|
|
short sVar4;
|
|
|
|
short sVar5;
|
|
|
|
short sVar6;
|
|
|
|
int *piVar7;
|
|
|
|
byte bVar8;
|
|
|
|
undefined1 uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
undefined1 *puVar13;
|
|
|
|
uint uVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
short *psVar19;
|
|
|
|
int iVar20;
|
|
|
|
undefined1 *puVar21;
|
|
|
|
short *psVar22;
|
|
|
|
undefined1 *puVar23;
|
|
|
|
int iVar24;
|
|
|
|
undefined1 local_59c [1280];
|
|
|
|
undefined1 local_9c [16];
|
|
|
|
int local_8c;
|
|
|
|
int local_88;
|
|
|
|
int local_84;
|
|
|
|
int local_80;
|
|
|
|
undefined1 *local_7c;
|
|
|
|
uint local_78;
|
|
|
|
int local_74;
|
|
|
|
uint local_70;
|
|
|
|
undefined1 *local_6c;
|
|
|
|
int local_68;
|
|
|
|
int local_64;
|
|
|
|
short *local_60;
|
|
|
|
undefined1 *local_5c;
|
|
|
|
undefined1 *local_58;
|
|
|
|
int local_54;
|
|
|
|
int local_50;
|
|
|
|
int local_4c;
|
|
|
|
int local_48;
|
|
|
|
short *local_44;
|
|
|
|
int local_40;
|
|
|
|
undefined1 *local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
undefined1 *local_30;
|
|
|
|
char local_2c;
|
|
|
|
short *local_28;
|
|
|
|
int local_24;
|
|
|
|
short *local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
psVar22 = (short *)0x0;
|
|
|
|
local_24 = 0;
|
|
|
|
local_64 = 0;
|
|
|
|
local_28 = (short *)0x0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_1c = 0;
|
|
|
|
local_20 = (short *)0x0;
|
|
|
|
local_2c = '\0';
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37b8);
|
|
|
|
if (iVar10 == 2) {
|
|
|
|
iVar17 = *(int *)(param_1 + 0x37bc);
|
|
|
|
if (iVar17 == 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
local_2c = '\x01';
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37c0) + -1;
|
|
|
|
if (*(int *)(param_1 + 0x37c0) != 0) {
|
|
|
|
iVar20 = iVar11 * 0x10;
|
|
|
|
local_8c = 0;
|
|
|
|
do {
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
iVar12 = iVar12 + *(int *)(iVar20 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar20 + 8 + *(int *)(param_1 + 0x37cc));
|
|
|
|
iVar20 = iVar20 + -0x10;
|
|
|
|
local_88 = iVar10;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
local_30 = *(undefined1 **)(param_1 + 0x4dec);
|
|
|
|
local_24 = param_2 * 2 * iVar12 * 0x40 + *(int *)(local_30 + 4);
|
|
|
|
psVar22 = (short *)(iVar12 * 0x100 + local_24);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = *(int *)(param_1 + 0x37bc);
|
|
|
|
}
|
|
|
|
if ((iVar10 == 2) && (iVar17 == 2)) {
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37c0) + -1;
|
|
|
|
local_2c = '\x02';
|
|
|
|
iVar12 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x37c0) != 0) {
|
|
|
|
local_30 = *(undefined1 **)(param_1 + 0x37cc);
|
|
|
|
iVar20 = iVar11 * 0x10;
|
|
|
|
do {
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
iVar12 = iVar12 + *(int *)(local_30 + iVar20 + 4) * *(int *)(local_30 + iVar20 + 8);
|
|
|
|
iVar20 = iVar20 + -0x10;
|
|
|
|
} while (iVar11 != -1);
|
|
|
|
}
|
|
|
|
local_1c = iVar12 * 0x40;
|
|
|
|
piVar7 = *(int **)(param_1 + 0x4dec);
|
|
|
|
local_18 = *piVar7;
|
|
|
|
iVar11 = param_2 * local_1c + local_1c;
|
|
|
|
iVar12 = param_2 * local_1c + iVar12 * 0x80;
|
|
|
|
local_64 = local_18 + iVar11 * 2;
|
|
|
|
local_1c = param_2 * 2 * local_1c;
|
|
|
|
local_14 = local_18 + local_1c;
|
|
|
|
local_18 = local_18 + iVar12 * 2;
|
|
|
|
iVar20 = piVar7[2];
|
|
|
|
local_24 = local_1c + piVar7[1];
|
|
|
|
psVar22 = (short *)(piVar7[1] + iVar12 * 2);
|
|
|
|
local_28 = (short *)(iVar20 + iVar11 * 2);
|
|
|
|
local_1c = local_1c + iVar20;
|
|
|
|
local_20 = (short *)(iVar20 + iVar12 * 2);
|
|
|
|
local_34 = 2;
|
|
|
|
local_8c = 0;
|
|
|
|
local_88 = iVar10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37b8);
|
|
|
|
iVar17 = *(int *)(param_1 + 0x37bc);
|
|
|
|
}
|
|
|
|
puVar13 = (undefined1 *)0x0;
|
|
|
|
local_60 = *(short **)(param_1 + 0x4834);
|
|
|
|
iVar10 = FUN_0062f6a0(param_1 + 4,iVar10 * 8,iVar17 * 8,param_2,param_3,
|
|
|
|
*(undefined4 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x3c),
|
|
|
|
*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x24),
|
|
|
|
*(undefined4 *)(param_1 + 0x28),param_1 + 0x3814,local_9c);
|
|
|
|
if (iVar10 == 0) {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar10 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_48 = *(int *)(param_1 + 0x3814);
|
|
|
|
if (*(int *)(param_1 + 0x3820) == 0) {
|
|
|
|
local_48 = local_48 + 2;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x3820) == 1) {
|
|
|
|
local_48 = local_48 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_48 = *(int *)(param_1 + 0x3814) + *(int *)(param_1 + 0x3820);
|
|
|
|
}
|
|
|
|
iVar17 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37c0);
|
|
|
|
local_68 = 0;
|
|
|
|
local_44 = psVar22;
|
|
|
|
while( true ) {
|
|
|
|
iVar12 = iVar17;
|
|
|
|
if (iVar11 < iVar17) {
|
|
|
|
iVar12 = iVar11;
|
|
|
|
}
|
|
|
|
if (iVar12 <= local_68) break;
|
|
|
|
if ((*(int *)(param_1 + 0x58) != 4) || (local_68 < 1)) {
|
|
|
|
local_34 = local_68 * 0x10;
|
|
|
|
puVar13 = (undefined1 *)(local_34 + *(int *)(param_1 + 0x37cc));
|
|
|
|
iVar10 = *(int *)(puVar13 + 4);
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37b8) / iVar10;
|
|
|
|
iVar17 = *(int *)(puVar13 + 8);
|
|
|
|
iVar12 = *(int *)(param_1 + 0x37bc) / iVar17;
|
|
|
|
local_6c = puVar13;
|
|
|
|
if (local_2c == '\x01') {
|
|
|
|
puVar13 = local_59c;
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
do {
|
|
|
|
local_3c = puVar13 + 0x100;
|
|
|
|
psVar22 = local_44;
|
|
|
|
psVar19 = local_60;
|
|
|
|
local_88 = iVar11;
|
|
|
|
local_38 = iVar17;
|
|
|
|
local_30 = puVar13;
|
|
|
|
do {
|
|
|
|
if (local_88 == 2) {
|
|
|
|
sVar1 = *psVar19;
|
|
|
|
*puVar13 = (char)(*(short *)(local_24 + 0xe) + 1 + sVar1 * 3 >> 2);
|
|
|
|
puVar13[1] = (char)(psVar19[1] + 2 + sVar1 * 3 >> 2);
|
|
|
|
sVar1 = psVar19[1];
|
|
|
|
puVar13[2] = (char)(sVar1 * 3 + 1 + (int)*psVar19 >> 2);
|
|
|
|
puVar13[3] = (char)(sVar1 * 3 + 2 + (int)psVar19[2] >> 2);
|
|
|
|
sVar1 = psVar19[2];
|
|
|
|
puVar13[4] = (char)(sVar1 * 3 + 1 + (int)psVar19[1] >> 2);
|
|
|
|
puVar13[5] = (char)(sVar1 * 3 + 2 + (int)psVar19[3] >> 2);
|
|
|
|
sVar1 = psVar19[3];
|
|
|
|
puVar13[6] = (char)(sVar1 * 3 + 1 + (int)psVar19[2] >> 2);
|
|
|
|
puVar13[7] = (char)(sVar1 * 3 + 2 + (int)psVar19[4] >> 2);
|
|
|
|
sVar1 = psVar19[4];
|
|
|
|
puVar13[8] = (char)(sVar1 * 3 + 1 + (int)psVar19[3] >> 2);
|
|
|
|
puVar13[9] = (char)(sVar1 * 3 + 2 + (int)psVar19[5] >> 2);
|
|
|
|
sVar1 = psVar19[5];
|
|
|
|
puVar13[10] = (char)(sVar1 * 3 + 1 + (int)psVar19[4] >> 2);
|
|
|
|
puVar13[0xb] = (char)(sVar1 * 3 + 2 + (int)psVar19[6] >> 2);
|
|
|
|
sVar1 = psVar19[6];
|
|
|
|
puVar13[0xc] = (char)(sVar1 * 3 + 1 + (int)psVar19[5] >> 2);
|
|
|
|
puVar13[0xd] = (char)(sVar1 * 3 + 2 + (int)psVar19[7] >> 2);
|
|
|
|
sVar1 = psVar19[7];
|
|
|
|
puVar13[0xe] = (char)(psVar19[6] + 1 + sVar1 * 3 >> 2);
|
|
|
|
puVar13[0xf] = (char)(*psVar22 + 2 + sVar1 * 3 >> 2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar13 = (char)*psVar19;
|
|
|
|
puVar13[1] = (char)psVar19[1];
|
|
|
|
puVar13[2] = (char)psVar19[2];
|
|
|
|
puVar13[3] = (char)psVar19[3];
|
|
|
|
puVar13[4] = (char)psVar19[4];
|
|
|
|
puVar13[5] = (char)psVar19[5];
|
|
|
|
puVar13[6] = (char)psVar19[6];
|
|
|
|
puVar13[7] = (char)psVar19[7];
|
|
|
|
}
|
|
|
|
psVar19 = psVar19 + 8;
|
|
|
|
psVar22 = psVar22 + 8;
|
|
|
|
puVar13 = puVar13 + 0x20;
|
|
|
|
local_24 = local_24 + 0x10;
|
|
|
|
} while ((int)puVar13 < (int)local_3c);
|
|
|
|
puVar13 = local_30 + local_88 * 8;
|
|
|
|
iVar17 = local_38 + 1;
|
|
|
|
iVar11 = local_88;
|
|
|
|
local_60 = psVar19;
|
|
|
|
local_44 = psVar22;
|
|
|
|
} while (iVar17 < *(int *)(local_34 + 4 + *(int *)(param_1 + 0x37cc)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (local_2c == '\x02') {
|
|
|
|
local_50 = 0;
|
|
|
|
if (0 < iVar17) {
|
|
|
|
local_8c = iVar12 * 0x100;
|
|
|
|
local_84 = iVar11 * 8;
|
|
|
|
local_80 = iVar12 * 0x20;
|
|
|
|
local_30 = (undefined1 *)(iVar11 + -6);
|
|
|
|
iVar20 = 0;
|
|
|
|
do {
|
|
|
|
puVar21 = local_59c + local_8c * iVar20;
|
|
|
|
puVar23 = (undefined1 *)0x0;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
do {
|
|
|
|
local_6c = puVar13;
|
|
|
|
if ((iVar11 == 2) && (iVar12 == 2)) {
|
|
|
|
local_40 = 7;
|
|
|
|
puVar13 = (undefined1 *)0x0;
|
|
|
|
psVar22 = local_28;
|
|
|
|
do {
|
|
|
|
local_28 = psVar22;
|
|
|
|
local_3c = puVar13;
|
|
|
|
sVar1 = *local_60;
|
|
|
|
sVar2 = local_60[1];
|
|
|
|
if (local_3c == (undefined1 *)0x0) {
|
|
|
|
sVar3 = *(short *)(local_64 + 0x70);
|
|
|
|
sVar4 = *(short *)(local_14 + 0x7e);
|
|
|
|
sVar5 = *(short *)(local_64 + 0x72);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar3 = local_60[-8];
|
|
|
|
sVar4 = *(short *)(local_24 + -2);
|
|
|
|
sVar5 = local_60[-7];
|
|
|
|
}
|
|
|
|
local_70 = (uint)sVar4;
|
|
|
|
local_78 = (uint)sVar5;
|
|
|
|
if (local_40 == 0) {
|
|
|
|
sVar4 = *local_28;
|
|
|
|
sVar5 = *(short *)(local_1c + 0xe);
|
|
|
|
sVar6 = local_28[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar4 = local_60[8];
|
|
|
|
sVar5 = *(short *)(local_24 + 0x1e);
|
|
|
|
sVar6 = local_60[9];
|
|
|
|
}
|
|
|
|
local_54 = sVar4 * 3;
|
|
|
|
local_6c = (undefined1 *)(int)sVar5;
|
|
|
|
local_74 = (int)sVar6;
|
|
|
|
iVar17 = *(short *)(local_24 + 0xe) * 3 + sVar1 * 9;
|
|
|
|
local_3c[(int)puVar21] = (char)((int)(iVar17 + sVar3 * 3 + 8 + local_70) >> 4)
|
|
|
|
;
|
|
|
|
iVar10 = sVar1 * 9 + sVar2 * 3;
|
|
|
|
(local_3c + 1)[(int)puVar21] =
|
|
|
|
(char)((int)(sVar3 * 3 + iVar10 + 7 + local_78) >> 4);
|
|
|
|
(local_3c + 0x20)[(int)puVar21] =
|
|
|
|
(char)(iVar17 + local_54 + 8 + (int)local_6c >> 4);
|
|
|
|
puVar13 = puVar21 + 2 + (int)local_3c;
|
|
|
|
(local_3c + 0x21)[(int)puVar21] =
|
|
|
|
(char)(local_54 + iVar10 + 7 + local_74 >> 4);
|
|
|
|
psVar22 = local_60 + 1;
|
|
|
|
psVar19 = local_28 + 1;
|
|
|
|
do {
|
|
|
|
iVar10 = local_64;
|
|
|
|
local_28 = psVar19;
|
|
|
|
local_60 = psVar22;
|
|
|
|
local_64 = iVar10 + 2;
|
|
|
|
sVar1 = *local_60;
|
|
|
|
sVar2 = local_60[1];
|
|
|
|
if (local_3c == (undefined1 *)0x0) {
|
|
|
|
sVar3 = *(short *)(iVar10 + 0x72);
|
|
|
|
sVar4 = *(short *)(iVar10 + 0x70);
|
|
|
|
sVar5 = *(short *)(iVar10 + 0x74);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar3 = local_60[-8];
|
|
|
|
sVar4 = local_60[-9];
|
|
|
|
sVar5 = local_60[-7];
|
|
|
|
}
|
|
|
|
local_74 = (int)sVar5;
|
|
|
|
local_78 = (uint)sVar4;
|
|
|
|
if (local_40 == 0) {
|
|
|
|
sVar4 = *local_28;
|
|
|
|
sVar5 = local_28[-1];
|
|
|
|
sVar6 = local_28[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar4 = local_60[8];
|
|
|
|
sVar5 = local_60[7];
|
|
|
|
sVar6 = local_60[9];
|
|
|
|
}
|
|
|
|
local_38 = sVar4 * 3;
|
|
|
|
local_70 = (uint)sVar6;
|
|
|
|
local_7c = (undefined1 *)(int)sVar5;
|
|
|
|
iVar16 = local_60[-1] * 3 + sVar1 * 9;
|
|
|
|
*puVar13 = (char)((int)(iVar16 + sVar3 * 3 + 8 + local_78) >> 4);
|
|
|
|
iVar17 = sVar1 * 9 + sVar2 * 3;
|
|
|
|
puVar13[1] = (char)(sVar3 * 3 + iVar17 + 7 + local_74 >> 4);
|
|
|
|
puVar13[0x20] = (char)(iVar16 + local_38 + 8 + (int)local_7c >> 4);
|
|
|
|
puVar13[0x21] = (char)((int)(local_38 + iVar17 + 7 + local_70) >> 4);
|
|
|
|
puVar13 = puVar13 + 2;
|
|
|
|
psVar22 = local_60 + 1;
|
|
|
|
psVar19 = local_28 + 1;
|
|
|
|
} while ((int)puVar13 < (int)(puVar21 + 0xe + (int)local_3c));
|
|
|
|
iVar17 = local_60[1] * 9;
|
|
|
|
local_7c = (undefined1 *)(*local_44 * 3);
|
|
|
|
if (local_3c == (undefined1 *)0x0) {
|
|
|
|
sVar1 = *(short *)(iVar10 + 0x74);
|
|
|
|
sVar2 = *(short *)(iVar10 + 0x72);
|
|
|
|
sVar3 = *(short *)(local_18 + 0x70);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar1 = local_60[-7];
|
|
|
|
sVar2 = local_60[-8];
|
|
|
|
sVar3 = local_44[-8];
|
|
|
|
}
|
|
|
|
local_6c = (undefined1 *)(int)sVar2;
|
|
|
|
local_78 = (uint)sVar3;
|
|
|
|
local_44 = local_44 + 8;
|
|
|
|
if (local_40 == 0) {
|
|
|
|
sVar2 = local_28[1];
|
|
|
|
sVar3 = *local_28;
|
|
|
|
sVar4 = *local_20;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar2 = local_60[9];
|
|
|
|
sVar3 = local_60[8];
|
|
|
|
sVar4 = *local_44;
|
|
|
|
}
|
|
|
|
local_54 = sVar2 * 3;
|
|
|
|
local_70 = (uint)sVar3;
|
|
|
|
local_74 = (int)sVar4;
|
|
|
|
iVar16 = *local_60 * 3 + iVar17;
|
|
|
|
(local_3c + 0xe)[(int)puVar21] =
|
|
|
|
(char)(iVar16 + sVar1 * 3 + 8 + (int)local_6c >> 4);
|
|
|
|
local_60 = local_60 + 2;
|
|
|
|
(local_3c + 0xf)[(int)puVar21] =
|
|
|
|
(char)((int)(local_7c + local_78 + sVar1 * 3 + iVar17 + 7) >> 4);
|
|
|
|
(local_3c + 0x2e)[(int)puVar21] =
|
|
|
|
(char)((int)(iVar16 + local_54 + 8 + local_70) >> 4);
|
|
|
|
local_40 = local_40 + -1;
|
|
|
|
(local_3c + 0x2f)[(int)puVar21] =
|
|
|
|
(char)((int)(local_7c + local_74 + local_54 + iVar17 + 7) >> 4);
|
|
|
|
local_24 = local_24 + 0x10;
|
|
|
|
local_64 = iVar10 + -10;
|
|
|
|
puVar13 = local_3c + 0x40;
|
|
|
|
psVar22 = local_28 + -6;
|
|
|
|
} while (local_40 != -1);
|
|
|
|
puVar13 = puVar21 + 0x10;
|
|
|
|
local_64 = iVar10 + 0x76;
|
|
|
|
local_28 = local_28 + 0x3a;
|
|
|
|
local_14 = local_14 + 0x80;
|
|
|
|
local_18 = local_18 + 0x80;
|
|
|
|
local_1c = local_1c + 0x80;
|
|
|
|
local_20 = local_20 + 0x40;
|
|
|
|
local_6c = (undefined1 *)(*(int *)(param_1 + 0x37cc) + local_34);
|
|
|
|
iVar10 = *(int *)(local_6c + 4);
|
|
|
|
local_40 = -1;
|
|
|
|
local_5c = puVar21;
|
|
|
|
local_58 = puVar23;
|
|
|
|
local_50 = iVar20;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar20 = 0;
|
|
|
|
iVar17 = *(int *)(local_6c + 8);
|
|
|
|
puVar13 = puVar21;
|
|
|
|
if (0 < iVar17) {
|
|
|
|
iVar16 = 0;
|
|
|
|
do {
|
|
|
|
puVar13 = local_59c + iVar16;
|
|
|
|
puVar23 = (undefined1 *)0x0;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
do {
|
|
|
|
local_74 = 0;
|
|
|
|
if (0 < local_8c) {
|
|
|
|
iVar10 = 0;
|
|
|
|
do {
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < local_84) {
|
|
|
|
do {
|
|
|
|
sVar1 = *local_60;
|
|
|
|
iVar24 = 0;
|
|
|
|
local_60 = local_60 + 1;
|
|
|
|
if (0 < local_80) {
|
|
|
|
do {
|
|
|
|
iVar18 = 0;
|
|
|
|
if (0 < iVar11) {
|
|
|
|
uVar9 = (undefined1)sVar1;
|
|
|
|
if (iVar11 < 6) {
|
|
|
|
local_7c = puVar13 + iVar24 + iVar17 + iVar10;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_7c = puVar13 + iVar24 + iVar17 + iVar10;
|
|
|
|
do {
|
|
|
|
local_7c[iVar18] = uVar9;
|
|
|
|
local_7c[iVar18 + 1] = uVar9;
|
|
|
|
local_7c[iVar18 + 2] = uVar9;
|
|
|
|
local_7c[iVar18 + 3] = uVar9;
|
|
|
|
local_7c[iVar18 + 4] = uVar9;
|
|
|
|
iVar18 = iVar18 + 5;
|
|
|
|
} while (iVar18 <= (int)local_30);
|
|
|
|
}
|
|
|
|
local_78 = (int)sVar1 & 0xff;
|
|
|
|
do {
|
|
|
|
local_7c[iVar18] = uVar9;
|
|
|
|
iVar18 = iVar18 + 1;
|
|
|
|
} while (iVar18 < iVar11);
|
|
|
|
}
|
|
|
|
iVar24 = iVar24 + 0x20;
|
|
|
|
local_70 = (int)sVar1;
|
|
|
|
} while (iVar24 < local_80);
|
|
|
|
}
|
|
|
|
iVar17 = iVar17 + iVar11;
|
|
|
|
local_74 = iVar10;
|
|
|
|
} while (iVar17 < local_84);
|
|
|
|
}
|
|
|
|
iVar10 = iVar10 + local_80;
|
|
|
|
} while (iVar10 < local_8c);
|
|
|
|
local_6c = (undefined1 *)(*(int *)(param_1 + 0x37cc) + local_34);
|
|
|
|
iVar10 = *(int *)(local_6c + 4);
|
|
|
|
local_5c = puVar13;
|
|
|
|
local_58 = puVar23;
|
|
|
|
}
|
|
|
|
puVar13 = puVar13 + iVar11 * 8;
|
|
|
|
local_64 = local_64 + 0x80;
|
|
|
|
local_24 = local_24 + 0x80;
|
|
|
|
local_44 = local_44 + 0x40;
|
|
|
|
puVar23 = puVar23 + 1;
|
|
|
|
local_28 = local_28 + 0x40;
|
|
|
|
local_14 = local_14 + 0x80;
|
|
|
|
local_18 = local_18 + 0x80;
|
|
|
|
local_1c = local_1c + 0x80;
|
|
|
|
local_20 = local_20 + 0x40;
|
|
|
|
} while ((int)puVar23 < iVar10);
|
|
|
|
iVar17 = *(int *)(local_6c + 8);
|
|
|
|
local_54 = iVar16;
|
|
|
|
local_50 = iVar20;
|
|
|
|
}
|
|
|
|
iVar16 = iVar16 + local_8c;
|
|
|
|
iVar20 = iVar20 + 1;
|
|
|
|
} while (iVar20 < iVar17);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar23 = puVar23 + 1;
|
|
|
|
puVar21 = puVar13;
|
|
|
|
puVar13 = local_6c;
|
|
|
|
} while ((int)puVar23 < iVar10);
|
|
|
|
iVar17 = *(int *)(local_6c + 8);
|
|
|
|
}
|
|
|
|
iVar20 = iVar20 + 1;
|
|
|
|
local_88 = iVar11;
|
|
|
|
local_4c = iVar12;
|
|
|
|
} while (iVar20 < iVar17);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar14 = 0;
|
|
|
|
if (0 < iVar17) {
|
|
|
|
local_38 = iVar12 * 0x100;
|
|
|
|
local_4c = iVar12 * 0x20;
|
|
|
|
local_3c = (undefined1 *)(iVar11 * 8);
|
|
|
|
local_50 = iVar11 + -6;
|
|
|
|
iVar12 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
do {
|
|
|
|
puVar21 = local_59c + iVar12;
|
|
|
|
local_54 = 0;
|
|
|
|
local_30 = puVar21;
|
|
|
|
if (0 < iVar10) {
|
|
|
|
iVar17 = 0;
|
|
|
|
do {
|
|
|
|
iVar20 = 0;
|
|
|
|
if (0 < local_38) {
|
|
|
|
do {
|
|
|
|
uVar15 = 0;
|
|
|
|
if (0 < (int)local_3c) {
|
|
|
|
local_6c = puVar21 + iVar20;
|
|
|
|
do {
|
|
|
|
sVar1 = *local_60;
|
|
|
|
iVar10 = 0;
|
|
|
|
local_60 = local_60 + 1;
|
|
|
|
if (0 < local_4c) {
|
|
|
|
local_58 = local_6c + uVar15;
|
|
|
|
bVar8 = (byte)sVar1;
|
|
|
|
local_5c = (undefined1 *)(uint)bVar8;
|
|
|
|
do {
|
|
|
|
iVar16 = 0;
|
|
|
|
if (0 < iVar11) {
|
|
|
|
if (5 < iVar11) {
|
|
|
|
do {
|
|
|
|
local_58[iVar16 + iVar10] = bVar8;
|
|
|
|
local_58[iVar16 + iVar10 + 1] = bVar8;
|
|
|
|
local_58[iVar16 + iVar10 + 2] = bVar8;
|
|
|
|
local_58[iVar16 + iVar10 + 3] = bVar8;
|
|
|
|
local_58[iVar16 + iVar10 + 4] = bVar8;
|
|
|
|
iVar16 = iVar16 + 5;
|
|
|
|
} while (iVar16 <= local_50);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
local_58[iVar16 + iVar10] = bVar8;
|
|
|
|
iVar16 = iVar16 + 1;
|
|
|
|
} while (iVar16 < iVar11);
|
|
|
|
}
|
|
|
|
iVar10 = iVar10 + 0x20;
|
|
|
|
local_78 = uVar15;
|
|
|
|
} while (iVar10 < local_4c);
|
|
|
|
}
|
|
|
|
uVar15 = uVar15 + iVar11;
|
|
|
|
local_74 = iVar20;
|
|
|
|
local_30 = puVar21;
|
|
|
|
} while ((int)uVar15 < (int)local_3c);
|
|
|
|
}
|
|
|
|
iVar20 = iVar20 + local_4c;
|
|
|
|
} while (iVar20 < local_38);
|
|
|
|
puVar13 = (undefined1 *)(*(int *)(param_1 + 0x37cc) + local_34);
|
|
|
|
iVar10 = *(int *)(puVar13 + 4);
|
|
|
|
local_54 = iVar17;
|
|
|
|
}
|
|
|
|
puVar21 = puVar21 + iVar11 * 8;
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
} while (iVar17 < iVar10);
|
|
|
|
iVar17 = *(int *)(puVar13 + 8);
|
|
|
|
local_70 = uVar14;
|
|
|
|
local_40 = iVar12;
|
|
|
|
}
|
|
|
|
iVar12 = iVar12 + local_38;
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
local_88 = iVar11;
|
|
|
|
} while ((int)uVar14 < iVar17);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar13 = local_59c;
|
|
|
|
FUN_00633140(param_1,local_9c,local_68,local_48,puVar13);
|
|
|
|
iVar10 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar10 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_48 = local_48 + -1;
|
|
|
|
iVar17 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_48 = local_48 + 1;
|
|
|
|
iVar17 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar11 = *(int *)(param_1 + 0x37c0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_68 = local_68 + 1;
|
|
|
|
}
|
|
|
|
iVar11 = local_68;
|
|
|
|
if ((*(int *)(param_1 + 0x74) != 0) &&
|
|
|
|
(iVar11 = *(int *)(param_1 + 0x54),
|
|
|
|
*(int *)(param_1 + 0x54) + -1 != *(int *)(param_1 + 0x3820))) {
|
|
|
|
iVar11 = iVar17;
|
|
|
|
}
|
|
|
|
if (((iVar10 != 0xff) || (*(int *)(param_1 + 0x58) != 0xff)) &&
|
|
|
|
(iVar10 = local_48, iVar11 < iVar17)) {
|
|
|
|
do {
|
|
|
|
FUN_00633140(param_1,local_9c,iVar11,iVar10,puVar13);
|
|
|
|
if ((*(int *)(param_1 + 0x34) == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
iVar10 = iVar10 + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = iVar10 + 1;
|
|
|
|
}
|
|
|
|
iVar11 = iVar11 + 1;
|
|
|
|
} while (iVar11 < *(int *)(param_1 + 0x30));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006346f0 at 0x006346F0 (size: 930) ---
|
|
|
|
|
|
void FUN_006346f0(int param_1,int param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x34);
|
|
|
|
if (((iVar1 != 2) && (iVar1 != 1)) && (iVar1 != 5)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0062f6a0(param_1 + 4,*(int *)(param_1 + 0x37b8) * 8,*(int *)(param_1 + 0x37bc) * 8,
|
|
|
|
param_3,param_4,*(undefined4 *)(param_1 + 0x30),
|
|
|
|
*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x20),
|
|
|
|
*(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x28),
|
|
|
|
param_2 + 0x2c,&local_3c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = *(int *)(param_2 + 0x2c);
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
if (local_18 == 3) {
|
|
|
|
for (; local_38 < local_30; local_38 = local_38 + 1) {
|
|
|
|
iVar4 = local_3c * 3;
|
|
|
|
if (iVar4 < local_34 * 3) {
|
|
|
|
do {
|
|
|
|
iVar7 = local_38 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar8 = (uint)*(byte *)(iVar7 + iVar4);
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + 1 + iVar4);
|
|
|
|
uVar9 = (uint)*(byte *)(iVar7 + 2 + iVar4);
|
|
|
|
iVar2 = ((int)(uVar9 * 0x167 + -0xb2f5) >> 8) + uVar8;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = ((int)(uVar5 * -0x58 + 0x87f6 + uVar9 * -0xb7) >> 8) + uVar8;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar8 + ((int)(uVar5 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x34) == 2) {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar6;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar6;
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 3;
|
|
|
|
} while (iVar4 < local_34 * 3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (local_38 < local_30) {
|
|
|
|
local_1c = local_34 * local_18;
|
|
|
|
do {
|
|
|
|
iVar4 = local_18 * local_3c;
|
|
|
|
if (iVar4 < local_1c) {
|
|
|
|
do {
|
|
|
|
iVar7 = local_38 * *(int *)(param_1 + 0x3c) + iVar1;
|
|
|
|
uVar5 = (uint)*(byte *)(iVar7 + iVar4);
|
|
|
|
uVar8 = (uint)*(byte *)(iVar7 + 1 + iVar4);
|
|
|
|
uVar9 = (uint)*(byte *)(iVar7 + 2 + iVar4);
|
|
|
|
iVar2 = ((int)(uVar9 * 0x167 + -0xb2f5) >> 8) + uVar5;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = ((int)(uVar8 * -0x58 + 0x87f6 + uVar9 * -0xb7) >> 8) + uVar5;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = uVar5 + ((int)(uVar8 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x58) == 6) {
|
|
|
|
*(char *)(iVar7 + iVar4) = -1 - (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = -1 - (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = -1 - (char)iVar6;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
local_1c = local_18 * local_34;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x58) == 3) {
|
|
|
|
*(char *)(iVar7 + iVar4) = (char)iVar2;
|
|
|
|
*(char *)(iVar4 + 1 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar3;
|
|
|
|
*(char *)(iVar4 + 2 + *(int *)(param_1 + 0x3c) * local_38 + iVar1) = (char)iVar6;
|
|
|
|
local_18 = *(int *)(param_1 + 0x30);
|
|
|
|
local_1c = local_18 * local_34;
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + local_18;
|
|
|
|
} while (iVar4 < local_1c);
|
|
|
|
}
|
|
|
|
local_38 = local_38 + 1;
|
|
|
|
} while (local_38 < local_30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00634ab0 at 0x00634AB0 (size: 704) ---
|
|
|
|
|
|
void FUN_00634ab0(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_8c [48];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_2c = param_5[1];
|
|
|
|
local_1c = local_2c * param_6 + param_4;
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_8c[iVar4 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x10] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x20] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_8c[iVar4 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x11] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_8c[iVar4 * 4 + 0x21] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_8c[iVar4 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x12] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x22] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_8c[iVar4 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_8c[iVar4 * 4 + 0x13] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_8c[iVar4 * 4 + 0x23] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < 4);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)local_2c < (int)uVar6) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = (int)(local_2c + (0x7fffffff < local_2c)) >> 1;
|
|
|
|
local_20 = param_1 + local_28;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_28 + uVar8 * 2);
|
|
|
|
local_14 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_24 * 4;
|
|
|
|
iVar5 = local_8c[local_14] + iVar4;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = uVar8 * 3;
|
|
|
|
sVar1 = local_8c[local_14 + 0x10];
|
|
|
|
*(char *)(iVar3 + local_1c) = (char)iVar5;
|
|
|
|
iVar5 = iVar4 - sVar1;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar3 + 1 + local_1c) = (char)iVar5;
|
|
|
|
iVar4 = iVar4 + local_8c[local_14 + 0x20];
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(char *)(iVar3 + 2 + local_1c) = (char)iVar4;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
local_1c = local_1c + param_6;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00634d90 at 0x00634D90 (size: 1977) ---
|
|
|
|
|
|
void FUN_00634d90(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_48;
|
|
|
|
short *local_34;
|
|
|
|
short *local_30;
|
|
|
|
|
|
|
|
local_48 = 0;
|
|
|
|
local_34 = param_3;
|
|
|
|
local_30 = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_34 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_30 * 0x58 + -0x87f6 + *local_34 * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_30 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_34[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_30[1] * 0x58 + -0x87f6 + local_34[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_30[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_34[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar9 = local_30[2] * 0x58 + -0x87f6 + local_34[2] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_30[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar14 = local_34[3] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
psVar1 = local_30 + 3;
|
|
|
|
iVar11 = *psVar1 * 0x58 + -0x87f6 + local_34[3] * 0xb7 >> 8;
|
|
|
|
local_30 = local_30 + 8;
|
|
|
|
iVar12 = *psVar1 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar13 = (int)*param_1;
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
local_34 = local_34 + 8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[1];
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[2];
|
|
|
|
iVar15 = iVar13 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar7;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[3];
|
|
|
|
iVar15 = iVar13 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar7;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[4];
|
|
|
|
iVar15 = iVar13 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[5];
|
|
|
|
iVar15 = iVar13 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[6];
|
|
|
|
iVar15 = iVar13 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar12;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[7];
|
|
|
|
iVar15 = iVar13 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar12;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x17] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[8];
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar15 = (int)param_1[9];
|
|
|
|
iVar2 = iVar2 + iVar15;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar2;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar4;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[10];
|
|
|
|
iVar15 = iVar2 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar7;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xb];
|
|
|
|
iVar5 = iVar5 + iVar15;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar5;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[0xc];
|
|
|
|
iVar15 = iVar2 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xd];
|
|
|
|
iVar8 = iVar8 + iVar15;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar8;
|
|
|
|
iVar9 = iVar15 - iVar9;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar9;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[0xe];
|
|
|
|
iVar15 = iVar2 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar12;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xf];
|
|
|
|
iVar14 = iVar14 + iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar14;
|
|
|
|
iVar11 = iVar15 - iVar11;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar11;
|
|
|
|
iVar15 = iVar15 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_4[0x17] = (char)iVar15;
|
|
|
|
local_48 = local_48 + 2;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_48 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00635b50 at 0x00635B50 (size: 704) ---
|
|
|
|
|
|
void FUN_00635b50(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_8c [48];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_2c = param_5[1];
|
|
|
|
local_1c = local_2c * param_6 + param_4;
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_8c[iVar4 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x10] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x20] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_8c[iVar4 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x11] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_8c[iVar4 * 4 + 0x21] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_8c[iVar4 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x12] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar4 * 4 + 0x22] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_8c[iVar4 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_8c[iVar4 * 4 + 0x13] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_8c[iVar4 * 4 + 0x23] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < 4);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)local_2c < (int)uVar6) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = (int)(local_2c + (0x7fffffff < local_2c)) >> 1;
|
|
|
|
local_20 = param_1 + local_28;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_28 + uVar8 * 2);
|
|
|
|
local_14 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_24 * 4;
|
|
|
|
iVar5 = local_8c[local_14 + 0x20] + iVar4;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = uVar8 * 3;
|
|
|
|
sVar1 = local_8c[local_14 + 0x10];
|
|
|
|
*(char *)(iVar3 + local_1c) = (char)iVar5;
|
|
|
|
iVar5 = iVar4 - sVar1;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar3 + 1 + local_1c) = (char)iVar5;
|
|
|
|
iVar4 = iVar4 + local_8c[local_14];
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(char *)(iVar3 + 2 + local_1c) = (char)iVar4;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
local_1c = local_1c + param_6;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00635e30 at 0x00635E30 (size: 1977) ---
|
|
|
|
|
|
void FUN_00635e30(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_48;
|
|
|
|
short *local_34;
|
|
|
|
short *local_30;
|
|
|
|
|
|
|
|
local_48 = 0;
|
|
|
|
local_30 = param_3;
|
|
|
|
local_34 = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_30 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_34 * 0x58 + -0x87f6 + *local_30 * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_34 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_30[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_34[1] * 0x58 + -0x87f6 + local_30[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_34[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_30[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar14 = local_34[2] * 0x58 + -0x87f6 + local_30[2] * 0xb7 >> 8;
|
|
|
|
iVar9 = local_34[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
psVar1 = local_30 + 3;
|
|
|
|
local_30 = local_30 + 8;
|
|
|
|
iVar10 = *psVar1 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar11 = local_34[3] * 0x58 + -0x87f6 + *psVar1 * 0xb7 >> 8;
|
|
|
|
iVar12 = local_34[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar13 = (int)*param_1;
|
|
|
|
iVar15 = iVar4 + iVar13;
|
|
|
|
local_34 = local_34 + 8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar2;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[1];
|
|
|
|
iVar15 = iVar4 + iVar13;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar2;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[2];
|
|
|
|
iVar15 = iVar13 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar5;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[3];
|
|
|
|
iVar15 = iVar13 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar5;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[4];
|
|
|
|
iVar15 = iVar13 + iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar8;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[5];
|
|
|
|
iVar15 = iVar13 + iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar8;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[6];
|
|
|
|
iVar15 = iVar13 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[7];
|
|
|
|
iVar15 = iVar13 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x17] = (char)iVar13;
|
|
|
|
iVar13 = (int)param_1[8];
|
|
|
|
iVar15 = iVar4 + iVar13;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar2;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar15 = (int)param_1[9];
|
|
|
|
iVar4 = iVar4 + iVar15;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar4;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar2;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[10];
|
|
|
|
iVar15 = iVar2 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar5;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xb];
|
|
|
|
iVar7 = iVar7 + iVar15;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar7;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[0xc];
|
|
|
|
iVar15 = iVar2 + iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar8;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xd];
|
|
|
|
iVar9 = iVar9 + iVar15;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar9;
|
|
|
|
iVar14 = iVar15 - iVar14;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar14;
|
|
|
|
iVar15 = iVar15 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[0xe];
|
|
|
|
iVar15 = iVar2 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[0xf];
|
|
|
|
iVar12 = iVar12 + iVar15;
|
|
|
|
if (iVar12 < 0x100) {
|
|
|
|
if (iVar12 < 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar12;
|
|
|
|
iVar11 = iVar15 - iVar11;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar11;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_4[0x17] = (char)iVar15;
|
|
|
|
local_48 = local_48 + 2;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_48 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00636bf0 at 0x00636BF0 (size: 329) ---
|
|
|
|
|
|
void FUN_00636bf0(int param_1,int param_2,int param_3,int param_4,int *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int local_20;
|
|
|
|
|
|
|
|
iVar8 = param_5[1];
|
|
|
|
iVar5 = param_5[3];
|
|
|
|
param_4 = iVar8 * param_6 + param_4;
|
|
|
|
if (iVar8 < iVar5) {
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
iVar4 = iVar8 * 8;
|
|
|
|
do {
|
|
|
|
local_20 = *param_5;
|
|
|
|
if (local_20 < iVar1) {
|
|
|
|
iVar6 = local_20 * 3;
|
|
|
|
iVar5 = local_20 + iVar4;
|
|
|
|
do {
|
|
|
|
iVar1 = (int)*(short *)(param_3 + iVar5 * 2);
|
|
|
|
iVar3 = (int)*(short *)(param_2 + iVar5 * 2);
|
|
|
|
iVar7 = (int)*(short *)(param_1 + iVar5 * 2);
|
|
|
|
iVar2 = (short)((uint)(iVar1 * 0x167 + -0xb2f5) >> 8) + iVar7;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar6 + param_4) = (char)iVar2;
|
|
|
|
iVar1 = iVar7 - (short)((uint)(iVar3 * 0x58 + -0x87f6 + iVar1 * 0xb7) >> 8);
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar6 + 1 + param_4) = (char)iVar1;
|
|
|
|
iVar7 = (short)((uint)(iVar3 * 0x1c6 + -0xe251) >> 8) + iVar7;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
*(char *)(iVar6 + 2 + param_4) = (char)iVar7;
|
|
|
|
iVar6 = iVar6 + 3;
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
} while (local_20 < iVar1);
|
|
|
|
iVar5 = param_5[3];
|
|
|
|
}
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
iVar4 = iVar4 + 8;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < iVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00637010 at 0x00637010 (size: 329) ---
|
|
|
|
|
|
void FUN_00637010(int param_1,int param_2,int param_3,int param_4,int *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int local_20;
|
|
|
|
|
|
|
|
iVar8 = param_5[1];
|
|
|
|
iVar5 = param_5[3];
|
|
|
|
param_4 = iVar8 * param_6 + param_4;
|
|
|
|
if (iVar8 < iVar5) {
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
iVar4 = iVar8 * 8;
|
|
|
|
do {
|
|
|
|
local_20 = *param_5;
|
|
|
|
if (local_20 < iVar1) {
|
|
|
|
iVar6 = local_20 * 3;
|
|
|
|
iVar5 = local_20 + iVar4;
|
|
|
|
do {
|
|
|
|
iVar1 = (int)*(short *)(param_3 + iVar5 * 2);
|
|
|
|
iVar2 = (int)*(short *)(param_2 + iVar5 * 2);
|
|
|
|
iVar7 = (int)*(short *)(param_1 + iVar5 * 2);
|
|
|
|
iVar3 = (short)((uint)(iVar2 * 0x1c6 + -0xe251) >> 8) + iVar7;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar6 + param_4) = (char)iVar3;
|
|
|
|
iVar2 = iVar7 - (short)((uint)(iVar2 * 0x58 + -0x87f6 + iVar1 * 0xb7) >> 8);
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar6 + 1 + param_4) = (char)iVar2;
|
|
|
|
iVar7 = (short)((uint)(iVar1 * 0x167 + -0xb2f5) >> 8) + iVar7;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
*(char *)(iVar6 + 2 + param_4) = (char)iVar7;
|
|
|
|
iVar6 = iVar6 + 3;
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
} while (local_20 < iVar1);
|
|
|
|
iVar5 = param_5[3];
|
|
|
|
}
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
iVar4 = iVar4 + 8;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < iVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00637430 at 0x00637430 (size: 765) ---
|
|
|
|
|
|
void FUN_00637430(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_ec [96];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_2c = param_5[1];
|
|
|
|
local_1c = local_2c * param_6 + param_4;
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_ec[iVar4 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x20] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x40] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_ec[iVar4 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x21] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_ec[iVar4 * 4 + 0x41] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_ec[iVar4 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x22] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x42] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_ec[iVar4 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_ec[iVar4 * 4 + 0x23] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_ec[iVar4 * 4 + 0x43] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < 8);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)local_2c < (int)uVar6) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = local_2c * 2;
|
|
|
|
local_20 = param_1 + local_28;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_28 + uVar8 * 2);
|
|
|
|
local_14 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_2c * 4;
|
|
|
|
iVar5 = local_ec[local_14] + iVar4;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = uVar8 * 3;
|
|
|
|
sVar1 = local_ec[local_14 + 0x20];
|
|
|
|
*(char *)(iVar3 + local_1c) = (char)iVar5;
|
|
|
|
iVar5 = iVar4 - sVar1;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar3 + 1 + local_1c) = (char)iVar5;
|
|
|
|
iVar4 = iVar4 + local_ec[local_14 + 0x40];
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(char *)(iVar3 + 2 + local_1c) = (char)iVar4;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
local_1c = local_1c + param_6;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00637740 at 0x00637740 (size: 1252) ---
|
|
|
|
|
|
void FUN_00637740(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_50;
|
|
|
|
short *local_3c;
|
|
|
|
short *local_38;
|
|
|
|
|
|
|
|
local_50 = 0;
|
|
|
|
local_3c = param_3;
|
|
|
|
local_38 = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_3c * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_38 * 0x58 + -0x87f6 + *local_3c * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_38 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_3c[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_38[1] * 0x58 + -0x87f6 + local_3c[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_38[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_3c[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar9 = local_38[2] * 0x58 + -0x87f6 + local_3c[2] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_38[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
psVar1 = local_3c + 3;
|
|
|
|
iVar14 = *psVar1 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
local_3c = local_3c + 8;
|
|
|
|
iVar11 = local_38[3] * 0x58 + -0x87f6 + *psVar1 * 0xb7 >> 8;
|
|
|
|
iVar12 = local_38[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar13 = (int)*param_1;
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
local_38 = local_38 + 8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar15 = (int)param_1[1];
|
|
|
|
iVar2 = iVar2 + iVar15;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar2;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar4;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[2];
|
|
|
|
iVar15 = iVar2 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar7;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[3];
|
|
|
|
iVar5 = iVar5 + iVar15;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar5;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[4];
|
|
|
|
iVar15 = iVar2 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[5];
|
|
|
|
iVar8 = iVar8 + iVar15;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar8;
|
|
|
|
iVar9 = iVar15 - iVar9;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar9;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[6];
|
|
|
|
iVar15 = iVar2 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar12;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[7];
|
|
|
|
iVar14 = iVar14 + iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar14;
|
|
|
|
iVar11 = iVar15 - iVar11;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar11;
|
|
|
|
iVar15 = iVar15 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 8;
|
|
|
|
param_4[0x17] = (char)iVar15;
|
|
|
|
local_50 = local_50 + 1;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_50 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00637f60 at 0x00637F60 (size: 765) ---
|
|
|
|
|
|
void FUN_00637f60(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_ec [96];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_2c = param_5[1];
|
|
|
|
local_1c = local_2c * param_6 + param_4;
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_ec[iVar4 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x20] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x40] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_ec[iVar4 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x21] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_ec[iVar4 * 4 + 0x41] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_ec[iVar4 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x22] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar4 * 4 + 0x42] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_ec[iVar4 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_ec[iVar4 * 4 + 0x23] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_ec[iVar4 * 4 + 0x43] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
} while (iVar4 < 8);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)local_2c < (int)uVar6) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = local_2c * 2;
|
|
|
|
local_20 = param_1 + local_28;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_28 + uVar8 * 2);
|
|
|
|
local_14 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_2c * 4;
|
|
|
|
iVar5 = local_ec[local_14 + 0x40] + iVar4;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
iVar3 = uVar8 * 3;
|
|
|
|
sVar1 = local_ec[local_14 + 0x20];
|
|
|
|
*(char *)(iVar3 + local_1c) = (char)iVar5;
|
|
|
|
iVar5 = iVar4 - sVar1;
|
|
|
|
local_18 = iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
local_18 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar3 + 1 + local_1c) = (char)iVar5;
|
|
|
|
iVar4 = iVar4 + local_ec[local_14];
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(char *)(iVar3 + 2 + local_1c) = (char)iVar4;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
local_1c = local_1c + param_6;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00638280 at 0x00638280 (size: 1252) ---
|
|
|
|
|
|
void FUN_00638280(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_50;
|
|
|
|
short *local_3c;
|
|
|
|
short *local_38;
|
|
|
|
|
|
|
|
local_50 = 0;
|
|
|
|
local_38 = param_3;
|
|
|
|
local_3c = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_38 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_3c * 0x58 + -0x87f6 + *local_38 * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_3c * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_38[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_3c[1] * 0x58 + -0x87f6 + local_38[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_3c[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_38[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar14 = local_3c[2] * 0x58 + -0x87f6 + local_38[2] * 0xb7 >> 8;
|
|
|
|
iVar9 = local_3c[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
psVar1 = local_38 + 3;
|
|
|
|
local_38 = local_38 + 8;
|
|
|
|
iVar10 = *psVar1 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar11 = local_3c[3] * 0x58 + -0x87f6 + *psVar1 * 0xb7 >> 8;
|
|
|
|
iVar12 = local_3c[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar13 = (int)*param_1;
|
|
|
|
iVar15 = iVar4 + iVar13;
|
|
|
|
local_3c = local_3c + 8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar2;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
iVar15 = (int)param_1[1];
|
|
|
|
iVar4 = iVar4 + iVar15;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[3] = (char)iVar4;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar2;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[2];
|
|
|
|
iVar15 = iVar2 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[7] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar5;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[3];
|
|
|
|
iVar7 = iVar7 + iVar15;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar7;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xb] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[4];
|
|
|
|
iVar15 = iVar2 + iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar8;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[5];
|
|
|
|
iVar9 = iVar9 + iVar15;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xf] = (char)iVar9;
|
|
|
|
iVar14 = iVar15 - iVar14;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar14;
|
|
|
|
iVar15 = iVar15 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar2 = (int)param_1[6];
|
|
|
|
iVar15 = iVar2 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x13] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar2;
|
|
|
|
iVar15 = (int)param_1[7];
|
|
|
|
iVar12 = iVar12 + iVar15;
|
|
|
|
if (iVar12 < 0x100) {
|
|
|
|
if (iVar12 < 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar12;
|
|
|
|
iVar11 = iVar15 - iVar11;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar11;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 8;
|
|
|
|
param_4[0x17] = (char)iVar15;
|
|
|
|
local_50 = local_50 + 1;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_50 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00638aa0 at 0x00638AA0 (size: 320) ---
|
|
|
|
|
|
void FUN_00638aa0(int param_1,int param_2,int param_3,int param_4,int *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
|
|
|
|
iVar5 = param_5[1];
|
|
|
|
iVar6 = param_5[3];
|
|
|
|
param_4 = iVar5 * param_6 + param_4;
|
|
|
|
if (iVar5 < iVar6) {
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
iVar2 = iVar5 * 8;
|
|
|
|
do {
|
|
|
|
iVar7 = *param_5;
|
|
|
|
if (iVar7 < iVar1) {
|
|
|
|
iVar6 = iVar7 + iVar2;
|
|
|
|
do {
|
|
|
|
iVar1 = (int)*(short *)(param_1 + iVar6 * 2);
|
|
|
|
iVar4 = (int)*(short *)(param_3 + iVar6 * 2);
|
|
|
|
iVar8 = (int)*(short *)(param_2 + iVar6 * 2);
|
|
|
|
iVar3 = (short)((uint)(iVar4 * 0x167 + -0xb2f5) >> 8) + iVar1;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(param_4 + iVar7 * 4) = (char)iVar3;
|
|
|
|
iVar3 = iVar1 - (short)((uint)(iVar8 * 0x58 + -0x87f6 + iVar4 * 0xb7) >> 8);
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(param_4 + 1 + iVar7 * 4) = (char)iVar3;
|
|
|
|
iVar1 = iVar1 + (short)((uint)(iVar8 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
*(char *)(param_4 + 2 + iVar7 * 4) = (char)iVar1;
|
|
|
|
*(undefined1 *)(param_4 + 3 + iVar7 * 4) = 0xff;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
} while (iVar7 < iVar1);
|
|
|
|
iVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
iVar2 = iVar2 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00639430 at 0x00639430 (size: 702) ---
|
|
|
|
|
|
void FUN_00639430(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_e4 [96];
|
|
|
|
uint local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_24 = param_5[1];
|
|
|
|
local_14 = local_24 * param_6 + param_4;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_e4[iVar3 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_e4[iVar3 * 4 + 0x20] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_e4[iVar3 * 4 + 0x40] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_e4[iVar3 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_e4[iVar3 * 4 + 0x21] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_e4[iVar3 * 4 + 0x41] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_e4[iVar3 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_e4[iVar3 * 4 + 0x22] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_e4[iVar3 * 4 + 0x42] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_e4[iVar3 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_e4[iVar3 * 4 + 0x23] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_e4[iVar3 * 4 + 0x43] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 8);
|
|
|
|
uVar5 = param_5[3];
|
|
|
|
if ((int)local_24 < (int)uVar5) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_20 = local_24 << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_1c = local_24 * 2;
|
|
|
|
local_18 = param_1 + local_20;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_20 + uVar8 * 2);
|
|
|
|
iVar3 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_24 * 4;
|
|
|
|
iVar6 = local_e4[iVar3] + iVar4;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_14 + uVar8 * 4) = (char)iVar6;
|
|
|
|
iVar6 = iVar4 - local_e4[iVar3 + 0x20];
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
sVar1 = local_e4[iVar3 + 0x40];
|
|
|
|
*(char *)(local_14 + 1 + uVar8 * 4) = (char)iVar6;
|
|
|
|
iVar4 = iVar4 + sVar1;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_14 + 2 + uVar8 * 4) = (char)iVar4;
|
|
|
|
*(undefined1 *)(local_14 + 3 + uVar8 * 4) = 0xff;
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar5 = param_5[3];
|
|
|
|
}
|
|
|
|
local_14 = local_14 + param_6;
|
|
|
|
local_20 = local_20 + 0x10;
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
} while ((int)local_24 < (int)uVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00639710 at 0x00639710 (size: 1282) ---
|
|
|
|
|
|
void FUN_00639710(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int local_50;
|
|
|
|
short *local_3c;
|
|
|
|
short *local_38;
|
|
|
|
|
|
|
|
local_50 = 0;
|
|
|
|
local_3c = param_3;
|
|
|
|
local_38 = param_2;
|
|
|
|
do {
|
|
|
|
iVar1 = *local_3c * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar2 = *local_38 * 0x58 + -0x87f6 + *local_3c * 0xb7 >> 8;
|
|
|
|
iVar3 = *local_38 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar4 = local_3c[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar5 = local_38[1] * 0x58 + -0x87f6 + local_3c[1] * 0xb7 >> 8;
|
|
|
|
iVar6 = local_38[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar12 = local_3c[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar7 = local_38[2] * 0x58 + -0x87f6 + local_3c[2] * 0xb7 >> 8;
|
|
|
|
iVar8 = local_38[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar9 = local_3c[3] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar13 = local_38[3] * 0x58 + -0x87f6 + local_3c[3] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_38[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar11 = (int)*param_1;
|
|
|
|
iVar14 = iVar1 + iVar11;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar2;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar3;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar11;
|
|
|
|
param_4[3] = 0xff;
|
|
|
|
iVar14 = (int)param_1[1];
|
|
|
|
iVar1 = iVar1 + iVar14;
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar1;
|
|
|
|
iVar2 = iVar14 - iVar2;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar2;
|
|
|
|
iVar14 = iVar14 + iVar3;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar14;
|
|
|
|
param_4[7] = 0xff;
|
|
|
|
iVar1 = (int)param_1[2];
|
|
|
|
iVar14 = iVar1 + iVar4;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar14;
|
|
|
|
iVar14 = iVar1 - iVar5;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar14;
|
|
|
|
iVar1 = iVar1 + iVar6;
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar1;
|
|
|
|
param_4[0xb] = 0xff;
|
|
|
|
iVar14 = (int)param_1[3];
|
|
|
|
iVar4 = iVar4 + iVar14;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar4;
|
|
|
|
iVar5 = iVar14 - iVar5;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar5;
|
|
|
|
iVar14 = iVar14 + iVar6;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar14;
|
|
|
|
param_4[0xf] = 0xff;
|
|
|
|
iVar1 = (int)param_1[4];
|
|
|
|
iVar14 = iVar1 + iVar12;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar14;
|
|
|
|
iVar14 = iVar1 - iVar7;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar14;
|
|
|
|
iVar1 = iVar1 + iVar8;
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar1;
|
|
|
|
param_4[0x13] = 0xff;
|
|
|
|
iVar14 = (int)param_1[5];
|
|
|
|
iVar12 = iVar12 + iVar14;
|
|
|
|
if (iVar12 < 0x100) {
|
|
|
|
if (iVar12 < 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar12;
|
|
|
|
iVar7 = iVar14 - iVar7;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar7;
|
|
|
|
iVar14 = iVar14 + iVar8;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar14;
|
|
|
|
param_4[0x17] = 0xff;
|
|
|
|
iVar1 = (int)param_1[6];
|
|
|
|
iVar14 = iVar1 + iVar9;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x18] = (char)iVar14;
|
|
|
|
iVar14 = iVar1 - iVar13;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x19] = (char)iVar14;
|
|
|
|
iVar1 = iVar1 + iVar10;
|
|
|
|
if (iVar1 < 0x100) {
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1a] = (char)iVar1;
|
|
|
|
param_4[0x1b] = 0xff;
|
|
|
|
iVar14 = (int)param_1[7];
|
|
|
|
iVar9 = iVar9 + iVar14;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1c] = (char)iVar9;
|
|
|
|
iVar13 = iVar14 - iVar13;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1d] = (char)iVar13;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 8;
|
|
|
|
param_4[0x1e] = (char)iVar14;
|
|
|
|
local_50 = local_50 + 1;
|
|
|
|
param_4[0x1f] = 0xff;
|
|
|
|
local_38 = local_38 + 8;
|
|
|
|
local_3c = local_3c + 8;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_50 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00639f30 at 0x00639F30 (size: 665) ---
|
|
|
|
|
|
void FUN_00639f30(int param_1,short *param_2,short *param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_84 [48];
|
|
|
|
uint local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
|
|
|
|
local_24 = param_5[1];
|
|
|
|
local_14 = local_24 * param_6 + param_4;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_84[iVar3 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_84[iVar3 * 4 + 0x10] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_84[iVar3 * 4 + 0x20] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_84[iVar3 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_84[iVar3 * 4 + 0x11] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_84[iVar3 * 4 + 0x21] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_84[iVar3 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_84[iVar3 * 4 + 0x12] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_84[iVar3 * 4 + 0x22] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_84[iVar3 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_84[iVar3 * 4 + 0x13] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_84[iVar3 * 4 + 0x23] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 4);
|
|
|
|
uVar5 = param_5[3];
|
|
|
|
if ((int)local_24 < (int)uVar5) {
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
local_20 = local_24 << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_5;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_1c = (int)(local_24 + (0x7fffffff < local_24)) >> 1;
|
|
|
|
local_18 = param_1 + local_20;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(param_1 + local_20 + uVar8 * 2);
|
|
|
|
iVar3 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_1c * 4;
|
|
|
|
iVar6 = local_84[iVar3] + iVar4;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_14 + uVar8 * 4) = (char)iVar6;
|
|
|
|
iVar6 = iVar4 - local_84[iVar3 + 0x10];
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
sVar1 = local_84[iVar3 + 0x20];
|
|
|
|
*(char *)(local_14 + 1 + uVar8 * 4) = (char)iVar6;
|
|
|
|
iVar4 = iVar4 + sVar1;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_14 + 2 + uVar8 * 4) = (char)iVar4;
|
|
|
|
*(undefined1 *)(local_14 + 3 + uVar8 * 4) = 0xff;
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
uVar7 = param_5[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar5 = param_5[3];
|
|
|
|
}
|
|
|
|
local_14 = local_14 + param_6;
|
|
|
|
local_20 = local_20 + 0x10;
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
} while ((int)local_24 < (int)uVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063a1f0 at 0x0063A1F0 (size: 2041) ---
|
|
|
|
|
|
void FUN_0063a1f0(short *param_1,short *param_2,short *param_3,undefined1 *param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_48;
|
|
|
|
short *local_34;
|
|
|
|
short *local_30;
|
|
|
|
|
|
|
|
local_48 = 0;
|
|
|
|
local_34 = param_3;
|
|
|
|
local_30 = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_34 * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_30 * 0x58 + -0x87f6 + *local_34 * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_30 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_34[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_30[1] * 0x58 + -0x87f6 + local_34[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_30[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_34[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar9 = local_30[2] * 0x58 + -0x87f6 + local_34[2] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_30[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar14 = local_34[3] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
psVar1 = local_30 + 3;
|
|
|
|
iVar11 = *psVar1 * 0x58 + -0x87f6 + local_34[3] * 0xb7 >> 8;
|
|
|
|
local_30 = local_30 + 8;
|
|
|
|
iVar12 = *psVar1 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar13 = (int)*param_1;
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
local_34 = local_34 + 8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
param_4[3] = 0xff;
|
|
|
|
iVar13 = (int)param_1[1];
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar13;
|
|
|
|
param_4[7] = 0xff;
|
|
|
|
iVar13 = (int)param_1[2];
|
|
|
|
iVar15 = iVar13 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar7;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar13;
|
|
|
|
param_4[0xb] = 0xff;
|
|
|
|
iVar13 = (int)param_1[3];
|
|
|
|
iVar15 = iVar13 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar7;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar13;
|
|
|
|
param_4[0xf] = 0xff;
|
|
|
|
iVar13 = (int)param_1[4];
|
|
|
|
iVar15 = iVar13 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar13;
|
|
|
|
param_4[0x13] = 0xff;
|
|
|
|
iVar13 = (int)param_1[5];
|
|
|
|
iVar15 = iVar13 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar13;
|
|
|
|
param_4[0x17] = 0xff;
|
|
|
|
iVar13 = (int)param_1[6];
|
|
|
|
iVar15 = iVar13 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x18] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x19] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar12;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1a] = (char)iVar13;
|
|
|
|
param_4[0x1b] = 0xff;
|
|
|
|
iVar13 = (int)param_1[7];
|
|
|
|
iVar15 = iVar13 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1c] = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1d] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar12;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1e] = (char)iVar13;
|
|
|
|
param_4[0x1f] = 0xff;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
iVar13 = (int)param_1[8];
|
|
|
|
iVar15 = iVar2 + iVar13;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_4 = (char)iVar15;
|
|
|
|
iVar15 = iVar13 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[1] = (char)iVar15;
|
|
|
|
iVar13 = iVar13 + iVar4;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[2] = (char)iVar13;
|
|
|
|
param_4[3] = 0xff;
|
|
|
|
iVar15 = (int)param_1[9];
|
|
|
|
iVar2 = iVar2 + iVar15;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[4] = (char)iVar2;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[5] = (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar4;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[6] = (char)iVar15;
|
|
|
|
param_4[7] = 0xff;
|
|
|
|
iVar2 = (int)param_1[10];
|
|
|
|
iVar15 = iVar2 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[8] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[9] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar7;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[10] = (char)iVar2;
|
|
|
|
param_4[0xb] = 0xff;
|
|
|
|
iVar15 = (int)param_1[0xb];
|
|
|
|
iVar5 = iVar5 + iVar15;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xc] = (char)iVar5;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xd] = (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0xe] = (char)iVar15;
|
|
|
|
param_4[0xf] = 0xff;
|
|
|
|
iVar2 = (int)param_1[0xc];
|
|
|
|
iVar15 = iVar2 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x10] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x11] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x12] = (char)iVar2;
|
|
|
|
param_4[0x13] = 0xff;
|
|
|
|
iVar15 = (int)param_1[0xd];
|
|
|
|
iVar8 = iVar8 + iVar15;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x14] = (char)iVar8;
|
|
|
|
iVar9 = iVar15 - iVar9;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x15] = (char)iVar9;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x16] = (char)iVar15;
|
|
|
|
param_4[0x17] = 0xff;
|
|
|
|
iVar2 = (int)param_1[0xe];
|
|
|
|
iVar15 = iVar2 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x18] = (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x19] = (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar12;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1a] = (char)iVar2;
|
|
|
|
param_4[0x1b] = 0xff;
|
|
|
|
iVar15 = (int)param_1[0xf];
|
|
|
|
iVar14 = iVar14 + iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1c] = (char)iVar14;
|
|
|
|
iVar11 = iVar15 - iVar11;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_4[0x1d] = (char)iVar11;
|
|
|
|
iVar15 = iVar15 + iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_4[0x1e] = (char)iVar15;
|
|
|
|
local_48 = local_48 + 2;
|
|
|
|
param_4[0x1f] = 0xff;
|
|
|
|
param_4 = param_4 + param_5;
|
|
|
|
} while (local_48 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063af40 at 0x0063AF40 (size: 392) ---
|
|
|
|
|
|
void FUN_0063af40(int param_1,int param_2,int param_3,int param_4,int param_5,int *param_6,
|
|
|
|
int param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
iVar8 = param_6[1];
|
|
|
|
iVar2 = param_6[3];
|
|
|
|
param_5 = iVar8 * param_7 + param_5;
|
|
|
|
if (iVar8 < iVar2) {
|
|
|
|
iVar4 = param_6[2];
|
|
|
|
iVar3 = iVar8 << 4;
|
|
|
|
iVar1 = iVar8 * 8;
|
|
|
|
do {
|
|
|
|
iVar6 = *param_6;
|
|
|
|
if (iVar6 < iVar4) {
|
|
|
|
local_18 = iVar6 + iVar1;
|
|
|
|
do {
|
|
|
|
iVar5 = (int)*(short *)(param_1 + local_18 * 2);
|
|
|
|
iVar2 = (int)*(short *)(param_3 + local_18 * 2);
|
|
|
|
iVar7 = (int)*(short *)(param_2 + local_18 * 2);
|
|
|
|
iVar4 = (short)((uint)(iVar2 * 0x167 + -0xb2f5) >> 8) + iVar5;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(param_5 + iVar6 * 4) = -1 - (char)iVar4;
|
|
|
|
iVar2 = iVar5 - (short)((uint)(iVar7 * 0x58 + -0x87f6 + iVar2 * 0xb7) >> 8);
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(param_5 + 1 + iVar6 * 4) = -1 - (char)iVar2;
|
|
|
|
iVar5 = iVar5 + (short)((uint)(iVar7 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(param_5 + 2 + iVar6 * 4) = -1 - (char)iVar5;
|
|
|
|
*(undefined1 *)(param_5 + 3 + iVar6 * 4) = *(undefined1 *)(param_4 + iVar3 + iVar6 * 2);
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
iVar4 = param_6[2];
|
|
|
|
local_18 = local_18 + 1;
|
|
|
|
} while (iVar6 < iVar4);
|
|
|
|
iVar2 = param_6[3];
|
|
|
|
}
|
|
|
|
param_5 = param_5 + param_7;
|
|
|
|
iVar3 = iVar3 + 0x10;
|
|
|
|
iVar1 = iVar1 + 8;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 < iVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063bac0 at 0x0063BAC0 (size: 769) ---
|
|
|
|
|
|
void FUN_0063bac0(int param_1,short *param_2,short *param_3,int param_4,int param_5,uint *param_6,
|
|
|
|
int param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_ec [96];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_2c = param_6[1];
|
|
|
|
local_18 = local_2c * param_7 + param_5;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_ec[iVar3 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar3 * 4 + 0x20] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar3 * 4 + 0x40] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_ec[iVar3 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar3 * 4 + 0x21] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_ec[iVar3 * 4 + 0x41] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_ec[iVar3 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_ec[iVar3 * 4 + 0x22] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_ec[iVar3 * 4 + 0x42] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_ec[iVar3 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_ec[iVar3 * 4 + 0x23] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_ec[iVar3 * 4 + 0x43] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 8);
|
|
|
|
uVar5 = param_6[3];
|
|
|
|
if ((int)local_2c < (int)uVar5) {
|
|
|
|
uVar7 = param_6[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_6;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = local_2c * 2;
|
|
|
|
local_1c = param_4 + local_28;
|
|
|
|
local_20 = local_28 + param_1;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(local_28 + param_1 + uVar8 * 2);
|
|
|
|
iVar3 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_2c * 4;
|
|
|
|
iVar6 = local_ec[iVar3] + iVar4;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_18 + uVar8 * 4) = -1 - (char)iVar6;
|
|
|
|
iVar6 = iVar4 - local_ec[iVar3 + 0x20];
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
sVar1 = local_ec[iVar3 + 0x40];
|
|
|
|
*(char *)(local_18 + 1 + uVar8 * 4) = -1 - (char)iVar6;
|
|
|
|
iVar4 = iVar4 + sVar1;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_18 + 2 + uVar8 * 4) = -1 - (char)iVar4;
|
|
|
|
*(undefined1 *)(local_18 + 3 + uVar8 * 4) =
|
|
|
|
*(undefined1 *)(param_4 + local_28 + uVar8 * 2);
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
uVar7 = param_6[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar5 = param_6[3];
|
|
|
|
}
|
|
|
|
local_18 = local_18 + param_7;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063bdd0 at 0x0063BDD0 (size: 1489) ---
|
|
|
|
|
|
void FUN_0063bdd0(short *param_1,short *param_2,short *param_3,char *param_4,char *param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_50;
|
|
|
|
short *local_3c;
|
|
|
|
short *local_38;
|
|
|
|
char *local_24;
|
|
|
|
|
|
|
|
local_50 = 0;
|
|
|
|
local_24 = param_4;
|
|
|
|
local_3c = param_3;
|
|
|
|
local_38 = param_2;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_3c * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_38 * 0x58 + -0x87f6 + *local_3c * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_38 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_3c[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar6 = local_38[1] * 0x58 + -0x87f6 + local_3c[1] * 0xb7 >> 8;
|
|
|
|
iVar7 = local_38[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar8 = local_3c[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar9 = local_38[2] * 0x58 + -0x87f6 + local_3c[2] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_38[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar11 = local_3c[3] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar12 = local_38[3] * 0x58 + -0x87f6 + local_3c[3] * 0xb7 >> 8;
|
|
|
|
iVar13 = local_38[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
local_38 = local_38 + 8;
|
|
|
|
iVar14 = (int)*param_1;
|
|
|
|
local_3c = local_3c + 8;
|
|
|
|
iVar15 = iVar2 + iVar14;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
*param_5 = -1 - (char)iVar15;
|
|
|
|
iVar15 = iVar14 - iVar3;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[1] = -1 - (char)iVar15;
|
|
|
|
iVar14 = iVar14 + iVar4;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[2] = -1 - (char)iVar14;
|
|
|
|
param_5[3] = *local_24;
|
|
|
|
iVar15 = (int)param_1[1];
|
|
|
|
iVar2 = iVar2 + iVar15;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[4] = -1 - (char)iVar2;
|
|
|
|
iVar3 = iVar15 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[5] = -1 - (char)iVar3;
|
|
|
|
iVar15 = iVar15 + iVar4;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[6] = -1 - (char)iVar15;
|
|
|
|
param_5[7] = local_24[2];
|
|
|
|
iVar2 = (int)param_1[2];
|
|
|
|
iVar15 = iVar2 + iVar5;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[8] = -1 - (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar6;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[9] = -1 - (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar7;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[10] = -1 - (char)iVar2;
|
|
|
|
param_5[0xb] = local_24[4];
|
|
|
|
iVar15 = (int)param_1[3];
|
|
|
|
iVar5 = iVar5 + iVar15;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xc] = -1 - (char)iVar5;
|
|
|
|
iVar6 = iVar15 - iVar6;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xd] = -1 - (char)iVar6;
|
|
|
|
iVar15 = iVar15 + iVar7;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xe] = -1 - (char)iVar15;
|
|
|
|
param_5[0xf] = local_24[6];
|
|
|
|
iVar2 = (int)param_1[4];
|
|
|
|
iVar15 = iVar2 + iVar8;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x10] = -1 - (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar9;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x11] = -1 - (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x12] = -1 - (char)iVar2;
|
|
|
|
param_5[0x13] = local_24[8];
|
|
|
|
iVar15 = (int)param_1[5];
|
|
|
|
iVar8 = iVar8 + iVar15;
|
|
|
|
if (iVar8 < 0x100) {
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x14] = -1 - (char)iVar8;
|
|
|
|
iVar9 = iVar15 - iVar9;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x15] = -1 - (char)iVar9;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x16] = -1 - (char)iVar15;
|
|
|
|
param_5[0x17] = local_24[10];
|
|
|
|
iVar2 = (int)param_1[6];
|
|
|
|
iVar15 = iVar2 + iVar11;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x18] = -1 - (char)iVar15;
|
|
|
|
iVar15 = iVar2 - iVar12;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x19] = -1 - (char)iVar15;
|
|
|
|
iVar2 = iVar2 + iVar13;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1a] = -1 - (char)iVar2;
|
|
|
|
param_5[0x1b] = local_24[0xc];
|
|
|
|
iVar15 = (int)param_1[7];
|
|
|
|
iVar11 = iVar11 + iVar15;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1c] = -1 - (char)iVar11;
|
|
|
|
iVar12 = iVar15 - iVar12;
|
|
|
|
if (iVar12 < 0x100) {
|
|
|
|
if (iVar12 < 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1d] = -1 - (char)iVar12;
|
|
|
|
iVar15 = iVar15 + iVar13;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 8;
|
|
|
|
param_5[0x1e] = -1 - (char)iVar15;
|
|
|
|
pcVar1 = local_24 + 0xe;
|
|
|
|
local_24 = local_24 + 0x10;
|
|
|
|
param_5[0x1f] = *pcVar1;
|
|
|
|
local_50 = local_50 + 1;
|
|
|
|
param_5 = param_5 + param_6;
|
|
|
|
} while (local_50 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063c780 at 0x0063C780 (size: 713) ---
|
|
|
|
|
|
void FUN_0063c780(int param_1,short *param_2,short *param_3,int param_4,int param_5,uint *param_6,
|
|
|
|
int param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
short local_8c [48];
|
|
|
|
uint local_2c;
|
|
|
|
int local_28;
|
|
|
|
int local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
local_2c = param_6[1];
|
|
|
|
local_18 = local_2c * param_7 + param_5;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
sVar1 = *param_3;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
local_8c[iVar3 * 4] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar3 * 4 + 0x10] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar3 * 4 + 0x20] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[1];
|
|
|
|
sVar2 = param_2[1];
|
|
|
|
local_8c[iVar3 * 4 + 1] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar3 * 4 + 0x11] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
sVar1 = param_2[2];
|
|
|
|
local_8c[iVar3 * 4 + 0x21] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar2 = param_3[2];
|
|
|
|
local_8c[iVar3 * 4 + 2] = (short)((uint)(sVar2 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
local_8c[iVar3 * 4 + 0x12] = (short)((uint)(sVar1 * 0x58 + -0x87f6 + sVar2 * 0xb7) >> 8);
|
|
|
|
local_8c[iVar3 * 4 + 0x22] = (short)((uint)(sVar1 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
sVar1 = param_3[3];
|
|
|
|
sVar2 = param_2[3];
|
|
|
|
local_8c[iVar3 * 4 + 3] = (short)((uint)(sVar1 * 0x167 + -0xb2f5) >> 8);
|
|
|
|
param_2 = param_2 + 8;
|
|
|
|
local_8c[iVar3 * 4 + 0x13] = (short)((uint)(sVar2 * 0x58 + -0x87f6 + sVar1 * 0xb7) >> 8);
|
|
|
|
param_3 = param_3 + 8;
|
|
|
|
local_8c[iVar3 * 4 + 0x23] = (short)((uint)(sVar2 * 0x1c6 + -0xe251) >> 8);
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < 4);
|
|
|
|
uVar5 = param_6[3];
|
|
|
|
if ((int)local_2c < (int)uVar5) {
|
|
|
|
uVar7 = param_6[2];
|
|
|
|
local_28 = local_2c << 4;
|
|
|
|
do {
|
|
|
|
uVar8 = *param_6;
|
|
|
|
if ((int)uVar8 < (int)uVar7) {
|
|
|
|
local_24 = (int)(local_2c + (0x7fffffff < local_2c)) >> 1;
|
|
|
|
local_1c = param_4 + local_28;
|
|
|
|
local_20 = local_28 + param_1;
|
|
|
|
do {
|
|
|
|
iVar4 = (int)*(short *)(local_28 + param_1 + uVar8 * 2);
|
|
|
|
iVar3 = ((int)(uVar8 + (0x7fffffff < uVar8)) >> 1) + local_24 * 4;
|
|
|
|
iVar6 = local_8c[iVar3] + iVar4;
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_18 + uVar8 * 4) = -1 - (char)iVar6;
|
|
|
|
iVar6 = iVar4 - local_8c[iVar3 + 0x10];
|
|
|
|
if (iVar6 < 0x100) {
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
sVar1 = local_8c[iVar3 + 0x20];
|
|
|
|
*(char *)(local_18 + 1 + uVar8 * 4) = -1 - (char)iVar6;
|
|
|
|
iVar4 = iVar4 + sVar1;
|
|
|
|
if (iVar4 < 0x100) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(local_18 + 2 + uVar8 * 4) = -1 - (char)iVar4;
|
|
|
|
*(undefined1 *)(local_18 + 3 + uVar8 * 4) =
|
|
|
|
*(undefined1 *)(param_4 + local_28 + uVar8 * 2);
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
uVar7 = param_6[2];
|
|
|
|
} while ((int)uVar8 < (int)uVar7);
|
|
|
|
uVar5 = param_6[3];
|
|
|
|
}
|
|
|
|
local_18 = local_18 + param_7;
|
|
|
|
local_28 = local_28 + 0x10;
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
} while ((int)local_2c < (int)uVar5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063ca70 at 0x0063CA70 (size: 2420) ---
|
|
|
|
|
|
void FUN_0063ca70(short *param_1,short *param_2,short *param_3,char *param_4,char *param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int local_50;
|
|
|
|
short *local_3c;
|
|
|
|
short *local_38;
|
|
|
|
short *local_14;
|
|
|
|
|
|
|
|
local_50 = 0;
|
|
|
|
local_3c = param_3;
|
|
|
|
local_38 = param_2;
|
|
|
|
local_14 = param_1;
|
|
|
|
do {
|
|
|
|
iVar2 = *local_3c * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar3 = *local_38 * 0x58 + -0x87f6 + *local_3c * 0xb7 >> 8;
|
|
|
|
iVar4 = *local_38 * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar5 = local_3c[1] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar13 = local_38[1] * 0x58 + -0x87f6 + local_3c[1] * 0xb7 >> 8;
|
|
|
|
iVar6 = local_38[1] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar7 = local_3c[2] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar12 = local_38[2] * 0x58 + -0x87f6 + local_3c[2] * 0xb7 >> 8;
|
|
|
|
iVar8 = local_38[2] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
iVar9 = local_3c[3] * 0x167 + -0xb2f5 >> 8;
|
|
|
|
iVar15 = local_38[3] * 0x58 + -0x87f6 + local_3c[3] * 0xb7 >> 8;
|
|
|
|
iVar10 = local_38[3] * 0x1c6 + -0xe251 >> 8;
|
|
|
|
local_38 = local_38 + 8;
|
|
|
|
iVar11 = (int)*local_14;
|
|
|
|
local_3c = local_3c + 8;
|
|
|
|
iVar14 = iVar2 + iVar11;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
*param_5 = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar3;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[1] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar4;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[2] = -1 - (char)iVar11;
|
|
|
|
param_5[3] = *param_4;
|
|
|
|
iVar11 = (int)local_14[1];
|
|
|
|
iVar14 = iVar2 + iVar11;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[4] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar3;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[5] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar4;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[6] = -1 - (char)iVar11;
|
|
|
|
param_5[7] = param_4[2];
|
|
|
|
iVar11 = (int)local_14[2];
|
|
|
|
iVar14 = iVar11 + iVar5;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[8] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar13;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[9] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar6;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[10] = -1 - (char)iVar11;
|
|
|
|
param_5[0xb] = param_4[4];
|
|
|
|
iVar11 = (int)local_14[3];
|
|
|
|
iVar14 = iVar11 + iVar5;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xc] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar13;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xd] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar6;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xe] = -1 - (char)iVar11;
|
|
|
|
param_5[0xf] = param_4[6];
|
|
|
|
iVar11 = (int)local_14[4];
|
|
|
|
iVar14 = iVar11 + iVar7;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x10] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar12;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x11] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar8;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x12] = -1 - (char)iVar11;
|
|
|
|
param_5[0x13] = param_4[8];
|
|
|
|
iVar11 = (int)local_14[5];
|
|
|
|
iVar14 = iVar11 + iVar7;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x14] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar12;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x15] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar8;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x16] = -1 - (char)iVar11;
|
|
|
|
param_5[0x17] = param_4[10];
|
|
|
|
iVar11 = (int)local_14[6];
|
|
|
|
iVar14 = iVar11 + iVar9;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x18] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x19] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1a] = -1 - (char)iVar11;
|
|
|
|
param_5[0x1b] = param_4[0xc];
|
|
|
|
iVar11 = (int)local_14[7];
|
|
|
|
iVar14 = iVar11 + iVar9;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1c] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1d] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1e] = -1 - (char)iVar11;
|
|
|
|
param_5[0x1f] = param_4[0xe];
|
|
|
|
iVar11 = (int)local_14[8];
|
|
|
|
iVar14 = iVar2 + iVar11;
|
|
|
|
param_5 = param_5 + param_6;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
*param_5 = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar11 - iVar3;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[1] = -1 - (char)iVar14;
|
|
|
|
iVar11 = iVar11 + iVar4;
|
|
|
|
if (iVar11 < 0x100) {
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[2] = -1 - (char)iVar11;
|
|
|
|
param_5[3] = param_4[0x10];
|
|
|
|
iVar14 = (int)local_14[9];
|
|
|
|
iVar2 = iVar2 + iVar14;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[4] = -1 - (char)iVar2;
|
|
|
|
iVar3 = iVar14 - iVar3;
|
|
|
|
if (iVar3 < 0x100) {
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[5] = -1 - (char)iVar3;
|
|
|
|
iVar14 = iVar14 + iVar4;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[6] = -1 - (char)iVar14;
|
|
|
|
param_5[7] = param_4[0x12];
|
|
|
|
iVar2 = (int)local_14[10];
|
|
|
|
iVar14 = iVar2 + iVar5;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[8] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar2 - iVar13;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[9] = -1 - (char)iVar14;
|
|
|
|
iVar2 = iVar2 + iVar6;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[10] = -1 - (char)iVar2;
|
|
|
|
param_5[0xb] = param_4[0x14];
|
|
|
|
iVar14 = (int)local_14[0xb];
|
|
|
|
iVar5 = iVar5 + iVar14;
|
|
|
|
if (iVar5 < 0x100) {
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xc] = -1 - (char)iVar5;
|
|
|
|
iVar13 = iVar14 - iVar13;
|
|
|
|
if (iVar13 < 0x100) {
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xd] = -1 - (char)iVar13;
|
|
|
|
iVar14 = iVar14 + iVar6;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0xe] = -1 - (char)iVar14;
|
|
|
|
param_5[0xf] = param_4[0x16];
|
|
|
|
iVar2 = (int)local_14[0xc];
|
|
|
|
iVar14 = iVar2 + iVar7;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x10] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar2 - iVar12;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x11] = -1 - (char)iVar14;
|
|
|
|
iVar2 = iVar2 + iVar8;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x12] = -1 - (char)iVar2;
|
|
|
|
param_5[0x13] = param_4[0x18];
|
|
|
|
iVar14 = (int)local_14[0xd];
|
|
|
|
iVar7 = iVar7 + iVar14;
|
|
|
|
if (iVar7 < 0x100) {
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x14] = -1 - (char)iVar7;
|
|
|
|
iVar12 = iVar14 - iVar12;
|
|
|
|
if (iVar12 < 0x100) {
|
|
|
|
if (iVar12 < 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x15] = -1 - (char)iVar12;
|
|
|
|
iVar14 = iVar14 + iVar8;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x16] = -1 - (char)iVar14;
|
|
|
|
param_5[0x17] = param_4[0x1a];
|
|
|
|
iVar2 = (int)local_14[0xe];
|
|
|
|
iVar14 = iVar2 + iVar9;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x18] = -1 - (char)iVar14;
|
|
|
|
iVar14 = iVar2 - iVar15;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x19] = -1 - (char)iVar14;
|
|
|
|
iVar2 = iVar2 + iVar10;
|
|
|
|
if (iVar2 < 0x100) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1a] = -1 - (char)iVar2;
|
|
|
|
param_5[0x1b] = param_4[0x1c];
|
|
|
|
iVar14 = (int)local_14[0xf];
|
|
|
|
iVar9 = iVar9 + iVar14;
|
|
|
|
if (iVar9 < 0x100) {
|
|
|
|
if (iVar9 < 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1c] = -1 - (char)iVar9;
|
|
|
|
iVar15 = iVar14 - iVar15;
|
|
|
|
if (iVar15 < 0x100) {
|
|
|
|
if (iVar15 < 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
param_5[0x1d] = -1 - (char)iVar15;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
if (iVar14 < 0x100) {
|
|
|
|
if (iVar14 < 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
local_50 = local_50 + 2;
|
|
|
|
param_5[0x1e] = -1 - (char)iVar14;
|
|
|
|
pcVar1 = param_4 + 0x1e;
|
|
|
|
param_4 = param_4 + 0x20;
|
|
|
|
param_5[0x1f] = *pcVar1;
|
|
|
|
param_5 = param_5 + param_6;
|
|
|
|
local_14 = local_14 + 0x10;
|
|
|
|
} while (local_50 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063da90 at 0x0063DA90 (size: 166) ---
|
|
|
|
|
|
void FUN_0063da90(int param_1,int param_2,int param_3,int param_4,int *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar5 = param_5[1];
|
|
|
|
iVar3 = param_5[3];
|
|
|
|
param_4 = iVar5 * param_6 + param_4;
|
|
|
|
if (iVar5 < iVar3) {
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
iVar4 = iVar5 * 8;
|
|
|
|
do {
|
|
|
|
iVar2 = *param_5;
|
|
|
|
if (iVar2 < iVar1) {
|
|
|
|
iVar3 = iVar2 + iVar4;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(param_4 + iVar2 * 4) = *(undefined1 *)(param_1 + iVar3 * 2);
|
|
|
|
*(undefined1 *)(param_4 + 1 + iVar2 * 4) = *(undefined1 *)(param_2 + iVar3 * 2);
|
|
|
|
iVar1 = iVar3 * 2;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
*(undefined1 *)(param_4 + 2 + iVar2 * 4) = *(undefined1 *)(param_3 + iVar1);
|
|
|
|
*(undefined1 *)(param_4 + 3 + iVar2 * 4) = 0xff;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
} while (iVar2 < iVar1);
|
|
|
|
iVar3 = param_5[3];
|
|
|
|
}
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
iVar4 = iVar4 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 < iVar3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063de40 at 0x0063DE40 (size: 178) ---
|
|
|
|
|
|
void FUN_0063de40(int param_1,int param_2,int param_3,int param_4,int param_5,int *param_6,
|
|
|
|
int param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar3 = param_6[1];
|
|
|
|
iVar4 = param_6[3];
|
|
|
|
param_5 = iVar3 * param_7 + param_5;
|
|
|
|
if (iVar3 < iVar4) {
|
|
|
|
iVar2 = param_6[2];
|
|
|
|
iVar1 = iVar3 * 8;
|
|
|
|
do {
|
|
|
|
iVar5 = *param_6;
|
|
|
|
if (iVar5 < iVar2) {
|
|
|
|
iVar4 = iVar5 + iVar1;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(param_5 + iVar5 * 4) = *(undefined1 *)(param_1 + iVar4 * 2);
|
|
|
|
*(undefined1 *)(param_5 + 1 + iVar5 * 4) = *(undefined1 *)(param_2 + iVar4 * 2);
|
|
|
|
*(undefined1 *)(param_5 + 2 + iVar5 * 4) = *(undefined1 *)(param_3 + iVar4 * 2);
|
|
|
|
*(undefined1 *)(param_5 + 3 + iVar5 * 4) = *(undefined1 *)(param_4 + iVar4 * 2);
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar2 = param_6[2];
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
iVar4 = param_6[3];
|
|
|
|
}
|
|
|
|
param_5 = param_5 + param_7;
|
|
|
|
iVar1 = iVar1 + 8;
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (iVar3 < iVar4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063e230 at 0x0063E230 (size: 182) ---
|
|
|
|
|
|
void FUN_0063e230(int param_1,int param_2,int param_3,int param_4,int *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int local_1c;
|
|
|
|
|
|
|
|
iVar2 = param_5[1];
|
|
|
|
param_1 = param_1 + iVar2 * 0x10;
|
|
|
|
param_2 = param_2 + iVar2 * 0x10;
|
|
|
|
param_4 = iVar2 * param_6 + param_4;
|
|
|
|
local_1c = param_3 + iVar2 * 0x10;
|
|
|
|
iVar3 = param_5[3];
|
|
|
|
if (iVar2 < iVar3) {
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
do {
|
|
|
|
iVar4 = *param_5;
|
|
|
|
if (iVar4 < iVar1) {
|
|
|
|
iVar3 = iVar4 * 3;
|
|
|
|
do {
|
|
|
|
*(undefined1 *)(iVar3 + param_4) = *(undefined1 *)(param_1 + iVar4 * 2);
|
|
|
|
*(undefined1 *)(iVar3 + 1 + param_4) = *(undefined1 *)(param_2 + iVar4 * 2);
|
|
|
|
iVar1 = iVar4 * 2;
|
|
|
|
iVar4 = iVar4 + 1;
|
|
|
|
*(undefined1 *)(iVar3 + 2 + param_4) = *(undefined1 *)(local_1c + iVar1);
|
|
|
|
iVar3 = iVar3 + 3;
|
|
|
|
iVar1 = param_5[2];
|
|
|
|
} while (iVar4 < iVar1);
|
|
|
|
iVar3 = param_5[3];
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
local_1c = local_1c + 0x10;
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
} while (iVar2 < iVar3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063e2f0 at 0x0063E2F0 (size: 254) ---
|
|
|
|
|
|
void FUN_0063e2f0(undefined1 *param_1,undefined1 *param_2,undefined1 *param_3,undefined1 *param_4,
|
|
|
|
int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
undefined1 *local_18;
|
|
|
|
int local_14;
|
|
|
|
undefined1 *local_10;
|
|
|
|
|
|
|
|
local_14 = 0;
|
|
|
|
local_18 = param_4;
|
|
|
|
local_10 = param_3;
|
|
|
|
do {
|
|
|
|
*local_18 = *param_1;
|
|
|
|
local_18[1] = *param_2;
|
|
|
|
local_18[2] = *local_10;
|
|
|
|
local_18[3] = param_1[2];
|
|
|
|
local_18[4] = param_2[2];
|
|
|
|
local_18[5] = local_10[2];
|
|
|
|
local_18[6] = param_1[4];
|
|
|
|
local_18[7] = param_2[4];
|
|
|
|
local_18[8] = local_10[4];
|
|
|
|
local_18[9] = param_1[6];
|
|
|
|
local_18[10] = param_2[6];
|
|
|
|
local_18[0xb] = local_10[6];
|
|
|
|
local_18[0xc] = param_1[8];
|
|
|
|
local_18[0xd] = param_2[8];
|
|
|
|
local_18[0xe] = local_10[8];
|
|
|
|
local_18[0xf] = param_1[10];
|
|
|
|
local_18[0x10] = param_2[10];
|
|
|
|
local_18[0x11] = local_10[10];
|
|
|
|
local_18[0x12] = param_1[0xc];
|
|
|
|
local_18[0x13] = param_2[0xc];
|
|
|
|
local_18[0x14] = local_10[0xc];
|
|
|
|
puVar1 = param_1 + 0xe;
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
local_18[0x15] = *puVar1;
|
|
|
|
puVar1 = param_2 + 0xe;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
local_18[0x16] = *puVar1;
|
|
|
|
local_18[0x17] = local_10[0xe];
|
|
|
|
local_14 = local_14 + 1;
|
|
|
|
local_10 = local_10 + 0x10;
|
|
|
|
local_18 = local_18 + param_5;
|
|
|
|
} while (local_14 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063e570 at 0x0063E570 (size: 237) ---
|
|
|
|
|
|
void FUN_0063e570(int param_1,int param_2,int param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
uVar4 = param_5[1];
|
|
|
|
iVar6 = (int)(uVar4 + (0x7fffffff < uVar4)) >> 1;
|
|
|
|
param_4 = uVar4 * param_6 + param_4;
|
|
|
|
local_18 = param_2 + iVar6 * 0x10;
|
|
|
|
local_1c = param_3 + iVar6 * 0x10;
|
|
|
|
param_1 = uVar4 * 0x10 + param_1;
|
|
|
|
uVar2 = param_5[3];
|
|
|
|
if ((int)uVar4 < (int)uVar2) {
|
|
|
|
uVar5 = param_5[2];
|
|
|
|
do {
|
|
|
|
uVar7 = *param_5;
|
|
|
|
if ((int)uVar7 < (int)uVar5) {
|
|
|
|
iVar6 = uVar7 * 3;
|
|
|
|
do {
|
|
|
|
iVar1 = uVar7 * 2;
|
|
|
|
iVar3 = (int)(uVar7 + (0x7fffffff < uVar7)) >> 1;
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
*(undefined1 *)(iVar6 + param_4) = *(undefined1 *)(param_1 + iVar1);
|
|
|
|
*(undefined1 *)(iVar6 + 1 + param_4) = *(undefined1 *)(local_18 + iVar3 * 2);
|
|
|
|
*(undefined1 *)(iVar6 + 2 + param_4) = *(undefined1 *)(local_1c + iVar3 * 2);
|
|
|
|
iVar6 = iVar6 + 3;
|
|
|
|
uVar5 = param_5[2];
|
|
|
|
} while ((int)uVar7 < (int)uVar5);
|
|
|
|
uVar2 = param_5[3];
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
local_18 = local_18 + (uVar4 & 1) * 0x10;
|
|
|
|
local_1c = local_1c + (uVar4 & 1) * 0x10;
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
} while ((int)uVar4 < (int)uVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063e660 at 0x0063E660 (size: 411) ---
|
|
|
|
|
|
void FUN_0063e660(undefined1 *param_1,undefined1 *param_2,undefined1 *param_3,undefined1 *param_4,
|
|
|
|
int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
undefined1 *local_18;
|
|
|
|
int local_14;
|
|
|
|
undefined1 *local_10;
|
|
|
|
|
|
|
|
local_14 = 0;
|
|
|
|
local_18 = param_4;
|
|
|
|
local_10 = param_3;
|
|
|
|
do {
|
|
|
|
*local_18 = *param_1;
|
|
|
|
local_18[1] = *param_2;
|
|
|
|
local_18[2] = *local_10;
|
|
|
|
local_18[3] = param_1[2];
|
|
|
|
local_18[4] = *param_2;
|
|
|
|
local_18[5] = *local_10;
|
|
|
|
local_18[6] = param_1[4];
|
|
|
|
local_18[7] = param_2[2];
|
|
|
|
local_18[8] = local_10[2];
|
|
|
|
local_18[9] = param_1[6];
|
|
|
|
local_18[10] = param_2[2];
|
|
|
|
local_18[0xb] = local_10[2];
|
|
|
|
local_18[0xc] = param_1[8];
|
|
|
|
local_18[0xd] = param_2[4];
|
|
|
|
local_18[0xe] = local_10[4];
|
|
|
|
local_18[0xf] = param_1[10];
|
|
|
|
local_18[0x10] = param_2[4];
|
|
|
|
local_18[0x11] = local_10[4];
|
|
|
|
local_18[0x12] = param_1[0xc];
|
|
|
|
local_18[0x13] = param_2[6];
|
|
|
|
local_18[0x14] = local_10[6];
|
|
|
|
local_18[0x15] = param_1[0xe];
|
|
|
|
local_18[0x16] = param_2[6];
|
|
|
|
local_18[0x17] = local_10[6];
|
|
|
|
local_18 = local_18 + param_5;
|
|
|
|
*local_18 = param_1[0x10];
|
|
|
|
local_18[1] = *param_2;
|
|
|
|
local_18[2] = *local_10;
|
|
|
|
local_18[3] = param_1[0x12];
|
|
|
|
local_18[4] = *param_2;
|
|
|
|
local_18[5] = *local_10;
|
|
|
|
local_18[6] = param_1[0x14];
|
|
|
|
local_18[7] = param_2[2];
|
|
|
|
local_18[8] = local_10[2];
|
|
|
|
local_18[9] = param_1[0x16];
|
|
|
|
local_18[10] = param_2[2];
|
|
|
|
local_18[0xb] = local_10[2];
|
|
|
|
local_18[0xc] = param_1[0x18];
|
|
|
|
local_18[0xd] = param_2[4];
|
|
|
|
local_18[0xe] = local_10[4];
|
|
|
|
local_18[0xf] = param_1[0x1a];
|
|
|
|
local_18[0x10] = param_2[4];
|
|
|
|
local_18[0x11] = local_10[4];
|
|
|
|
local_18[0x12] = param_1[0x1c];
|
|
|
|
local_18[0x13] = param_2[6];
|
|
|
|
local_18[0x14] = local_10[6];
|
|
|
|
puVar1 = param_1 + 0x1e;
|
|
|
|
param_1 = param_1 + 0x20;
|
|
|
|
local_18[0x15] = *puVar1;
|
|
|
|
puVar1 = param_2 + 6;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
local_18[0x16] = *puVar1;
|
|
|
|
local_18[0x17] = local_10[6];
|
|
|
|
local_14 = local_14 + 1;
|
|
|
|
local_10 = local_10 + 0x10;
|
|
|
|
local_18 = local_18 + param_5;
|
|
|
|
} while (local_14 < 4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063ec90 at 0x0063EC90 (size: 198) ---
|
|
|
|
|
|
void FUN_0063ec90(int param_1,int param_2,int param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int local_1c;
|
|
|
|
|
|
|
|
uVar4 = param_5[1];
|
|
|
|
param_1 = param_1 + uVar4 * 0x10;
|
|
|
|
param_2 = param_2 + uVar4 * 0x10;
|
|
|
|
param_4 = uVar4 * param_6 + param_4;
|
|
|
|
local_1c = param_3 + uVar4 * 0x10;
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)uVar4 < (int)uVar6) {
|
|
|
|
uVar2 = param_5[2];
|
|
|
|
do {
|
|
|
|
uVar7 = *param_5;
|
|
|
|
if ((int)uVar7 < (int)uVar2) {
|
|
|
|
iVar5 = uVar7 * 3;
|
|
|
|
do {
|
|
|
|
iVar1 = uVar7 * 2;
|
|
|
|
iVar3 = (int)(uVar7 + (0x7fffffff < uVar7)) >> 1;
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
*(undefined1 *)(iVar5 + param_4) = *(undefined1 *)(param_1 + iVar1);
|
|
|
|
*(undefined1 *)(iVar5 + 1 + param_4) = *(undefined1 *)(param_2 + iVar3 * 2);
|
|
|
|
*(undefined1 *)(iVar5 + 2 + param_4) = *(undefined1 *)(local_1c + iVar3 * 2);
|
|
|
|
iVar5 = iVar5 + 3;
|
|
|
|
uVar2 = param_5[2];
|
|
|
|
} while ((int)uVar7 < (int)uVar2);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
local_1c = local_1c + 0x10;
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
} while ((int)uVar4 < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063ed60 at 0x0063ED60 (size: 252) ---
|
|
|
|
|
|
void FUN_0063ed60(undefined1 *param_1,undefined1 *param_2,undefined1 *param_3,undefined1 *param_4,
|
|
|
|
int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 *puVar1;
|
|
|
|
undefined1 *local_18;
|
|
|
|
int local_14;
|
|
|
|
undefined1 *local_10;
|
|
|
|
|
|
|
|
local_14 = 0;
|
|
|
|
local_18 = param_4;
|
|
|
|
local_10 = param_3;
|
|
|
|
do {
|
|
|
|
*local_18 = *param_1;
|
|
|
|
local_18[1] = *param_2;
|
|
|
|
local_18[2] = *local_10;
|
|
|
|
local_18[3] = param_1[2];
|
|
|
|
local_18[4] = *param_2;
|
|
|
|
local_18[5] = *local_10;
|
|
|
|
local_18[6] = param_1[4];
|
|
|
|
local_18[7] = param_2[2];
|
|
|
|
local_18[8] = local_10[2];
|
|
|
|
local_18[9] = param_1[6];
|
|
|
|
local_18[10] = param_2[2];
|
|
|
|
local_18[0xb] = local_10[2];
|
|
|
|
local_18[0xc] = param_1[8];
|
|
|
|
local_18[0xd] = param_2[4];
|
|
|
|
local_18[0xe] = local_10[4];
|
|
|
|
local_18[0xf] = param_1[10];
|
|
|
|
local_18[0x10] = param_2[4];
|
|
|
|
local_18[0x11] = local_10[4];
|
|
|
|
local_18[0x12] = param_1[0xc];
|
|
|
|
local_18[0x13] = param_2[6];
|
|
|
|
local_18[0x14] = local_10[6];
|
|
|
|
puVar1 = param_1 + 0xe;
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
local_18[0x15] = *puVar1;
|
|
|
|
puVar1 = param_2 + 6;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
local_18[0x16] = *puVar1;
|
|
|
|
local_18[0x17] = local_10[6];
|
|
|
|
local_14 = local_14 + 1;
|
|
|
|
local_10 = local_10 + 0x10;
|
|
|
|
local_18 = local_18 + param_5;
|
|
|
|
} while (local_14 < 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063f120 at 0x0063F120 (size: 212) ---
|
|
|
|
|
|
void FUN_0063f120(int param_1,int param_2,int param_3,int param_4,uint *param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
uVar4 = param_5[1];
|
|
|
|
param_1 = param_1 + uVar4 * 0x10;
|
|
|
|
param_2 = param_2 + uVar4 * 0x10;
|
|
|
|
param_4 = uVar4 * param_6 + param_4;
|
|
|
|
local_18 = param_3 + uVar4 * 0x10;
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
if ((int)uVar4 < (int)uVar6) {
|
|
|
|
uVar2 = param_5[2];
|
|
|
|
do {
|
|
|
|
uVar3 = *param_5;
|
|
|
|
if ((int)uVar3 < (int)uVar2) {
|
|
|
|
do {
|
|
|
|
iVar5 = (int)(uVar3 + (0x7fffffff < uVar3)) >> 1;
|
|
|
|
*(undefined1 *)(param_4 + uVar3 * 2) = *(undefined1 *)(param_1 + uVar3 * 2);
|
|
|
|
if ((uVar3 & 1) == 0) {
|
|
|
|
uVar1 = (undefined1)*(undefined2 *)(param_2 + iVar5 * 2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (undefined1)*(undefined2 *)(local_18 + iVar5 * 2);
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_4 + 1 + uVar3 * 2) = uVar1;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
uVar2 = param_5[2];
|
|
|
|
} while ((int)uVar3 < (int)uVar2);
|
|
|
|
uVar6 = param_5[3];
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 0x10;
|
|
|
|
param_2 = param_2 + 0x10;
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
local_18 = local_18 + 0x10;
|
|
|
|
param_4 = param_4 + param_6;
|
|
|
|
} while ((int)uVar4 < (int)uVar6);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063f5a0 at 0x0063F5A0 (size: 126) ---
|
|
|
|
|
|
void FUN_0063f5a0(int param_1,int param_2,int *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
|
|
|
|
iVar6 = param_3[1];
|
|
|
|
iVar3 = param_3[3];
|
|
|
|
param_2 = iVar6 * param_4 + param_2;
|
|
|
|
if (iVar6 < iVar3) {
|
|
|
|
iVar2 = param_3[2];
|
|
|
|
iVar4 = iVar6 << 4;
|
|
|
|
do {
|
|
|
|
iVar5 = *param_3;
|
|
|
|
if (iVar5 < iVar2) {
|
|
|
|
do {
|
|
|
|
sVar1 = *(short *)(param_1 + iVar4 + iVar5 * 2);
|
|
|
|
if (sVar1 < 0x100) {
|
|
|
|
if (sVar1 < 0) {
|
|
|
|
sVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar1 = 0xff;
|
|
|
|
}
|
|
|
|
*(char *)(iVar5 + param_2) = (char)sVar1;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
iVar2 = param_3[2];
|
|
|
|
} while (iVar5 < iVar2);
|
|
|
|
iVar3 = param_3[3];
|
|
|
|
}
|
|
|
|
param_2 = param_2 + param_4;
|
|
|
|
iVar4 = iVar4 + 0x10;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iVar3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0063fc40 at 0x0063FC40 (size: 4784) ---
|
|
|
|
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
|
|
|
|
void FUN_0063fc40(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
short sVar3;
|
|
|
|
short sVar4;
|
|
|
|
short sVar5;
|
|
|
|
short sVar6;
|
|
|
|
int *piVar7;
|
|
|
|
undefined1 uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
undefined1 *puVar11;
|
|
|
|
undefined1 *puVar12;
|
|
|
|
byte bVar13;
|
|
|
|
undefined1 *puVar14;
|
|
|
|
int iVar15;
|
|
|
|
short *psVar16;
|
|
|
|
int iVar17;
|
|
|
|
short *psVar18;
|
|
|
|
int iVar19;
|
|
|
|
int iVar20;
|
|
|
|
int iVar21;
|
|
|
|
undefined1 *puVar22;
|
|
|
|
undefined1 local_5ac [1280];
|
|
|
|
undefined1 local_ac [16];
|
|
|
|
undefined1 *local_9c;
|
|
|
|
int local_98;
|
|
|
|
int local_94;
|
|
|
|
int local_90;
|
|
|
|
int local_8c;
|
|
|
|
int local_88;
|
|
|
|
char local_84;
|
|
|
|
short *local_80;
|
|
|
|
short *local_7c;
|
|
|
|
int local_78;
|
|
|
|
int local_74;
|
|
|
|
int local_70;
|
|
|
|
int local_6c;
|
|
|
|
short *local_68;
|
|
|
|
short *local_64;
|
|
|
|
uint local_60;
|
|
|
|
uint local_5c;
|
|
|
|
int local_58;
|
|
|
|
undefined1 *local_54;
|
|
|
|
uint local_50;
|
|
|
|
int local_4c;
|
|
|
|
undefined1 *local_48;
|
|
|
|
undefined1 *local_44;
|
|
|
|
undefined1 *local_40;
|
|
|
|
int local_3c;
|
|
|
|
int local_38;
|
|
|
|
undefined1 *local_34;
|
|
|
|
int local_30;
|
|
|
|
undefined1 *local_2c;
|
|
|
|
undefined1 *local_28;
|
|
|
|
int local_24;
|
|
|
|
undefined1 *local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
|
|
|
|
if (**(int **)(param_1 + 0x37e0) == 1) {
|
|
|
|
local_94 = *(int *)(param_1 + 0x30);
|
|
|
|
if (local_94 <= *(int *)(param_1 + 0x3820)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar20 = (*(int **)(param_1 + 0x37e0))[0xd];
|
|
|
|
local_90 = *(int *)(param_1 + 0x37b8);
|
|
|
|
iVar9 = local_90 / *(int *)(iVar20 + 4);
|
|
|
|
local_8c = *(int *)(param_1 + 0x37bc);
|
|
|
|
iVar20 = local_8c / *(int *)(iVar20 + 8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = *(int *)(param_1 + 0x37b8);
|
|
|
|
iVar20 = *(int *)(param_1 + 0x37bc);
|
|
|
|
local_94 = *(int *)(param_1 + 0x30);
|
|
|
|
local_90 = iVar9;
|
|
|
|
local_8c = iVar20;
|
|
|
|
}
|
|
|
|
iVar9 = iVar9 * 8;
|
|
|
|
local_80 = *(short **)(param_1 + 0x4834);
|
|
|
|
local_88 = 0;
|
|
|
|
local_68 = (short *)0x0;
|
|
|
|
local_70 = 0;
|
|
|
|
local_7c = (short *)0x0;
|
|
|
|
local_6c = 0;
|
|
|
|
local_78 = 0;
|
|
|
|
local_74 = 0;
|
|
|
|
local_64 = (short *)0x0;
|
|
|
|
local_84 = '\0';
|
|
|
|
if (*(int *)(param_1 + 0x4de8) == 1) {
|
|
|
|
if ((local_90 == 2) && (local_8c == 1)) {
|
|
|
|
local_84 = '\x01';
|
|
|
|
if (*(int *)(param_1 + 0x74) == 0) {
|
|
|
|
local_68 = (short *)0x0;
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37c0) + -1;
|
|
|
|
if (*(int *)(param_1 + 0x37c0) != 0) {
|
|
|
|
iVar17 = iVar10 * 0x10;
|
|
|
|
local_68 = (short *)0x0;
|
|
|
|
local_9c = (undefined1 *)0x0;
|
|
|
|
do {
|
|
|
|
iVar10 = iVar10 + -1;
|
|
|
|
local_68 = (short *)((int)local_68 +
|
|
|
|
*(int *)(iVar17 + 4 + *(int *)(param_1 + 0x37cc)) *
|
|
|
|
*(int *)(iVar17 + 8 + *(int *)(param_1 + 0x37cc)));
|
|
|
|
iVar17 = iVar17 + -0x10;
|
|
|
|
local_98 = iVar9;
|
|
|
|
} while (iVar10 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_68 = (short *)0x1;
|
|
|
|
}
|
|
|
|
local_1c = (int)local_68 * 0x40;
|
|
|
|
local_20 = *(undefined1 **)(param_1 + 0x4dec);
|
|
|
|
local_88 = param_2 * 2 * local_1c + *(int *)(local_20 + 4);
|
|
|
|
local_68 = (short *)((int)local_68 * 0x100 + local_88);
|
|
|
|
}
|
|
|
|
if ((local_90 == 2) && (local_8c == 2)) {
|
|
|
|
local_84 = '\x02';
|
|
|
|
if (*(int *)(param_1 + 0x74) == 0) {
|
|
|
|
iVar17 = 0;
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37c0) + -1;
|
|
|
|
if (*(int *)(param_1 + 0x37c0) != 0) {
|
|
|
|
local_8c = *(int *)(param_1 + 0x37cc);
|
|
|
|
iVar21 = iVar10 * 0x10;
|
|
|
|
do {
|
|
|
|
iVar10 = iVar10 + -1;
|
|
|
|
iVar17 = iVar17 + *(int *)(iVar21 + 4 + local_8c) * *(int *)(iVar21 + 8 + local_8c);
|
|
|
|
iVar21 = iVar21 + -0x10;
|
|
|
|
} while (iVar10 != -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = 1;
|
|
|
|
}
|
|
|
|
piVar7 = *(int **)(param_1 + 0x4dec);
|
|
|
|
local_78 = *piVar7;
|
|
|
|
iVar21 = (param_2 + 1) * iVar17 * 0x80;
|
|
|
|
local_74 = param_2 * 2 * iVar17 * 0x40;
|
|
|
|
local_70 = local_78 + iVar21;
|
|
|
|
local_6c = local_78 + local_74;
|
|
|
|
iVar17 = iVar17 * 0x80 * (param_2 + 2);
|
|
|
|
local_78 = local_78 + iVar17;
|
|
|
|
local_88 = piVar7[1] + local_74;
|
|
|
|
local_68 = (short *)(piVar7[1] + iVar17);
|
|
|
|
iVar10 = piVar7[2];
|
|
|
|
local_74 = local_74 + iVar10;
|
|
|
|
local_7c = (short *)(iVar21 + iVar10);
|
|
|
|
local_64 = (short *)(iVar10 + iVar17);
|
|
|
|
local_9c = (undefined1 *)0x0;
|
|
|
|
local_98 = iVar9;
|
|
|
|
local_18 = iVar20 * 8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar22 = (undefined1 *)0x0;
|
|
|
|
iVar9 = FUN_0062f6a0(param_1 + 4,iVar9,iVar20 * 8,param_2,param_3,local_94,
|
|
|
|
*(undefined4 *)(param_1 + 0x3c),*(undefined4 *)(param_1 + 0x20),
|
|
|
|
*(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x28),
|
|
|
|
param_1 + 0x3814,local_ac);
|
|
|
|
if (iVar9 == 0) {
|
|
|
|
iVar9 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar9 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_8c = *(int *)(param_1 + 0x3814);
|
|
|
|
if (*(int *)(param_1 + 0x3820) == 0) {
|
|
|
|
local_8c = local_8c + 2;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x3820) == 1) {
|
|
|
|
local_8c = local_8c + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8c = *(int *)(param_1 + 0x3814) + *(int *)(param_1 + 0x3820);
|
|
|
|
}
|
|
|
|
local_1c = **(int **)(param_1 + 0x37e0);
|
|
|
|
iVar20 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
while( true ) {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x30);
|
|
|
|
iVar17 = local_1c;
|
|
|
|
if (iVar10 <= local_1c) {
|
|
|
|
iVar17 = iVar10;
|
|
|
|
}
|
|
|
|
if (iVar17 <= iVar20) break;
|
|
|
|
if ((local_1c == 1) && (*(int *)(param_1 + 0x4de0) == 0)) {
|
|
|
|
local_3c = 1;
|
|
|
|
iVar10 = *(int *)(*(int *)(param_1 + 0x37e0) + 0x34);
|
|
|
|
local_30 = 1;
|
|
|
|
iVar9 = *(int *)(local_18 + 4 + iVar10);
|
|
|
|
iVar10 = *(int *)(local_18 + 8 + iVar10);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = *(int *)(*(int *)(param_1 + 0x37e0) + 0x34);
|
|
|
|
iVar10 = *(int *)(local_18 + 8 + iVar9);
|
|
|
|
iVar9 = *(int *)(local_18 + 4 + iVar9);
|
|
|
|
local_3c = iVar10;
|
|
|
|
local_30 = iVar9;
|
|
|
|
}
|
|
|
|
iVar9 = *(int *)(param_1 + 0x37b8) / iVar9;
|
|
|
|
iVar10 = *(int *)(param_1 + 0x37bc) / iVar10;
|
|
|
|
if (local_84 == '\x01') {
|
|
|
|
puVar22 = local_5ac;
|
|
|
|
iVar10 = 0;
|
|
|
|
if (0 < local_30) {
|
|
|
|
do {
|
|
|
|
local_90 = iVar20;
|
|
|
|
local_28 = puVar22 + 0x100;
|
|
|
|
psVar16 = local_68;
|
|
|
|
psVar18 = local_80;
|
|
|
|
local_98 = iVar9;
|
|
|
|
local_24 = iVar10;
|
|
|
|
local_20 = puVar22;
|
|
|
|
do {
|
|
|
|
if (local_98 == 2) {
|
|
|
|
sVar1 = *psVar18;
|
|
|
|
*puVar22 = (char)(*(short *)(local_88 + 0xe) + 1 + sVar1 * 3 >> 2);
|
|
|
|
puVar22[1] = (char)(psVar18[1] + 2 + sVar1 * 3 >> 2);
|
|
|
|
sVar1 = psVar18[1];
|
|
|
|
puVar22[2] = (char)(sVar1 * 3 + 1 + (int)*psVar18 >> 2);
|
|
|
|
puVar22[3] = (char)(sVar1 * 3 + 2 + (int)psVar18[2] >> 2);
|
|
|
|
sVar1 = psVar18[2];
|
|
|
|
puVar22[4] = (char)(sVar1 * 3 + 1 + (int)psVar18[1] >> 2);
|
|
|
|
puVar22[5] = (char)(sVar1 * 3 + 2 + (int)psVar18[3] >> 2);
|
|
|
|
sVar1 = psVar18[3];
|
|
|
|
puVar22[6] = (char)(sVar1 * 3 + 1 + (int)psVar18[2] >> 2);
|
|
|
|
puVar22[7] = (char)(sVar1 * 3 + 2 + (int)psVar18[4] >> 2);
|
|
|
|
sVar1 = psVar18[4];
|
|
|
|
puVar22[8] = (char)(sVar1 * 3 + 1 + (int)psVar18[3] >> 2);
|
|
|
|
puVar22[9] = (char)(sVar1 * 3 + 2 + (int)psVar18[5] >> 2);
|
|
|
|
sVar1 = psVar18[5];
|
|
|
|
puVar22[10] = (char)(sVar1 * 3 + 1 + (int)psVar18[4] >> 2);
|
|
|
|
puVar22[0xb] = (char)(sVar1 * 3 + 2 + (int)psVar18[6] >> 2);
|
|
|
|
sVar1 = psVar18[6];
|
|
|
|
puVar22[0xc] = (char)(sVar1 * 3 + 1 + (int)psVar18[5] >> 2);
|
|
|
|
puVar22[0xd] = (char)(sVar1 * 3 + 2 + (int)psVar18[7] >> 2);
|
|
|
|
sVar1 = psVar18[7];
|
|
|
|
puVar22[0xe] = (char)(psVar18[6] + 1 + sVar1 * 3 >> 2);
|
|
|
|
puVar22[0xf] = (char)(*psVar16 + 2 + sVar1 * 3 >> 2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar22 = (char)*psVar18;
|
|
|
|
puVar22[1] = (char)psVar18[1];
|
|
|
|
puVar22[2] = (char)psVar18[2];
|
|
|
|
puVar22[3] = (char)psVar18[3];
|
|
|
|
puVar22[4] = (char)psVar18[4];
|
|
|
|
puVar22[5] = (char)psVar18[5];
|
|
|
|
puVar22[6] = (char)psVar18[6];
|
|
|
|
puVar22[7] = (char)psVar18[7];
|
|
|
|
}
|
|
|
|
psVar18 = psVar18 + 8;
|
|
|
|
psVar16 = psVar16 + 8;
|
|
|
|
puVar22 = puVar22 + 0x20;
|
|
|
|
local_88 = local_88 + 0x10;
|
|
|
|
} while ((int)puVar22 < (int)local_28);
|
|
|
|
puVar22 = local_20 + local_98 * 8;
|
|
|
|
iVar10 = local_24 + 1;
|
|
|
|
iVar9 = local_98;
|
|
|
|
iVar20 = local_90;
|
|
|
|
local_80 = psVar18;
|
|
|
|
local_68 = psVar16;
|
|
|
|
} while (iVar10 < local_30);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (local_84 == '\x02') {
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < local_3c) {
|
|
|
|
local_4c = iVar10 * 0x100;
|
|
|
|
local_50 = iVar9 * 8;
|
|
|
|
local_54 = (undefined1 *)(iVar10 * 0x20);
|
|
|
|
local_20 = (undefined1 *)(iVar9 + -6);
|
|
|
|
do {
|
|
|
|
puVar14 = (undefined1 *)0x0;
|
|
|
|
puVar22 = local_5ac + local_4c * iVar17;
|
|
|
|
if (0 < local_30) {
|
|
|
|
do {
|
|
|
|
if ((iVar9 == 2) && (iVar10 == 2)) {
|
|
|
|
local_28 = (undefined1 *)0x7;
|
|
|
|
puVar11 = (undefined1 *)0x0;
|
|
|
|
psVar16 = local_7c;
|
|
|
|
do {
|
|
|
|
local_7c = psVar16;
|
|
|
|
local_34 = puVar11;
|
|
|
|
sVar1 = *local_80;
|
|
|
|
sVar2 = local_80[1];
|
|
|
|
if (local_34 == (undefined1 *)0x0) {
|
|
|
|
sVar3 = *(short *)(local_70 + 0x70);
|
|
|
|
sVar4 = *(short *)(local_6c + 0x7e);
|
|
|
|
sVar5 = *(short *)(local_70 + 0x72);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar3 = local_80[-8];
|
|
|
|
sVar4 = *(short *)(local_88 + -2);
|
|
|
|
sVar5 = local_80[-7];
|
|
|
|
}
|
|
|
|
local_5c = (uint)sVar4;
|
|
|
|
local_9c = (undefined1 *)(int)sVar5;
|
|
|
|
if (local_28 == (undefined1 *)0x0) {
|
|
|
|
sVar4 = *local_7c;
|
|
|
|
sVar5 = *(short *)(local_74 + 0xe);
|
|
|
|
sVar6 = local_7c[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar4 = local_80[8];
|
|
|
|
sVar5 = *(short *)(local_88 + 0x1e);
|
|
|
|
sVar6 = local_80[9];
|
|
|
|
}
|
|
|
|
local_48 = (undefined1 *)(sVar4 * 3);
|
|
|
|
local_58 = (int)sVar5;
|
|
|
|
local_60 = (uint)sVar6;
|
|
|
|
iVar19 = *(short *)(local_88 + 0xe) * 3 + sVar1 * 9;
|
|
|
|
local_34[(int)puVar22] = (char)((int)(iVar19 + sVar3 * 3 + 8 + local_5c) >> 4);
|
|
|
|
iVar21 = sVar1 * 9 + sVar2 * 3;
|
|
|
|
(local_34 + 1)[(int)puVar22] =
|
|
|
|
(char)(sVar3 * 3 + iVar21 + 7 + (int)local_9c >> 4);
|
|
|
|
(local_34 + 0x20)[(int)puVar22] =
|
|
|
|
(char)(iVar19 + (int)local_48 + 8 + local_58 >> 4);
|
|
|
|
puVar11 = puVar22 + 2 + (int)local_34;
|
|
|
|
(local_34 + 0x21)[(int)puVar22] =
|
|
|
|
(char)((int)((int)local_48 + iVar21 + 7 + local_60) >> 4);
|
|
|
|
psVar16 = local_80 + 1;
|
|
|
|
psVar18 = local_7c + 1;
|
|
|
|
do {
|
|
|
|
iVar21 = local_70;
|
|
|
|
local_7c = psVar18;
|
|
|
|
local_80 = psVar16;
|
|
|
|
local_70 = iVar21 + 2;
|
|
|
|
sVar1 = *local_80;
|
|
|
|
sVar2 = local_80[1];
|
|
|
|
if (local_34 == (undefined1 *)0x0) {
|
|
|
|
sVar3 = *(short *)(iVar21 + 0x72);
|
|
|
|
sVar4 = *(short *)(iVar21 + 0x70);
|
|
|
|
sVar5 = *(short *)(iVar21 + 0x74);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar3 = local_80[-8];
|
|
|
|
sVar4 = local_80[-9];
|
|
|
|
sVar5 = local_80[-7];
|
|
|
|
}
|
|
|
|
local_5c = (uint)sVar5;
|
|
|
|
local_60 = (uint)sVar4;
|
|
|
|
if (local_28 == (undefined1 *)0x0) {
|
|
|
|
sVar4 = *local_7c;
|
|
|
|
sVar5 = local_7c[-1];
|
|
|
|
sVar6 = local_7c[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar4 = local_80[8];
|
|
|
|
sVar5 = local_80[7];
|
|
|
|
sVar6 = local_80[9];
|
|
|
|
}
|
|
|
|
local_24 = sVar4 * 3;
|
|
|
|
local_58 = (int)sVar6;
|
|
|
|
local_9c = (undefined1 *)(int)sVar5;
|
|
|
|
iVar15 = local_80[-1] * 3 + sVar1 * 9;
|
|
|
|
*puVar11 = (char)((int)(iVar15 + sVar3 * 3 + 8 + local_60) >> 4);
|
|
|
|
iVar19 = sVar1 * 9 + sVar2 * 3;
|
|
|
|
puVar11[1] = (char)((int)(sVar3 * 3 + iVar19 + 7 + local_5c) >> 4);
|
|
|
|
puVar11[0x20] = (char)(iVar15 + local_24 + 8 + (int)local_9c >> 4);
|
|
|
|
puVar11[0x21] = (char)(local_24 + iVar19 + 7 + local_58 >> 4);
|
|
|
|
puVar11 = puVar11 + 2;
|
|
|
|
psVar16 = local_80 + 1;
|
|
|
|
psVar18 = local_7c + 1;
|
|
|
|
} while ((int)puVar11 < (int)(puVar22 + 0xe + (int)local_34));
|
|
|
|
iVar19 = local_80[1] * 9;
|
|
|
|
local_2c = (undefined1 *)(*local_68 * 3);
|
|
|
|
if (local_34 == (undefined1 *)0x0) {
|
|
|
|
sVar1 = *(short *)(iVar21 + 0x74);
|
|
|
|
sVar2 = *(short *)(iVar21 + 0x72);
|
|
|
|
sVar3 = *(short *)(local_78 + 0x70);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar1 = local_80[-7];
|
|
|
|
sVar2 = local_80[-8];
|
|
|
|
sVar3 = local_68[-8];
|
|
|
|
}
|
|
|
|
local_58 = (int)sVar2;
|
|
|
|
local_9c = (undefined1 *)(int)sVar3;
|
|
|
|
local_68 = local_68 + 8;
|
|
|
|
if (local_28 == (undefined1 *)0x0) {
|
|
|
|
sVar2 = local_7c[1];
|
|
|
|
sVar3 = *local_7c;
|
|
|
|
sVar4 = *local_64;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar2 = local_80[9];
|
|
|
|
sVar3 = local_80[8];
|
|
|
|
sVar4 = *local_68;
|
|
|
|
}
|
|
|
|
local_48 = (undefined1 *)(sVar2 * 3);
|
|
|
|
local_5c = (uint)sVar3;
|
|
|
|
local_60 = (uint)sVar4;
|
|
|
|
iVar15 = *local_80 * 3 + iVar19;
|
|
|
|
(local_34 + 0xe)[(int)puVar22] = (char)(iVar15 + sVar1 * 3 + 8 + local_58 >> 4);
|
|
|
|
local_80 = local_80 + 2;
|
|
|
|
(local_34 + 0xf)[(int)puVar22] =
|
|
|
|
(char)((int)(local_2c + iVar19 + sVar1 * 3 + 7 + (int)local_9c) >> 4);
|
|
|
|
(local_34 + 0x2e)[(int)puVar22] =
|
|
|
|
(char)((int)(local_48 + local_5c + iVar15 + 8) >> 4);
|
|
|
|
local_28 = (undefined1 *)((int)local_28 + -1);
|
|
|
|
(local_34 + 0x2f)[(int)puVar22] =
|
|
|
|
(char)((int)(local_2c + iVar19 + (int)(local_48 + local_60 + 7)) >> 4);
|
|
|
|
local_88 = local_88 + 0x10;
|
|
|
|
local_70 = iVar21 + -10;
|
|
|
|
puVar11 = local_34 + 0x40;
|
|
|
|
psVar16 = local_7c + -6;
|
|
|
|
} while (local_28 != (undefined1 *)0xffffffff);
|
|
|
|
puVar11 = puVar22 + 0x10;
|
|
|
|
local_70 = iVar21 + 0x76;
|
|
|
|
local_7c = local_7c + 0x3a;
|
|
|
|
local_6c = local_6c + 0x80;
|
|
|
|
local_78 = local_78 + 0x80;
|
|
|
|
local_74 = local_74 + 0x80;
|
|
|
|
local_64 = local_64 + 0x40;
|
|
|
|
local_28 = (undefined1 *)0xffffffff;
|
|
|
|
local_44 = puVar22;
|
|
|
|
local_40 = puVar14;
|
|
|
|
local_38 = iVar17;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = 0;
|
|
|
|
puVar11 = puVar22;
|
|
|
|
if (0 < local_3c) {
|
|
|
|
puVar22 = (undefined1 *)0x0;
|
|
|
|
do {
|
|
|
|
puVar11 = local_5ac + (int)puVar22;
|
|
|
|
puVar14 = (undefined1 *)0x0;
|
|
|
|
if (0 < local_30) {
|
|
|
|
do {
|
|
|
|
puVar12 = (undefined1 *)0x0;
|
|
|
|
if (0 < local_4c) {
|
|
|
|
do {
|
|
|
|
iVar21 = 0;
|
|
|
|
if (0 < (int)local_50) {
|
|
|
|
do {
|
|
|
|
sVar1 = *local_80;
|
|
|
|
iVar19 = 0;
|
|
|
|
local_80 = local_80 + 1;
|
|
|
|
if (0 < (int)local_54) {
|
|
|
|
do {
|
|
|
|
iVar15 = 0;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
uVar8 = (undefined1)sVar1;
|
|
|
|
if (iVar9 < 6) {
|
|
|
|
local_9c = puVar11 + (int)puVar12 + iVar19 + iVar21;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_9c = puVar11 + (int)puVar12 + iVar19 + iVar21;
|
|
|
|
do {
|
|
|
|
local_9c[iVar15] = uVar8;
|
|
|
|
local_9c[iVar15 + 1] = uVar8;
|
|
|
|
local_9c[iVar15 + 2] = uVar8;
|
|
|
|
local_9c[iVar15 + 3] = uVar8;
|
|
|
|
local_9c[iVar15 + 4] = uVar8;
|
|
|
|
iVar15 = iVar15 + 5;
|
|
|
|
} while (iVar15 <= (int)local_20);
|
|
|
|
}
|
|
|
|
local_60 = (int)sVar1 & 0xff;
|
|
|
|
do {
|
|
|
|
local_9c[iVar15] = uVar8;
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < iVar9);
|
|
|
|
}
|
|
|
|
iVar19 = iVar19 + 0x20;
|
|
|
|
local_5c = (int)sVar1;
|
|
|
|
local_58 = iVar21;
|
|
|
|
} while (iVar19 < (int)local_54);
|
|
|
|
}
|
|
|
|
iVar21 = iVar21 + iVar9;
|
|
|
|
local_48 = puVar12;
|
|
|
|
} while (iVar21 < (int)local_50);
|
|
|
|
}
|
|
|
|
puVar12 = puVar12 + (int)local_54;
|
|
|
|
local_44 = puVar11;
|
|
|
|
local_40 = puVar14;
|
|
|
|
} while ((int)puVar12 < local_4c);
|
|
|
|
}
|
|
|
|
puVar11 = puVar11 + iVar9 * 8;
|
|
|
|
local_70 = local_70 + 0x80;
|
|
|
|
local_88 = local_88 + 0x80;
|
|
|
|
local_68 = local_68 + 0x40;
|
|
|
|
puVar14 = puVar14 + 1;
|
|
|
|
local_7c = local_7c + 0x40;
|
|
|
|
local_6c = local_6c + 0x80;
|
|
|
|
local_78 = local_78 + 0x80;
|
|
|
|
local_74 = local_74 + 0x80;
|
|
|
|
local_64 = local_64 + 0x40;
|
|
|
|
local_38 = iVar17;
|
|
|
|
local_34 = puVar22;
|
|
|
|
} while ((int)puVar14 < local_30);
|
|
|
|
}
|
|
|
|
puVar22 = puVar22 + local_4c;
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
} while (iVar17 < local_3c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar14 = puVar14 + 1;
|
|
|
|
puVar22 = puVar11;
|
|
|
|
} while ((int)puVar14 < local_30);
|
|
|
|
}
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
local_98 = iVar9;
|
|
|
|
local_94 = iVar10;
|
|
|
|
local_90 = iVar20;
|
|
|
|
} while (iVar17 < local_3c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = 0;
|
|
|
|
if (0 < local_3c) {
|
|
|
|
local_48 = (undefined1 *)(iVar10 * 0x100);
|
|
|
|
local_44 = (undefined1 *)(iVar9 * 8);
|
|
|
|
local_94 = iVar10 * 0x20;
|
|
|
|
local_20 = (undefined1 *)(iVar9 + -6);
|
|
|
|
local_40 = (undefined1 *)0x0;
|
|
|
|
puVar22 = (undefined1 *)0x0;
|
|
|
|
do {
|
|
|
|
puVar14 = local_5ac + (int)puVar22;
|
|
|
|
iVar10 = 0;
|
|
|
|
if (0 < local_30) {
|
|
|
|
do {
|
|
|
|
iVar21 = 0;
|
|
|
|
if (0 < (int)local_48) {
|
|
|
|
do {
|
|
|
|
puVar11 = (undefined1 *)0x0;
|
|
|
|
if (0 < (int)local_44) {
|
|
|
|
local_2c = puVar14 + iVar21;
|
|
|
|
do {
|
|
|
|
sVar1 = *local_80;
|
|
|
|
iVar19 = 0;
|
|
|
|
local_80 = local_80 + 1;
|
|
|
|
if (0 < local_94) {
|
|
|
|
local_54 = puVar11 + (int)local_2c;
|
|
|
|
bVar13 = (byte)sVar1;
|
|
|
|
local_50 = (uint)bVar13;
|
|
|
|
do {
|
|
|
|
iVar15 = 0;
|
|
|
|
if (0 < iVar9) {
|
|
|
|
if (5 < iVar9) {
|
|
|
|
do {
|
|
|
|
local_54[iVar15 + iVar19] = bVar13;
|
|
|
|
local_54[iVar15 + iVar19 + 1] = bVar13;
|
|
|
|
local_54[iVar15 + iVar19 + 2] = bVar13;
|
|
|
|
local_54[iVar15 + iVar19 + 3] = bVar13;
|
|
|
|
local_54[iVar15 + iVar19 + 4] = bVar13;
|
|
|
|
iVar15 = iVar15 + 5;
|
|
|
|
} while (iVar15 <= (int)local_20);
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
local_54[iVar15 + iVar19] = bVar13;
|
|
|
|
iVar15 = iVar15 + 1;
|
|
|
|
} while (iVar15 < iVar9);
|
|
|
|
}
|
|
|
|
iVar19 = iVar19 + 0x20;
|
|
|
|
local_28 = puVar11;
|
|
|
|
} while (iVar19 < local_94);
|
|
|
|
}
|
|
|
|
puVar11 = puVar11 + iVar9;
|
|
|
|
local_38 = iVar21;
|
|
|
|
local_34 = puVar14;
|
|
|
|
} while ((int)puVar11 < (int)local_44);
|
|
|
|
}
|
|
|
|
iVar21 = iVar21 + local_94;
|
|
|
|
local_24 = iVar10;
|
|
|
|
} while (iVar21 < (int)local_48);
|
|
|
|
}
|
|
|
|
puVar14 = puVar14 + iVar9 * 8;
|
|
|
|
iVar10 = iVar10 + 1;
|
|
|
|
local_4c = iVar17;
|
|
|
|
local_40 = puVar22;
|
|
|
|
} while (iVar10 < local_30);
|
|
|
|
}
|
|
|
|
puVar22 = puVar22 + (int)local_48;
|
|
|
|
iVar17 = iVar17 + 1;
|
|
|
|
local_98 = iVar9;
|
|
|
|
local_90 = iVar20;
|
|
|
|
} while (iVar17 < local_3c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar22 = local_5ac;
|
|
|
|
FUN_00633140(param_1,local_ac,iVar20,local_8c,puVar22);
|
|
|
|
iVar9 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((iVar9 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
local_8c = local_8c + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8c = local_8c + 1;
|
|
|
|
}
|
|
|
|
local_18 = local_18 + 0x18;
|
|
|
|
iVar20 = iVar20 + 1;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1 + 0x74) != 0) &&
|
|
|
|
(iVar20 = *(int *)(param_1 + 0x54),
|
|
|
|
*(int *)(param_1 + 0x54) + -1 != *(int *)(param_1 + 0x3820))) {
|
|
|
|
iVar20 = iVar10;
|
|
|
|
}
|
|
|
|
if (((iVar9 != 0xff) || (*(int *)(param_1 + 0x58) != 0xff)) &&
|
|
|
|
(iVar9 = local_8c, iVar20 < iVar10)) {
|
|
|
|
do {
|
|
|
|
FUN_00633140(param_1,local_ac,iVar20,iVar9,puVar22);
|
|
|
|
if ((*(int *)(param_1 + 0x34) == 2) && (*(int *)(param_1 + 0x58) == 1)) {
|
|
|
|
iVar9 = iVar9 + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = iVar9 + 1;
|
|
|
|
}
|
|
|
|
iVar20 = iVar20 + 1;
|
|
|
|
} while (iVar20 < *(int *)(param_1 + 0x30));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|