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

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

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

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

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

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;
}