acdream/docs/research/decompiled/chunk_00620000.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

5294 lines
189 KiB
C

// Decompiled from acclient.exe — chunk 0x00620000
// Ghidra 12.0.4 + pyghidra headless
// --- FUN_00620080 at 0x00620080 (size: 565) ---
void FUN_00620080(int param_1,int param_2,int param_3,int param_4,byte param_5,int param_6,
int *param_7,int param_8)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
int aiStack_124 [64];
int local_24;
int local_20;
int local_1c;
int local_18;
local_24 = *param_7;
iVar6 = 0;
for (iVar2 = param_3; iVar2 <= param_4; iVar2 = iVar2 + 1) {
iVar4 = (int)*(short *)(param_2 + (&DAT_00907ee0)[iVar2] * 2);
if (iVar4 < 0) {
iVar4 = -iVar4;
}
iVar4 = iVar4 >> (param_5 & 0x1f);
aiStack_124[iVar2] = iVar4;
if (iVar4 == 1) {
iVar6 = iVar2;
}
}
iVar5 = 0;
iVar3 = 0;
iVar2 = param_6 + local_24;
iVar4 = local_24;
if (param_3 <= param_4) {
local_18 = param_3;
local_20 = iVar6;
do {
iVar6 = local_20;
local_1c = aiStack_124[local_18];
if (aiStack_124[local_18] == 0) {
iVar5 = iVar5 + 1;
}
else {
iVar4 = local_24;
if (0xf < iVar5) {
do {
if (iVar6 < local_18) {
local_24 = iVar4;
goto LAB_006201e7;
}
FUN_0061fc30(param_1,param_8);
if (iVar5 + -0xf < 0x60) {
iVar2 = *(int *)(param_8 + 0x3c0);
}
else {
iVar2 = *(int *)(param_8 + 0x3c0);
do {
iVar2 = iVar2 + 5;
iVar5 = iVar5 + -0x50;
} while (0x6e < iVar5);
}
do {
iVar2 = iVar2 + 1;
iVar5 = iVar5 + -0x10;
} while (0xf < iVar5);
*(int *)(param_8 + 0x3c0) = iVar2;
iVar3 = 0;
iVar2 = param_6;
iVar4 = 0;
} while (0xf < iVar5);
local_24 = 0;
}
LAB_006201e7:
if (local_1c < 2) {
FUN_0061fc30(param_1,param_8);
local_24 = 0;
piVar1 = (int *)(iVar5 * 0x40 + 4 + param_8);
*piVar1 = *piVar1 + 1;
iVar3 = 0;
iVar5 = 0;
iVar2 = param_6;
}
else {
*(byte *)(iVar3 + iVar2) = (byte)local_1c & 1;
iVar3 = iVar3 + 1;
}
}
local_18 = local_18 + 1;
} while (local_18 <= param_4);
if ((0 < iVar5) || (iVar4 = local_24, 0 < iVar3)) {
iVar6 = *(int *)(param_1 + 0x28) + 1;
*(int *)(param_1 + 0x28) = iVar6;
if ((iVar6 == 0x7fff) || (iVar4 = local_24 + iVar3, DAT_00833300 + -0x3f < local_24 + iVar3))
{
FUN_0061fc30(param_1,param_8);
iVar4 = 0;
}
}
}
*param_7 = iVar4;
return;
}
// --- FUN_006202f0 at 0x006202F0 (size: 469) ---
void FUN_006202f0(int param_1,int param_2,int param_3,int param_4,int param_5,byte param_6)
{
undefined2 uVar1;
undefined4 uVar2;
int iVar3;
uint uVar4;
int local_1c;
int local_18;
uint local_14;
local_1c = 0;
if (param_4 <= param_5) {
local_1c = 0;
do {
iVar3 = (int)*(short *)(param_3 + (&DAT_00907ee0)[param_4] * 2);
if (iVar3 == 0) {
local_1c = local_1c + 1;
}
else {
if (iVar3 < 0) {
uVar4 = -iVar3 >> (param_6 & 0x1f);
local_14 = uVar4 ^ 0xffffffff;
}
else {
uVar4 = iVar3 >> (param_6 & 0x1f);
local_14 = uVar4;
}
if (uVar4 == 0) {
local_1c = local_1c + 1;
}
else {
FUN_0061fc90(param_1,param_2);
while (0xf < local_1c) {
FUN_0061fe10(param_1,param_2,&local_1c);
}
local_18 = 1;
while (uVar4 = (int)uVar4 >> 1, uVar4 != 0) {
local_18 = local_18 + 1;
}
iVar3 = local_1c * 0x10 + local_18;
uVar1 = *(undefined2 *)(param_2 + 0x408 + iVar3 * 2);
uVar2 = *(undefined4 *)(param_2 + 8 + iVar3 * 4);
if (*(int *)(param_1 + 0x3c) == 0) {
iVar3 = FUN_0061ed00(param_1,uVar1,uVar2);
}
else {
iVar3 = FUN_0061ede0(param_1,uVar1,uVar2);
}
if (iVar3 != 0) {
return;
}
if (*(int *)(param_1 + 0x3c) == 0) {
iVar3 = FUN_0061ed00(param_1,local_14,local_18);
}
else {
iVar3 = FUN_0061ede0(param_1,local_14,local_18);
}
if (iVar3 != 0) {
return;
}
local_1c = 0;
}
}
param_4 = param_4 + 1;
} while (param_4 <= param_5);
}
if ((0 < local_1c) &&
(iVar3 = *(int *)(param_1 + 0x28) + 1, *(int *)(param_1 + 0x28) = iVar3, iVar3 == 0x7fff)) {
FUN_0061fc90(param_1,param_2);
}
return;
}
// --- FUN_006204f0 at 0x006204F0 (size: 953) ---
void FUN_006204f0(int param_1,int param_2,int param_3,int param_4,int param_5,byte param_6,
int param_7,int *param_8)
{
undefined2 uVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
bool bVar7;
int local_134;
int aiStack_130 [64];
int local_30;
int local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
iVar4 = *param_8;
local_20 = 0;
local_134 = iVar4;
if (param_4 <= param_5) {
local_28 = iVar4;
iVar6 = 0;
iVar3 = param_4;
do {
iVar5 = (int)*(short *)(param_3 + (&DAT_00907ee0)[iVar3] * 2);
if (iVar5 < 0) {
iVar5 = -iVar5;
}
iVar5 = iVar5 >> (param_6 & 0x1f);
aiStack_130[iVar3] = iVar5;
if (iVar5 == 1) {
iVar6 = iVar3;
}
iVar3 = iVar3 + 1;
} while (iVar3 <= param_5);
local_20 = iVar6;
local_134 = local_28;
}
iVar3 = 0;
local_30 = 0;
local_1c = 0;
iVar6 = local_134 + param_7;
local_18 = iVar6;
local_2c = local_1c;
if (param_4 <= param_5) {
local_2c = 0;
local_134 = iVar4;
do {
iVar4 = aiStack_130[param_4];
if (iVar4 == 0) {
local_30 = local_30 + 1;
}
else {
if ((0xf < local_30) && (iVar5 = param_4, param_4 <= local_20)) {
do {
local_24 = iVar5;
local_28 = iVar4;
FUN_0061fc90(param_1,param_2);
FUN_0061fed0(param_1,param_7,&local_134);
local_134 = 0;
FUN_0061fe10(param_1,param_2,&local_30);
FUN_0061fed0(param_1,iVar6,&local_2c);
local_2c = 0;
iVar6 = param_7;
iVar4 = local_28;
iVar5 = local_24;
} while (0xf < local_30);
iVar3 = 0;
param_4 = local_24;
}
if (iVar4 < 2) {
FUN_0061fc90(param_1,param_2);
FUN_0061fed0(param_1,param_7,&local_134);
local_134 = 0;
uVar1 = *(undefined2 *)(param_2 + 0x40a + local_30 * 0x20);
uVar2 = *(undefined4 *)(param_2 + 0xc + local_30 * 0x40);
if (*(int *)(param_1 + 0x3c) == 0) {
iVar4 = FUN_0061ed00(param_1,uVar1,uVar2);
}
else {
iVar4 = FUN_0061ede0(param_1,uVar1,uVar2);
}
if (iVar4 != 0) goto LAB_00620880;
bVar7 = -1 < *(short *)(param_3 + (&DAT_00907ee0)[param_4] * 2);
if (*(int *)(param_1 + 0x3c) == 0) {
iVar4 = FUN_0061ed00(param_1,bVar7,1);
}
else {
iVar4 = FUN_0061ede0(param_1,bVar7,1);
}
if (iVar4 != 0) goto LAB_00620880;
FUN_0061fed0(param_1,iVar6,&local_2c);
iVar3 = 0;
local_2c = 0;
local_30 = 0;
iVar6 = param_7;
}
else {
*(byte *)(iVar6 + iVar3) = (byte)iVar4 & 1;
iVar3 = local_2c + 1;
local_2c = iVar3;
}
}
param_4 = param_4 + 1;
} while (param_4 <= param_5);
}
local_1c = local_2c;
if ((0 < local_30) || (0 < iVar3)) {
iVar4 = *(int *)(param_1 + 0x28) + 1;
local_134 = local_134 + iVar3;
*(int *)(param_1 + 0x28) = iVar4;
if ((iVar4 == 0x7fff) || (DAT_00833300 + -0x3f < local_134)) {
local_2c = local_1c;
FUN_0061fc90(param_1,param_2);
FUN_0061fed0(param_1,param_7,&local_134);
local_134 = 0;
}
}
LAB_00620880:
*param_8 = local_134;
return;
}
// --- FUN_006208d0 at 0x006208D0 (size: 47) ---
uint FUN_006208d0(int param_1,int param_2)
{
uint uVar1;
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) - param_2;
uVar1 = __aullshr();
return uVar1 & (1 << ((byte)param_2 & 0x1f)) - 1U;
}
// --- FUN_00620900 at 0x00620900 (size: 44) ---
uint FUN_00620900(undefined4 param_1,byte param_2)
{
uint uVar1;
uVar1 = __aullshr();
return uVar1 & (1 << (param_2 & 0x1f)) - 1U;
}
// --- FUN_00620930 at 0x00620930 (size: 283) ---
int FUN_00620930(uint *param_1,int param_2)
{
byte bVar1;
byte *pbVar2;
uint uVar3;
int iVar4;
uint uVar5;
byte *pbVar6;
uint uVar7;
uVar7 = param_1[3];
do {
if (0x18 < (int)uVar7) {
return 0;
}
if ((char)param_1[0xc] != '\0') {
LAB_006209ea:
if (param_2 <= (int)uVar7) {
return 0;
}
return 100;
}
uVar7 = param_1[9];
if ((int)uVar7 < 1) {
if (param_1[0xf] == 0) {
return 0;
}
iVar4 = FUN_00649570(param_1);
if (iVar4 != 0) {
return iVar4;
}
uVar7 = param_1[9];
}
pbVar2 = (byte *)param_1[4];
pbVar6 = pbVar2 + 1;
uVar7 = uVar7 - 1;
param_1[4] = (uint)pbVar6;
uVar3 = (uint)*pbVar2;
param_1[9] = uVar7;
uVar5 = param_1[7] + 1;
param_1[7] = uVar5;
if (uVar3 == 0xff) {
do {
if ((int)uVar7 < 1) {
if (param_1[0xf] == 0) {
return -0x15;
}
iVar4 = FUN_00649570(param_1);
if (iVar4 != 0) {
return iVar4;
}
uVar7 = param_1[9];
pbVar6 = (byte *)param_1[4];
uVar5 = param_1[7];
}
bVar1 = *pbVar6;
pbVar6 = pbVar6 + 1;
uVar7 = uVar7 - 1;
param_1[4] = (uint)pbVar6;
uVar5 = uVar5 + 1;
param_1[9] = uVar7;
param_1[7] = uVar5;
} while (bVar1 == 0xff);
if (bVar1 != 0) {
*(byte *)(param_1 + 0xc) = bVar1;
uVar7 = param_1[3];
goto LAB_006209ea;
}
uVar3 = 0xff;
}
uVar5 = *param_1;
*param_1 = uVar5 << 8 | uVar3;
uVar7 = param_1[3] + 8;
param_1[1] = param_1[1] << 8 | uVar5 >> 0x18;
param_1[3] = uVar7;
} while( true );
}
// --- FUN_00620a70 at 0x00620A70 (size: 229) ---
int FUN_00620a70(int param_1,int param_2,uint *param_3,int param_4)
{
ushort uVar1;
uint uVar2;
int iVar3;
uint uVar4;
if (*(int *)(param_1 + 0xc) < param_4) {
iVar3 = FUN_00620930(param_1,param_4);
if (iVar3 != 0) {
return iVar3;
}
}
uVar2 = FUN_006208d0(param_1,param_4);
while( true ) {
uVar1 = *(ushort *)(param_2 + 0x62a + param_4 * 2);
uVar4 = (uint)(short)uVar1;
if (((uVar4 & 0x8000) != 0) && (uVar4 != 0xffffffff)) {
uVar4 = (uint)uVar1;
}
if ((int)uVar2 <= (int)uVar4) break;
if (*(int *)(param_1 + 0xc) < 1) {
iVar3 = FUN_00620930(param_1,1);
if (iVar3 != 0) {
return iVar3;
}
}
uVar4 = FUN_006208d0(param_1,1);
uVar2 = uVar2 * 2 | uVar4;
param_4 = param_4 + 1;
}
if (param_4 < 0x11) {
*param_3 = (uint)*(ushort *)
(param_2 + 0x408 +
(((uint)*(ushort *)(param_2 + 0x64e + param_4 * 2) -
(uint)*(ushort *)(param_2 + 0x608 + param_4 * 2)) + uVar2) * 2);
}
else {
*param_3 = 0;
}
return 0;
}
// --- FUN_00620b60 at 0x00620B60 (size: 155) ---
int FUN_00620b60(int param_1,uint *param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
uint uVar3;
if (*(int *)(param_1 + 0xc) < 8) {
iVar1 = FUN_00620930(param_1,0);
if (iVar1 != 0) {
return iVar1;
}
if (*(int *)(param_1 + 0xc) < 8) {
uVar2 = 1;
goto LAB_00620ba9;
}
}
iVar1 = FUN_00620900(param_1,8);
uVar3 = (uint)*(ushort *)(param_3 + 10 + iVar1 * 4);
if (uVar3 != 0) {
*(uint *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) - uVar3;
*param_2 = (uint)*(ushort *)(param_3 + 8 + iVar1 * 4);
return 0;
}
uVar2 = 9;
LAB_00620ba9:
iVar1 = FUN_00620a70(param_1,param_3,param_2,uVar2);
if (iVar1 == 0) {
return 0;
}
return iVar1;
}
// --- FUN_00621030 at 0x00621030 (size: 218) ---
int FUN_00621030(int param_1,undefined4 param_2,undefined2 *param_3,short *param_4,byte param_5)
{
int iVar1;
uint uVar2;
short sVar3;
uint local_14;
local_14 = 0;
iVar1 = FUN_00620b60(param_1,&local_14,param_2);
if (iVar1 != 0) {
if (iVar1 < 0) {
return iVar1;
}
return 0;
}
if (local_14 == 0) {
sVar3 = *param_4;
}
else {
local_14 = local_14 & 0xf;
if (*(int *)(param_1 + 0xc) < (int)local_14) {
iVar1 = FUN_00620930(param_1,local_14);
if (iVar1 != 0) {
if (iVar1 < 0) {
return iVar1;
}
return 0;
}
}
uVar2 = FUN_006208d0(param_1,local_14);
if ((1 << ((char)local_14 - 1U & 0x1f) & uVar2) == 0) {
uVar2 = uVar2 + *(int *)(&DAT_009080c0 + local_14 * 4);
}
sVar3 = *param_4 + (short)uVar2;
*param_4 = sVar3;
}
*param_3 = (short)((int)sVar3 << (param_5 & 0x1f));
return 0;
}
// --- FUN_00621110 at 0x00621110 (size: 103) ---
int FUN_00621110(int param_1,ushort *param_2,byte param_3)
{
int iVar1;
if (*(int *)(param_1 + 0xc) < 1) {
iVar1 = FUN_00620930(param_1,1);
if (iVar1 != 0) {
if (-1 < iVar1) {
return 0;
}
return iVar1;
}
}
iVar1 = FUN_006208d0(param_1,1);
if (iVar1 != 0) {
*param_2 = *param_2 | (ushort)(1 << (param_3 & 0x1f));
}
return 0;
}
// --- FUN_00621180 at 0x00621180 (size: 392) ---
ulonglong FUN_00621180(int param_1,uint param_2,undefined4 param_3,int param_4,int param_5,
byte param_6)
{
uint uVar1;
int iVar2;
uint uVar3;
int iVar4;
ulonglong uVar5;
uint local_14;
uVar3 = param_2;
if (*(int *)(param_1 + 0x28) < 1) {
for (; param_4 <= param_5; param_4 = param_4 + 1) {
uVar5 = FUN_00620b60(param_1,&local_14,param_3);
if ((int)uVar5 != 0) {
if ((int)uVar5 < 0) {
return uVar5;
}
return uVar5 & 0xffffffff00000000;
}
iVar4 = (int)local_14 >> 4;
local_14 = local_14 & 0xf;
if (local_14 == 0) {
if (iVar4 != 0xf) {
iVar2 = 1 << ((byte)iVar4 & 0x1f);
uVar3 = 0;
if (iVar4 != 0) {
*(int *)(param_1 + 0x28) = iVar2;
if (*(int *)(param_1 + 0xc) < iVar4) {
uVar5 = FUN_00620930(param_1,iVar4);
if ((int)uVar5 != 0) {
if ((int)uVar5 < 0) {
return uVar5;
}
return uVar5 & 0xffffffff00000000;
}
}
iVar2 = FUN_006208d0(param_1,iVar4);
uVar3 = *(uint *)(param_1 + 0x28);
iVar2 = iVar2 + uVar3;
}
*(int *)(param_1 + 0x28) = iVar2 + -1;
break;
}
param_4 = param_4 + 0xf;
uVar3 = 0;
}
else {
param_4 = param_4 + iVar4;
if (*(int *)(param_1 + 0xc) < (int)local_14) {
uVar5 = FUN_00620930(param_1,local_14);
if ((int)uVar5 != 0) {
if ((int)uVar5 < 0) {
return uVar5;
}
return uVar5 & 0xffffffff00000000;
}
}
uVar1 = FUN_006208d0(param_1,local_14);
if ((1 << ((char)local_14 - 1U & 0x1f) & uVar1) == 0) {
uVar3 = *(int *)(&DAT_009080c0 + local_14 * 4) + uVar1 << (param_6 & 0x1f);
*(short *)(param_2 + (&DAT_00907ee0)[param_4] * 2) = (short)uVar3;
}
else {
uVar3 = (&DAT_00907ee0)[param_4];
*(short *)(param_2 + uVar3 * 2) = (short)(uVar1 << (param_6 & 0x1f));
}
}
}
}
else {
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + -1;
}
return (ulonglong)uVar3 << 0x20;
}
// --- FUN_00621330 at 0x00621330 (size: 743) ---
int FUN_00621330(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,byte param_6)
{
short sVar1;
int iVar2;
int iVar3;
int iVar4;
uint local_1c;
uint local_18;
uint local_14;
local_18 = 1 << (param_6 & 0x1f);
iVar2 = *(int *)(param_1 + 0x28);
local_14 = -1 << (param_6 & 0x1f);
if ((iVar2 == 0) && (param_4 <= param_5)) {
do {
iVar2 = FUN_00620b60(param_1,&local_1c,param_3);
if (iVar2 != 0) {
if (iVar2 < 0) {
return iVar2;
}
return 0;
}
iVar4 = (int)local_1c >> 4;
local_1c = local_1c & 0xf;
if (local_1c == 0) {
if (iVar4 != 0xf) {
iVar2 = 1 << ((byte)iVar4 & 0x1f);
*(int *)(param_1 + 0x28) = iVar2;
if (iVar4 != 0) {
if (*(int *)(param_1 + 0xc) < iVar4) {
iVar2 = FUN_00620930(param_1,iVar4);
if (iVar2 != 0) {
if (iVar2 < 0) {
return iVar2;
}
return 0;
}
}
iVar2 = FUN_006208d0(param_1,iVar4);
iVar2 = iVar2 + *(int *)(param_1 + 0x28);
*(int *)(param_1 + 0x28) = iVar2;
}
goto LAB_006214bd;
}
}
else {
if (*(int *)(param_1 + 0xc) < 1) {
iVar2 = FUN_00620930(param_1,1);
if (iVar2 != 0) {
if (iVar2 < 0) {
return iVar2;
}
return 0;
}
}
iVar2 = FUN_006208d0(param_1,1);
if (iVar2 == 0) {
local_1c = local_14;
}
else {
local_1c = local_18;
}
}
do {
iVar2 = (&DAT_00907ee0)[param_4];
if (*(short *)(param_2 + iVar2 * 2) == 0) {
iVar4 = iVar4 + -1;
if (iVar4 < 0) break;
}
else {
if (*(int *)(param_1 + 0xc) < 1) {
iVar3 = FUN_00620930(param_1,1);
if (iVar3 != 0) {
if (iVar3 < 0) {
return iVar3;
}
return 0;
}
}
iVar3 = FUN_006208d0(param_1,1);
if (iVar3 != 0) {
sVar1 = *(short *)(param_2 + iVar2 * 2);
if (((int)sVar1 & local_18) == 0) {
if (sVar1 < 0) {
*(short *)(param_2 + iVar2 * 2) = sVar1 + (short)local_14;
}
else {
*(short *)(param_2 + iVar2 * 2) = sVar1 + (short)local_18;
}
}
}
}
param_4 = param_4 + 1;
} while (param_4 <= param_5);
if (local_1c != 0) {
*(short *)(param_2 + (&DAT_00907ee0)[param_4] * 2) = (short)local_1c;
}
param_4 = param_4 + 1;
} while (param_4 <= param_5);
iVar2 = *(int *)(param_1 + 0x28);
}
LAB_006214bd:
if (0 < iVar2) {
if (param_4 <= param_5) {
do {
iVar2 = (&DAT_00907ee0)[param_4];
if (*(short *)(param_2 + iVar2 * 2) != 0) {
if (*(int *)(param_1 + 0xc) < 1) {
iVar4 = FUN_00620930(param_1,1);
if (iVar4 != 0) {
if (iVar4 < 0) {
return iVar4;
}
return 0;
}
}
iVar4 = FUN_006208d0(param_1,1);
if (iVar4 != 0) {
sVar1 = *(short *)(param_2 + iVar2 * 2);
if (((int)sVar1 & local_18) == 0) {
if (sVar1 < 0) {
*(short *)(param_2 + iVar2 * 2) = sVar1 + (short)local_14;
}
else {
*(short *)(param_2 + iVar2 * 2) = sVar1 + (short)local_18;
}
}
}
}
param_4 = param_4 + 1;
} while (param_4 <= param_5);
iVar2 = *(int *)(param_1 + 0x28);
}
*(int *)(param_1 + 0x28) = iVar2 + -1;
}
return 0;
}
// --- FUN_00621640 at 0x00621640 (size: 264) ---
void FUN_00621640(int param_1)
{
int iVar1;
undefined2 local_84 [64];
iVar1 = 0;
do {
local_84[(&DAT_00907ee0)[iVar1]] = *(undefined2 *)(param_1 + iVar1 * 2);
local_84[(&DAT_00907ee4)[iVar1]] = *(undefined2 *)(param_1 + 2 + iVar1 * 2);
local_84[(&DAT_00907ee8)[iVar1]] = *(undefined2 *)(param_1 + 4 + iVar1 * 2);
local_84[(&DAT_00907eec)[iVar1]] = *(undefined2 *)(param_1 + 6 + iVar1 * 2);
iVar1 = iVar1 + 4;
} while (iVar1 < 0x40);
iVar1 = 0;
do {
*(undefined2 *)(param_1 + iVar1 * 2) = local_84[iVar1];
*(undefined2 *)(param_1 + 2 + iVar1 * 2) = local_84[iVar1 + 1];
*(undefined2 *)(param_1 + 4 + iVar1 * 2) = local_84[iVar1 + 2];
*(undefined2 *)(param_1 + 6 + iVar1 * 2) = local_84[iVar1 + 3];
iVar1 = iVar1 + 4;
} while (iVar1 < 0x40);
*(undefined2 *)(param_1 + 0x80) = 0;
*(undefined2 *)(param_1 + 0x82) = 0;
*(undefined2 *)(param_1 + 0x84) = 0;
*(undefined2 *)(param_1 + 0x86) = 0;
*(undefined2 *)(param_1 + 0x88) = 0;
*(undefined2 *)(param_1 + 0x8a) = 0;
*(undefined2 *)(param_1 + 0x8c) = 0;
*(undefined2 *)(param_1 + 0x8e) = 0;
*(undefined2 *)(param_1 + 0x90) = 0;
*(undefined2 *)(param_1 + 0x92) = 0;
*(undefined2 *)(param_1 + 0x94) = 0;
*(undefined2 *)(param_1 + 0x96) = 0;
*(undefined2 *)(param_1 + 0x98) = 0;
*(undefined2 *)(param_1 + 0x9a) = 0;
*(undefined2 *)(param_1 + 0x9c) = 0;
*(undefined2 *)(param_1 + 0x9e) = 0;
return;
}
// --- FUN_00622940 at 0x00622940 (size: 35) ---
void FUN_00622940(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00654b90(param_1,param_2,param_3);
return;
}
// --- FUN_00622970 at 0x00622970 (size: 35) ---
void FUN_00622970(undefined4 param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00654e10(param_1,param_2,param_3);
return;
}
// --- FUN_006229a0 at 0x006229A0 (size: 107) ---
int FUN_006229a0(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
int aiStack_14 [2];
iVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x5c))(0,0,param_1);
if ((iVar1 == 0) && (*(int *)(param_1 + 0x3c) != 0)) {
iVar3 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14);
iVar2 = FUN_00619550(*(int *)(param_1 + 0x3c),param_1 + 0x40,iVar3,aiStack_14);
if ((iVar2 == 0) || (iVar3 != aiStack_14[0])) {
iVar1 = -0x17;
}
else {
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_1 + 0x14);
}
}
return iVar1;
}
// --- FUN_00622a10 at 0x00622A10 (size: 86) ---
undefined4 FUN_00622a10(int param_1)
{
int iVar1;
int iVar2;
int local_c;
iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14);
iVar1 = FUN_00619550(*(undefined4 *)(param_1 + 0x3c),param_1 + 0x40,iVar2,&local_c);
if ((iVar1 != 0) && (iVar2 == local_c)) {
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x14);
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x20);
return 0;
}
return 0xffffffe9;
}
// --- FUN_00622a70 at 0x00622A70 (size: 1723) ---
undefined4 FUN_00622a70(int param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
iVar1 = *(int *)(param_1 + 0x37f0);
uVar2 = 0;
if (*(int *)(param_1 + 0x74) == 0) {
iVar4 = *(int *)(param_1 + 0x6c);
if ((iVar4 == 0) || (*(int *)(param_1 + 0x68) == 0)) {
if ((iVar4 == 0) || (*(int *)(param_1 + 0x68) != 0)) {
if ((iVar4 == 0) && (*(int *)(param_1 + 0x68) != 0)) {
iVar4 = *(int *)(param_1 + 0x37c0);
if ((iVar4 == 1) && (*(int *)(param_1 + 0x30) == 3)) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062e490;
return uVar2;
}
if ((iVar4 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
if (*(int *)(param_1 + 0x34) == 1) {
*(undefined4 *)(param_1 + 0x18) = 1;
*(undefined1 **)(iVar1 + 0x60) = &LAB_006239b0;
return uVar2;
}
if (*(int *)(param_1 + 0x34) == 2) {
*(undefined4 *)(param_1 + 0x18) = 2;
*(undefined1 **)(iVar1 + 0x60) = &LAB_00624350;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
if ((iVar4 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062d510;
return uVar2;
}
if (iVar4 != 4) {
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
if (*(int *)(param_1 + 0x30) == 4) {
if (*(int *)(param_1 + 0x34) == 5) {
*(undefined4 *)(param_1 + 0x18) = 10;
*(undefined1 **)(iVar1 + 0x60) = &LAB_006287d0;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
if (*(int *)(param_1 + 0x68) != 0) {
*(undefined4 *)(param_1 + 0x18) = 0;
return uVar2;
}
iVar4 = *(int *)(param_1 + 0x37c0);
if (((iVar4 == 1) && (*(int *)(param_1 + 0x34) == 4)) && (*(int *)(param_1 + 0x58) == 4)) {
*(undefined4 *)(param_1 + 0x18) = 0x14;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062d420;
return uVar2;
}
if (((iVar4 == 3) && (*(int *)(param_1 + 0x30) == 1)) && (*(int *)(param_1 + 0x58) == 3)) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062f380;
return uVar2;
}
if ((iVar4 == 3) && (*(int *)(param_1 + 0x30) == 3)) {
if (*(int *)(param_1 + 0x34) == 2) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062f380;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0xf;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062b190;
return uVar2;
}
if ((iVar4 == 3) && (*(int *)(param_1 + 0x30) == 4)) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062f380;
return uVar2;
}
if (iVar4 == 4) {
*(undefined4 *)(param_1 + 0x18) = 0xe;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062aba0;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0;
if ((*(int *)(param_1 + 0x58) == 0xff) && (*(int *)(param_1 + 0x34) == 0xff)) {
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062f380;
return uVar2;
}
}
else {
*(undefined4 *)(param_1 + 0x18) = 0;
if ((*(int *)(param_1 + 0x37c0) == 3) && (*(int *)(param_1 + 0x30) == 1)) {
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062ebb0;
return uVar2;
}
if (((*(int *)(param_1 + 0x37c0) != 3) || (*(int *)(param_1 + 0x30) != 3)) ||
(*(int *)(param_1 + 0x34) == 2)) {
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062ebb0;
return uVar2;
}
iVar4 = *(int *)(param_1 + 0x37cc);
iVar3 = *(int *)(iVar4 + 4);
if ((((iVar3 == 2) && (*(int *)(iVar4 + 8) == 2)) &&
((*(int *)(iVar4 + 0x14) == 1 &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))))) &&
(*(int *)(iVar4 + 0x28) == 1)) {
*(undefined4 *)(param_1 + 0x18) = 0x10;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062bd10;
iVar4 = *(int *)(param_1 + 0x37cc);
iVar3 = *(int *)(iVar4 + 4);
}
if (((((iVar3 == 2) && (*(int *)(iVar4 + 8) == 1)) && (*(int *)(iVar4 + 0x14) == 1)) &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))) &&
(*(int *)(iVar4 + 0x28) == 1)) {
if (*(int *)(param_1 + 0x38) == 2) {
*(undefined4 *)(param_1 + 0x18) = 0x12;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062ce00;
return uVar2;
}
*(undefined4 *)(param_1 + 0x18) = 0x11;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062c510;
return uVar2;
}
}
}
else {
*(undefined4 *)(param_1 + 0x18) = 0;
iVar4 = *(int *)(param_1 + 0x37c0);
if ((iVar4 < 1) || (0xff < iVar4)) {
return 0xfffffff2;
}
if (iVar4 == 3) {
iVar4 = *(int *)(param_1 + 0x34);
if ((iVar4 == 1) && (*(int *)(param_1 + 0x30) == 3)) {
iVar4 = *(int *)(param_1 + 0x37cc);
if (((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 2)) &&
((*(int *)(iVar4 + 0x14) == 1 &&
(((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)) &&
(*(int *)(iVar4 + 0x28) == 1)))))) {
*(undefined4 *)(param_1 + 0x18) = 3;
*(undefined1 **)(iVar1 + 0x60) = &LAB_006254e0;
return uVar2;
}
if (((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 1)) &&
(((*(int *)(iVar4 + 0x14) == 1 &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))) &&
(*(int *)(iVar4 + 0x28) == 1)))) {
*(undefined4 *)(param_1 + 0x18) = 5;
*(undefined1 **)(iVar1 + 0x60) = &LAB_00627250;
return uVar2;
}
}
else if ((iVar4 == 1) && (*(int *)(param_1 + 0x30) == 4)) {
iVar4 = *(int *)(param_1 + 0x37cc);
if (((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 2)) &&
(((*(int *)(iVar4 + 0x14) == 1 &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))) &&
(*(int *)(iVar4 + 0x28) == 1)))) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062d510;
return uVar2;
}
if (((((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 1)) &&
(*(int *)(iVar4 + 0x14) == 1)) &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))) &&
(*(int *)(iVar4 + 0x28) == 1)) {
*(undefined4 *)(param_1 + 0x18) = 0;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062d510;
return uVar2;
}
}
else if ((iVar4 == 2) && (*(int *)(param_1 + 0x30) == 3)) {
iVar4 = *(int *)(param_1 + 0x37cc);
if ((*(int *)(iVar4 + 4) == 2) &&
((((*(int *)(iVar4 + 8) == 2 && (*(int *)(iVar4 + 0x14) == 1)) &&
(*(int *)(iVar4 + 0x18) == 1)) &&
((*(int *)(iVar4 + 0x24) == 1 && (*(int *)(iVar4 + 0x28) == 1)))))) {
*(undefined4 *)(param_1 + 0x18) = 4;
*(undefined1 **)(iVar1 + 0x60) = &LAB_00626660;
return uVar2;
}
if (((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 1)) &&
((*(int *)(iVar4 + 0x14) == 1 &&
(((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)) &&
(*(int *)(iVar4 + 0x28) == 1)))))) {
*(undefined4 *)(param_1 + 0x18) = 6;
*(undefined1 **)(iVar1 + 0x60) = &LAB_00627e50;
return uVar2;
}
}
}
else if (((iVar4 == 4) && (*(int *)(param_1 + 0x34) == 5)) && (*(int *)(param_1 + 0x30) == 4))
{
iVar4 = *(int *)(param_1 + 0x37cc);
if (((((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 2)) &&
((*(int *)(iVar4 + 0x14) == 1 &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))))) &&
(*(int *)(iVar4 + 0x28) == 1)) &&
((*(int *)(iVar4 + 0x34) == 2 && (*(int *)(iVar4 + 0x38) == 2)))) {
*(undefined4 *)(param_1 + 0x18) = 0xb;
*(undefined1 **)(iVar1 + 0x60) = &LAB_0062a730;
return uVar2;
}
if ((((((*(int *)(iVar4 + 4) == 2) && (*(int *)(iVar4 + 8) == 1)) &&
(*(int *)(iVar4 + 0x14) == 1)) &&
((*(int *)(iVar4 + 0x18) == 1 && (*(int *)(iVar4 + 0x24) == 1)))) &&
(*(int *)(iVar4 + 0x28) == 1)) &&
((*(int *)(iVar4 + 0x34) == 2 && (*(int *)(iVar4 + 0x38) == 1)))) {
*(undefined4 *)(param_1 + 0x18) = 0xc;
*(undefined1 **)(iVar1 + 0x60) = &LAB_00629430;
return uVar2;
}
}
}
}
else {
*(undefined4 *)(param_1 + 0x18) = 0;
}
return uVar2;
}
// --- FUN_00623130 at 0x00623130 (size: 1125) ---
void FUN_00623130(int param_1,int param_2,int param_3,int param_4,int param_5)
{
uint uVar1;
undefined2 *puVar2;
int iVar3;
uint uVar4;
uint uVar5;
int iVar6;
int iVar7;
undefined2 local_1c2;
undefined2 local_1c0 [202];
int local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
undefined2 *local_14;
iVar3 = 0;
if (0 < param_4) {
local_1c = 0;
local_20 = 0;
local_28 = 0;
local_14 = local_1c0;
do {
local_18 = 0;
if (0 < param_3) {
local_18 = 0;
local_24 = iVar3;
iVar6 = local_20;
iVar7 = local_1c;
do {
uVar4 = (uint)*(byte *)(iVar7 + param_1);
uVar5 = (uint)*(byte *)(iVar7 + 1 + param_1);
uVar1 = (uint)*(byte *)(iVar7 + 2 + param_1);
iVar7 = iVar7 + 3;
local_1c0[iVar6] = (short)(uVar4 * 0x4d + uVar5 * 0x96 + -0x7f80 + uVar1 * 0x1d >> 8);
local_1c0[iVar6 + 0x40] =
(short)(uVar4 * -0x2b + uVar5 * -0x55 + 0x80 + uVar1 * 0x80 >> 8);
local_1c0[iVar6 + 0x80] =
(short)(uVar4 * 0x80 + uVar5 * -0x6b + 0x80 + uVar1 * -0x15 >> 8);
iVar6 = iVar6 + 1;
local_18 = local_18 + 1;
} while (local_18 < param_3);
}
if (local_18 < 8) {
local_2c = (int)local_1c0 + local_28;
puVar2 = local_1c0 + local_18 + local_20;
local_24 = iVar3;
do {
local_18 = local_18 + 1;
*puVar2 = *(undefined2 *)((int)&local_1c2 + param_3 * 2 + local_28);
puVar2[0x40] = *(undefined2 *)((int)local_1c0 + param_3 * 2 + local_28 + 0x7e);
puVar2[0x80] = *(undefined2 *)((int)local_1c0 + param_3 * 2 + local_28 + 0xfe);
puVar2 = puVar2 + 1;
} while (local_18 < 8);
}
local_1c = local_1c + param_2;
local_20 = local_20 + 8;
local_28 = local_28 + 0x10;
iVar3 = iVar3 + 1;
} while (iVar3 < param_4);
}
if (iVar3 < 8) {
puVar2 = local_1c0 + iVar3 * 8;
do {
*puVar2 = puVar2[-8];
puVar2[0x40] = puVar2[0x38];
iVar3 = iVar3 + 1;
puVar2[0x80] = puVar2[0x78];
puVar2[1] = puVar2[-7];
puVar2[0x41] = puVar2[0x39];
puVar2[0x81] = puVar2[0x79];
puVar2[2] = puVar2[-6];
puVar2[0x42] = puVar2[0x3a];
puVar2[0x82] = puVar2[0x7a];
puVar2[3] = puVar2[-5];
puVar2[0x43] = puVar2[0x3b];
puVar2[0x83] = puVar2[0x7b];
puVar2[4] = puVar2[-4];
puVar2[0x44] = puVar2[0x3c];
puVar2[0x84] = puVar2[0x7c];
puVar2[5] = puVar2[-3];
puVar2[0x45] = puVar2[0x3d];
puVar2[0x85] = puVar2[0x7d];
puVar2[6] = puVar2[-2];
puVar2[0x46] = puVar2[0x3e];
puVar2[0x86] = puVar2[0x7e];
puVar2[7] = puVar2[-1];
puVar2[0x47] = puVar2[0x3f];
puVar2[0x87] = puVar2[0x7f];
puVar2 = puVar2 + 8;
} while (iVar3 < 8);
}
iVar3 = 0;
do {
*(undefined2 *)(param_5 + iVar3 * 2) = local_1c0[iVar3];
*(undefined2 *)(param_5 + 0x80 + iVar3 * 2) = local_1c0[iVar3 + 0x40];
*(undefined2 *)(param_5 + 0x100 + iVar3 * 2) = local_1c0[iVar3 + 0x80];
*(undefined2 *)(param_5 + 2 + iVar3 * 2) = local_1c0[iVar3 + 1];
*(undefined2 *)(param_5 + 0x82 + iVar3 * 2) = local_1c0[iVar3 + 0x41];
*(undefined2 *)(param_5 + 0x102 + iVar3 * 2) = local_1c0[iVar3 + 0x81];
*(undefined2 *)(param_5 + 4 + iVar3 * 2) = local_1c0[iVar3 + 2];
*(undefined2 *)(param_5 + 0x84 + iVar3 * 2) = local_1c0[iVar3 + 0x42];
*(undefined2 *)(param_5 + 0x104 + iVar3 * 2) = local_1c0[iVar3 + 0x82];
*(undefined2 *)(param_5 + 6 + iVar3 * 2) = local_1c0[iVar3 + 3];
*(undefined2 *)(param_5 + 0x86 + iVar3 * 2) = local_1c0[iVar3 + 0x43];
*(undefined2 *)(param_5 + 0x106 + iVar3 * 2) = local_1c0[iVar3 + 0x83];
*(undefined2 *)(param_5 + 8 + iVar3 * 2) = local_1c0[iVar3 + 4];
*(undefined2 *)(param_5 + 0x88 + iVar3 * 2) = local_1c0[iVar3 + 0x44];
*(undefined2 *)(param_5 + 0x108 + iVar3 * 2) = local_1c0[iVar3 + 0x84];
*(undefined2 *)(param_5 + 10 + iVar3 * 2) = local_1c0[iVar3 + 5];
*(undefined2 *)(param_5 + 0x8a + iVar3 * 2) = local_1c0[iVar3 + 0x45];
*(undefined2 *)(param_5 + 0x10a + iVar3 * 2) = local_1c0[iVar3 + 0x85];
*(undefined2 *)(param_5 + 0xc + iVar3 * 2) = local_1c0[iVar3 + 6];
*(undefined2 *)(param_5 + 0x8c + iVar3 * 2) = local_1c0[iVar3 + 0x46];
*(undefined2 *)(param_5 + 0x10c + iVar3 * 2) = local_1c0[iVar3 + 0x86];
*(undefined2 *)(param_5 + 0xe + iVar3 * 2) = local_1c0[iVar3 + 7];
*(undefined2 *)(param_5 + 0x8e + iVar3 * 2) = local_1c0[iVar3 + 0x47];
*(undefined2 *)(param_5 + 0x10e + iVar3 * 2) = local_1c0[iVar3 + 0x87];
iVar3 = iVar3 + 8;
} while (iVar3 < 0x40);
return;
}
// --- FUN_00623ac0 at 0x00623AC0 (size: 1141) ---
void FUN_00623ac0(int param_1,int param_2,int param_3,int param_4,int param_5)
{
uint uVar1;
undefined2 *puVar2;
int iVar3;
uint uVar4;
uint uVar5;
int iVar6;
int iVar7;
undefined2 local_1c2;
undefined2 local_1c0 [202];
int local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
undefined2 *local_14;
iVar3 = 0;
if (0 < param_4) {
local_1c = 0;
local_20 = 0;
local_28 = 0;
local_14 = local_1c0;
do {
local_18 = 0;
if (0 < param_3) {
local_18 = 0;
local_24 = iVar3;
iVar6 = local_20;
iVar7 = local_1c;
do {
uVar4 = (uint)*(byte *)(iVar7 + param_1);
uVar5 = (uint)*(byte *)(iVar7 + 1 + param_1);
uVar1 = (uint)*(byte *)(iVar7 + 2 + param_1);
iVar7 = iVar7 + 3;
local_1c0[iVar6] = (short)(uVar4 * 0x1d + uVar5 * 0x96 + -0x7f80 + uVar1 * 0x4d >> 8);
local_1c0[iVar6 + 0x40] =
(short)(uVar4 * 0x80 + uVar5 * -0x55 + 0x80 + uVar1 * -0x2b >> 8);
local_1c0[iVar6 + 0x80] =
(short)(uVar4 * -0x15 + uVar5 * -0x6b + 0x80 + uVar1 * 0x80 >> 8);
iVar6 = iVar6 + 1;
local_18 = local_18 + 1;
} while (local_18 < param_3);
}
if (local_18 < 8) {
local_2c = (int)local_1c0 + local_28;
puVar2 = local_1c0 + local_18 + local_20;
local_24 = iVar3;
do {
local_18 = local_18 + 1;
*puVar2 = *(undefined2 *)((int)&local_1c2 + param_3 * 2 + local_28);
puVar2[0x40] = *(undefined2 *)((int)local_1c0 + param_3 * 2 + local_28 + 0x7e);
puVar2[0x80] = *(undefined2 *)((int)local_1c0 + param_3 * 2 + local_28 + 0xfe);
puVar2 = puVar2 + 1;
} while (local_18 < 8);
}
local_1c = local_1c + param_2;
local_20 = local_20 + 8;
local_28 = local_28 + 0x10;
iVar3 = iVar3 + 1;
} while (iVar3 < param_4);
}
if (iVar3 < 8) {
puVar2 = local_1c0 + iVar3 * 8;
do {
*puVar2 = puVar2[-8];
puVar2[0x40] = puVar2[0x38];
iVar3 = iVar3 + 1;
puVar2[0x80] = puVar2[0x78];
puVar2[1] = puVar2[-7];
puVar2[0x41] = puVar2[0x39];
puVar2[0x81] = puVar2[0x79];
puVar2[2] = puVar2[-6];
puVar2[0x42] = puVar2[0x3a];
puVar2[0x82] = puVar2[0x7a];
puVar2[3] = puVar2[-5];
puVar2[0x43] = puVar2[0x3b];
puVar2[0x83] = puVar2[0x7b];
puVar2[4] = puVar2[-4];
puVar2[0x44] = puVar2[0x3c];
puVar2[0x84] = puVar2[0x7c];
puVar2[5] = puVar2[-3];
puVar2[0x45] = puVar2[0x3d];
puVar2[0x85] = puVar2[0x7d];
puVar2[6] = puVar2[-2];
puVar2[0x46] = puVar2[0x3e];
puVar2[0x86] = puVar2[0x7e];
puVar2[7] = puVar2[-1];
puVar2[0x47] = puVar2[0x3f];
puVar2[0x87] = puVar2[0x7f];
puVar2 = puVar2 + 8;
} while (iVar3 < 8);
}
iVar3 = 0;
do {
*(undefined2 *)(param_5 + iVar3 * 2) = local_1c0[iVar3];
*(undefined2 *)(param_5 + 0x80 + iVar3 * 2) = local_1c0[iVar3 + 0x40];
*(undefined2 *)(param_5 + 0x100 + iVar3 * 2) = local_1c0[iVar3 + 0x80];
*(undefined2 *)(param_5 + 2 + iVar3 * 2) = local_1c0[iVar3 + 1];
*(undefined2 *)(param_5 + 0x82 + iVar3 * 2) = local_1c0[iVar3 + 0x41];
*(undefined2 *)(param_5 + 0x102 + iVar3 * 2) = local_1c0[iVar3 + 0x81];
*(undefined2 *)(param_5 + 4 + iVar3 * 2) = local_1c0[iVar3 + 2];
*(undefined2 *)(param_5 + 0x84 + iVar3 * 2) = local_1c0[iVar3 + 0x42];
*(undefined2 *)(param_5 + 0x104 + iVar3 * 2) = local_1c0[iVar3 + 0x82];
*(undefined2 *)(param_5 + 6 + iVar3 * 2) = local_1c0[iVar3 + 3];
*(undefined2 *)(param_5 + 0x86 + iVar3 * 2) = local_1c0[iVar3 + 0x43];
*(undefined2 *)(param_5 + 0x106 + iVar3 * 2) = local_1c0[iVar3 + 0x83];
*(undefined2 *)(param_5 + 8 + iVar3 * 2) = local_1c0[iVar3 + 4];
*(undefined2 *)(param_5 + 0x88 + iVar3 * 2) = local_1c0[iVar3 + 0x44];
*(undefined2 *)(param_5 + 0x108 + iVar3 * 2) = local_1c0[iVar3 + 0x84];
*(undefined2 *)(param_5 + 10 + iVar3 * 2) = local_1c0[iVar3 + 5];
*(undefined2 *)(param_5 + 0x8a + iVar3 * 2) = local_1c0[iVar3 + 0x45];
*(undefined2 *)(param_5 + 0x10a + iVar3 * 2) = local_1c0[iVar3 + 0x85];
*(undefined2 *)(param_5 + 0xc + iVar3 * 2) = local_1c0[iVar3 + 6];
*(undefined2 *)(param_5 + 0x8c + iVar3 * 2) = local_1c0[iVar3 + 0x46];
*(undefined2 *)(param_5 + 0x10c + iVar3 * 2) = local_1c0[iVar3 + 0x86];
*(undefined2 *)(param_5 + 0xe + iVar3 * 2) = local_1c0[iVar3 + 7];
*(undefined2 *)(param_5 + 0x8e + iVar3 * 2) = local_1c0[iVar3 + 0x47];
*(undefined2 *)(param_5 + 0x10e + iVar3 * 2) = local_1c0[iVar3 + 0x87];
iVar3 = iVar3 + 8;
} while (iVar3 < 0x40);
return;
}
// --- FUN_00624460 at 0x00624460 (size: 1352) ---
void FUN_00624460(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
uint uVar2;
undefined2 *puVar3;
int iVar4;
uint uVar5;
uint uVar6;
undefined2 *puVar7;
int iVar8;
int iVar9;
undefined2 *puVar10;
undefined2 local_642;
undefined2 local_640 [16];
undefined1 local_620 [478];
undefined2 local_442 [256];
undefined2 auStack_242 [267];
int local_2c;
int local_28;
undefined2 *local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
iVar4 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_2c = 0;
local_24 = local_640;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar4;
iVar8 = local_1c;
iVar9 = local_18;
do {
uVar5 = (uint)*(byte *)(iVar9 + param_1);
uVar6 = (uint)*(byte *)(iVar9 + 1 + param_1);
uVar2 = (uint)*(byte *)(iVar9 + 2 + param_1);
iVar9 = iVar9 + 3;
local_640[iVar8] = (short)(uVar5 * 0x4d + uVar6 * 0x96 + -0x7f80 + uVar2 * 0x1d >> 8);
local_442[iVar8 + 1] = (short)(uVar5 * -0x2b + uVar6 * -0x55 + 0x80 + uVar2 * 0x80 >> 8);
auStack_242[iVar8 + 1] = (short)(uVar5 * 0x80 + uVar6 * -0x6b + 0x80 + uVar2 * -0x15 >> 8)
;
iVar8 = iVar8 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_28 = (int)local_640 + local_2c;
puVar3 = local_640 + local_14 + local_1c;
local_20 = iVar4;
do {
local_14 = local_14 + 1;
*puVar3 = *(undefined2 *)((int)&local_642 + param_3 * 2 + local_2c);
puVar3[0x100] = *(undefined2 *)((int)local_442 + param_3 * 2 + local_2c);
puVar3[0x200] = *(undefined2 *)((int)auStack_242 + param_3 * 2 + local_2c);
puVar3 = puVar3 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_2c = local_2c + 0x20;
iVar4 = iVar4 + 1;
} while (iVar4 < param_4);
}
if (iVar4 < 0x10) {
puVar3 = local_640 + iVar4 * 0x10;
do {
*puVar3 = puVar3[-0x10];
puVar3[0x100] = puVar3[0xf0];
iVar4 = iVar4 + 1;
puVar3[0x200] = puVar3[0x1f0];
puVar3[1] = puVar3[-0xf];
puVar3[0x101] = puVar3[0xf1];
puVar3[0x201] = puVar3[0x1f1];
puVar3[2] = puVar3[-0xe];
puVar3[0x102] = puVar3[0xf2];
puVar3[0x202] = puVar3[0x1f2];
puVar3[3] = puVar3[-0xd];
puVar3[0x103] = puVar3[0xf3];
puVar3[0x203] = puVar3[499];
puVar3[4] = puVar3[-0xc];
puVar3[0x104] = puVar3[0xf4];
puVar3[0x204] = puVar3[500];
puVar3[5] = puVar3[-0xb];
puVar3[0x105] = puVar3[0xf5];
puVar3[0x205] = puVar3[0x1f5];
puVar3[6] = puVar3[-10];
puVar3[0x106] = puVar3[0xf6];
puVar3[0x206] = puVar3[0x1f6];
puVar3[7] = puVar3[-9];
puVar3[0x107] = puVar3[0xf7];
puVar3[0x207] = puVar3[0x1f7];
puVar3[8] = puVar3[-8];
puVar3[0x108] = puVar3[0xf8];
puVar3[0x208] = puVar3[0x1f8];
puVar3[9] = puVar3[-7];
puVar3[0x109] = puVar3[0xf9];
puVar3[0x209] = puVar3[0x1f9];
puVar3[10] = puVar3[-6];
puVar3[0x10a] = puVar3[0xfa];
puVar3[0x20a] = puVar3[0x1fa];
puVar3[0xb] = puVar3[-5];
puVar3[0x10b] = puVar3[0xfb];
puVar3[0x20b] = puVar3[0x1fb];
puVar3[0xc] = puVar3[-4];
puVar3[0x10c] = puVar3[0xfc];
puVar3[0x20c] = puVar3[0x1fc];
puVar3[0xd] = puVar3[-3];
puVar3[0x10d] = puVar3[0xfd];
puVar3[0x20d] = puVar3[0x1fd];
puVar3[0xe] = puVar3[-2];
puVar3[0x10e] = puVar3[0xfe];
puVar3[0x20e] = puVar3[0x1fe];
puVar3[0xf] = puVar3[-1];
puVar3[0x10f] = puVar3[0xff];
puVar3[0x20f] = puVar3[0x1ff];
puVar3 = puVar3 + 0x10;
} while (iVar4 < 0x10);
}
iVar8 = 0;
iVar4 = 0;
iVar9 = 0;
do {
puVar10 = (undefined2 *)(param_5 + iVar8 * 2);
puVar3 = local_640 + iVar4;
puVar7 = local_640 + iVar9;
do {
*puVar10 = *puVar3;
puVar10[0x40] = puVar3[8];
puVar10[0x80] = puVar3[0x80];
puVar1 = puVar3 + 0x88;
puVar3 = puVar3 + 1;
puVar10[0xc0] = *puVar1;
puVar10[0x100] =
(short)((int)(short)puVar7[0x100] + (int)(short)puVar7[0x101] + (int)(short)puVar7[0x110]
+ 2 + (int)(short)puVar7[0x111] >> 2);
puVar10[0x140] =
(short)((int)(short)puVar7[0x200] + (int)(short)puVar7[0x201] + (int)(short)puVar7[0x210]
+ 2 + (int)(short)puVar7[0x211] >> 2);
puVar10 = puVar10 + 1;
puVar7 = puVar7 + 2;
} while ((int)puVar7 < (int)(local_620 + iVar9 * 2));
iVar8 = iVar8 + 8;
iVar4 = iVar4 + 0x10;
iVar9 = iVar9 + 0x20;
} while (iVar9 < 0x100);
return;
}
// --- FUN_006249b0 at 0x006249B0 (size: 2586) ---
void FUN_006249b0(byte *param_1,int param_2,undefined2 *param_3,undefined2 *param_4,
undefined2 *param_5)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
byte bVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
byte bVar16;
byte bVar17;
byte bVar18;
byte bVar19;
byte bVar20;
byte bVar21;
byte bVar22;
byte bVar23;
byte bVar24;
byte bVar25;
byte bVar26;
byte bVar27;
byte bVar28;
byte bVar29;
byte bVar30;
byte bVar31;
byte bVar32;
byte bVar33;
byte bVar34;
byte bVar35;
byte bVar36;
byte bVar37;
byte bVar38;
byte bVar39;
byte bVar40;
byte bVar41;
byte bVar42;
byte bVar43;
byte bVar44;
byte bVar45;
byte bVar46;
byte bVar47;
byte bVar48;
int iVar49;
int iVar50;
int iVar51;
int local_54;
undefined2 *local_18;
undefined2 *local_14;
local_54 = 0;
local_18 = param_5;
local_14 = param_4;
do {
*param_3 = (short)((uint)*param_1 * 0x4d + (uint)param_1[1] * 0x96 + -0x7f80 +
(uint)param_1[2] * 0x1d >> 8);
param_3[1] = (short)((uint)param_1[3] * 0x4d + (uint)param_1[4] * 0x96 + -0x7f80 +
(uint)param_1[5] * 0x1d >> 8);
param_3[2] = (short)((uint)param_1[6] * 0x4d + (uint)param_1[7] * 0x96 + -0x7f80 +
(uint)param_1[8] * 0x1d >> 8);
param_3[3] = (short)((uint)param_1[9] * 0x4d + (uint)param_1[10] * 0x96 + -0x7f80 +
(uint)param_1[0xb] * 0x1d >> 8);
param_3[4] = (short)((uint)param_1[0xc] * 0x4d + (uint)param_1[0xd] * 0x96 + -0x7f80 +
(uint)param_1[0xe] * 0x1d >> 8);
param_3[5] = (short)((uint)param_1[0xf] * 0x4d + (uint)param_1[0x10] * 0x96 + -0x7f80 +
(uint)param_1[0x11] * 0x1d >> 8);
param_3[6] = (short)((uint)param_1[0x12] * 0x4d + (uint)param_1[0x13] * 0x96 + -0x7f80 +
(uint)param_1[0x14] * 0x1d >> 8);
param_3[7] = (short)((uint)param_1[0x15] * 0x4d + (uint)param_1[0x16] * 0x96 + -0x7f80 +
(uint)param_1[0x17] * 0x1d >> 8);
param_3[0x40] =
(short)((uint)param_1[0x18] * 0x4d + (uint)param_1[0x19] * 0x96 + -0x7f80 +
(uint)param_1[0x1a] * 0x1d >> 8);
param_3[0x41] =
(short)((uint)param_1[0x1b] * 0x4d + (uint)param_1[0x1c] * 0x96 + -0x7f80 +
(uint)param_1[0x1d] * 0x1d >> 8);
param_3[0x42] =
(short)((uint)param_1[0x1e] * 0x4d + (uint)param_1[0x1f] * 0x96 + -0x7f80 +
(uint)param_1[0x20] * 0x1d >> 8);
param_3[0x43] =
(short)((uint)param_1[0x21] * 0x4d + (uint)param_1[0x22] * 0x96 + -0x7f80 +
(uint)param_1[0x23] * 0x1d >> 8);
param_3[0x44] =
(short)((uint)param_1[0x24] * 0x4d + (uint)param_1[0x25] * 0x96 + -0x7f80 +
(uint)param_1[0x26] * 0x1d >> 8);
param_3[0x45] =
(short)((uint)param_1[0x27] * 0x4d + (uint)param_1[0x28] * 0x96 + -0x7f80 +
(uint)param_1[0x29] * 0x1d >> 8);
param_3[0x46] =
(short)((uint)param_1[0x2a] * 0x4d + (uint)param_1[0x2b] * 0x96 + -0x7f80 +
(uint)param_1[0x2c] * 0x1d >> 8);
param_3[0x47] =
(short)((uint)param_1[0x2d] * 0x4d + (uint)param_1[0x2e] * 0x96 + -0x7f80 +
(uint)param_1[0x2f] * 0x1d >> 8);
bVar1 = *param_1;
bVar2 = param_1[3];
bVar3 = param_1[1];
bVar4 = param_1[4];
bVar5 = param_1[2];
bVar6 = param_1[5];
bVar7 = param_1[9];
bVar8 = param_1[6];
bVar9 = param_1[7];
bVar10 = param_1[10];
bVar11 = param_1[0xb];
bVar12 = param_1[8];
bVar13 = param_1[0xc];
bVar14 = param_1[0xf];
bVar15 = param_1[0x10];
bVar16 = param_1[0xd];
bVar17 = param_1[0xe];
bVar18 = param_1[0x11];
bVar19 = param_1[0x15];
bVar20 = param_1[0x12];
bVar21 = param_1[0x13];
bVar22 = param_1[0x16];
bVar23 = param_1[0x17];
bVar24 = param_1[0x14];
bVar25 = param_1[0x18];
bVar26 = param_1[0x1b];
bVar27 = param_1[0x1c];
bVar28 = param_1[0x19];
bVar29 = param_1[0x1a];
bVar30 = param_1[0x1d];
bVar31 = param_1[0x21];
bVar32 = param_1[0x1e];
bVar33 = param_1[0x1f];
bVar34 = param_1[0x22];
bVar35 = param_1[0x23];
bVar36 = param_1[0x20];
bVar37 = param_1[0x24];
bVar38 = param_1[0x27];
bVar39 = param_1[0x28];
bVar40 = param_1[0x25];
bVar41 = param_1[0x26];
bVar42 = param_1[0x29];
bVar43 = param_1[0x2d];
bVar44 = param_1[0x2a];
bVar45 = param_1[0x2b];
bVar46 = param_1[0x2e];
bVar47 = param_1[0x2f];
bVar48 = param_1[0x2c];
param_1 = param_1 + param_2;
param_3[8] = (short)((uint)*param_1 * 0x4d + (uint)param_1[1] * 0x96 + -0x7f80 +
(uint)param_1[2] * 0x1d >> 8);
param_3[9] = (short)((uint)param_1[3] * 0x4d + (uint)param_1[4] * 0x96 + -0x7f80 +
(uint)param_1[5] * 0x1d >> 8);
param_3[10] = (short)((uint)param_1[6] * 0x4d + (uint)param_1[7] * 0x96 + -0x7f80 +
(uint)param_1[8] * 0x1d >> 8);
param_3[0xb] = (short)((uint)param_1[9] * 0x4d + (uint)param_1[10] * 0x96 + -0x7f80 +
(uint)param_1[0xb] * 0x1d >> 8);
param_3[0xc] = (short)((uint)param_1[0xc] * 0x4d + (uint)param_1[0xd] * 0x96 + -0x7f80 +
(uint)param_1[0xe] * 0x1d >> 8);
param_3[0xd] = (short)((uint)param_1[0xf] * 0x4d + (uint)param_1[0x10] * 0x96 + -0x7f80 +
(uint)param_1[0x11] * 0x1d >> 8);
param_3[0xe] = (short)((uint)param_1[0x12] * 0x4d + (uint)param_1[0x13] * 0x96 + -0x7f80 +
(uint)param_1[0x14] * 0x1d >> 8);
param_3[0xf] = (short)((uint)param_1[0x15] * 0x4d + (uint)param_1[0x16] * 0x96 + -0x7f80 +
(uint)param_1[0x17] * 0x1d >> 8);
param_3[0x48] =
(short)((uint)param_1[0x18] * 0x4d + (uint)param_1[0x19] * 0x96 + -0x7f80 +
(uint)param_1[0x1a] * 0x1d >> 8);
param_3[0x49] =
(short)((uint)param_1[0x1b] * 0x4d + (uint)param_1[0x1c] * 0x96 + -0x7f80 +
(uint)param_1[0x1d] * 0x1d >> 8);
param_3[0x4a] =
(short)((uint)param_1[0x1e] * 0x4d + (uint)param_1[0x1f] * 0x96 + -0x7f80 +
(uint)param_1[0x20] * 0x1d >> 8);
param_3[0x4b] =
(short)((uint)param_1[0x21] * 0x4d + (uint)param_1[0x22] * 0x96 + -0x7f80 +
(uint)param_1[0x23] * 0x1d >> 8);
param_3[0x4c] =
(short)((uint)param_1[0x24] * 0x4d + (uint)param_1[0x25] * 0x96 + -0x7f80 +
(uint)param_1[0x26] * 0x1d >> 8);
param_3[0x4d] =
(short)((uint)param_1[0x27] * 0x4d + (uint)param_1[0x28] * 0x96 + -0x7f80 +
(uint)param_1[0x29] * 0x1d >> 8);
param_3[0x4e] =
(short)((uint)param_1[0x2a] * 0x4d + (uint)param_1[0x2b] * 0x96 + -0x7f80 +
(uint)param_1[0x2c] * 0x1d >> 8);
param_3[0x4f] =
(short)((uint)param_1[0x2d] * 0x4d + (uint)param_1[0x2e] * 0x96 + -0x7f80 +
(uint)param_1[0x2f] * 0x1d >> 8);
iVar51 = (uint)*param_1 + (uint)param_1[3] + (uint)bVar1 + (uint)bVar2;
iVar50 = (uint)param_1[1] + (uint)param_1[4] + (uint)bVar3 + (uint)bVar4;
iVar49 = (uint)param_1[2] + (uint)param_1[5] + (uint)bVar5 + (uint)bVar6;
*local_14 = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
param_3 = param_3 + 0x10;
*local_18 = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[6] + (uint)param_1[9] + (uint)bVar8 + (uint)bVar7;
iVar50 = (uint)param_1[7] + (uint)param_1[10] + (uint)bVar9 + (uint)bVar10;
iVar49 = (uint)param_1[8] + (uint)param_1[0xb] + (uint)bVar12 + (uint)bVar11;
local_14[1] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[1] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0xc] + (uint)param_1[0xf] + (uint)bVar13 + (uint)bVar14;
iVar50 = (uint)param_1[0xd] + (uint)param_1[0x10] + (uint)bVar16 + (uint)bVar15;
iVar49 = (uint)param_1[0xe] + (uint)param_1[0x11] + (uint)bVar17 + (uint)bVar18;
local_14[2] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[2] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0x12] + (uint)param_1[0x15] + (uint)bVar20 + (uint)bVar19;
iVar50 = (uint)param_1[0x13] + (uint)param_1[0x16] + (uint)bVar21 + (uint)bVar22;
iVar49 = (uint)param_1[0x14] + (uint)param_1[0x17] + (uint)bVar24 + (uint)bVar23;
local_14[3] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[3] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0x18] + (uint)param_1[0x1b] + (uint)bVar25 + (uint)bVar26;
iVar50 = (uint)param_1[0x19] + (uint)param_1[0x1c] + (uint)bVar28 + (uint)bVar27;
iVar49 = (uint)param_1[0x1a] + (uint)param_1[0x1d] + (uint)bVar29 + (uint)bVar30;
local_14[4] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[4] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0x1e] + (uint)param_1[0x21] + (uint)bVar32 + (uint)bVar31;
iVar50 = (uint)param_1[0x1f] + (uint)param_1[0x22] + (uint)bVar33 + (uint)bVar34;
iVar49 = (uint)param_1[0x20] + (uint)param_1[0x23] + (uint)bVar36 + (uint)bVar35;
local_14[5] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[5] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0x24] + (uint)param_1[0x27] + (uint)bVar37 + (uint)bVar38;
iVar50 = (uint)param_1[0x25] + (uint)param_1[0x28] + (uint)bVar40 + (uint)bVar39;
iVar49 = (uint)param_1[0x26] + (uint)param_1[0x29] + (uint)bVar41 + (uint)bVar42;
local_14[6] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[6] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = (uint)param_1[0x2a] + (uint)param_1[0x2d] + (uint)bVar44 + (uint)bVar43;
iVar50 = (uint)param_1[0x2b] + (uint)param_1[0x2e] + (uint)bVar45 + (uint)bVar46;
iVar49 = (uint)param_1[0x2c] + (uint)param_1[0x2f] + (uint)bVar48 + (uint)bVar47;
local_14[7] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[7] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
local_54 = local_54 + 2;
local_14 = local_14 + 8;
local_18 = local_18 + 8;
param_1 = param_1 + param_2;
} while (local_54 < 8);
return;
}
// --- FUN_006255e0 at 0x006255E0 (size: 1352) ---
void FUN_006255e0(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
uint uVar2;
undefined2 *puVar3;
int iVar4;
uint uVar5;
uint uVar6;
undefined2 *puVar7;
int iVar8;
int iVar9;
undefined2 *puVar10;
undefined2 local_642;
undefined2 local_640 [16];
undefined1 local_620 [478];
undefined2 local_442 [256];
undefined2 auStack_242 [267];
int local_2c;
int local_28;
undefined2 *local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
iVar4 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_2c = 0;
local_24 = local_640;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar4;
iVar8 = local_1c;
iVar9 = local_18;
do {
uVar5 = (uint)*(byte *)(iVar9 + param_1);
uVar6 = (uint)*(byte *)(iVar9 + 1 + param_1);
uVar2 = (uint)*(byte *)(iVar9 + 2 + param_1);
iVar9 = iVar9 + 3;
local_640[iVar8] = (short)(uVar5 * 0x1d + uVar6 * 0x96 + -0x7f80 + uVar2 * 0x4d >> 8);
local_442[iVar8 + 1] = (short)(uVar5 * 0x80 + uVar6 * -0x55 + 0x80 + uVar2 * -0x2b >> 8);
auStack_242[iVar8 + 1] = (short)(uVar5 * -0x15 + uVar6 * -0x6b + 0x80 + uVar2 * 0x80 >> 8)
;
iVar8 = iVar8 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_28 = (int)local_640 + local_2c;
puVar3 = local_640 + local_14 + local_1c;
local_20 = iVar4;
do {
local_14 = local_14 + 1;
*puVar3 = *(undefined2 *)((int)&local_642 + param_3 * 2 + local_2c);
puVar3[0x100] = *(undefined2 *)((int)local_442 + param_3 * 2 + local_2c);
puVar3[0x200] = *(undefined2 *)((int)auStack_242 + param_3 * 2 + local_2c);
puVar3 = puVar3 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_2c = local_2c + 0x20;
iVar4 = iVar4 + 1;
} while (iVar4 < param_4);
}
if (iVar4 < 0x10) {
puVar3 = local_640 + iVar4 * 0x10;
do {
*puVar3 = puVar3[-0x10];
puVar3[0x100] = puVar3[0xf0];
iVar4 = iVar4 + 1;
puVar3[0x200] = puVar3[0x1f0];
puVar3[1] = puVar3[-0xf];
puVar3[0x101] = puVar3[0xf1];
puVar3[0x201] = puVar3[0x1f1];
puVar3[2] = puVar3[-0xe];
puVar3[0x102] = puVar3[0xf2];
puVar3[0x202] = puVar3[0x1f2];
puVar3[3] = puVar3[-0xd];
puVar3[0x103] = puVar3[0xf3];
puVar3[0x203] = puVar3[499];
puVar3[4] = puVar3[-0xc];
puVar3[0x104] = puVar3[0xf4];
puVar3[0x204] = puVar3[500];
puVar3[5] = puVar3[-0xb];
puVar3[0x105] = puVar3[0xf5];
puVar3[0x205] = puVar3[0x1f5];
puVar3[6] = puVar3[-10];
puVar3[0x106] = puVar3[0xf6];
puVar3[0x206] = puVar3[0x1f6];
puVar3[7] = puVar3[-9];
puVar3[0x107] = puVar3[0xf7];
puVar3[0x207] = puVar3[0x1f7];
puVar3[8] = puVar3[-8];
puVar3[0x108] = puVar3[0xf8];
puVar3[0x208] = puVar3[0x1f8];
puVar3[9] = puVar3[-7];
puVar3[0x109] = puVar3[0xf9];
puVar3[0x209] = puVar3[0x1f9];
puVar3[10] = puVar3[-6];
puVar3[0x10a] = puVar3[0xfa];
puVar3[0x20a] = puVar3[0x1fa];
puVar3[0xb] = puVar3[-5];
puVar3[0x10b] = puVar3[0xfb];
puVar3[0x20b] = puVar3[0x1fb];
puVar3[0xc] = puVar3[-4];
puVar3[0x10c] = puVar3[0xfc];
puVar3[0x20c] = puVar3[0x1fc];
puVar3[0xd] = puVar3[-3];
puVar3[0x10d] = puVar3[0xfd];
puVar3[0x20d] = puVar3[0x1fd];
puVar3[0xe] = puVar3[-2];
puVar3[0x10e] = puVar3[0xfe];
puVar3[0x20e] = puVar3[0x1fe];
puVar3[0xf] = puVar3[-1];
puVar3[0x10f] = puVar3[0xff];
puVar3[0x20f] = puVar3[0x1ff];
puVar3 = puVar3 + 0x10;
} while (iVar4 < 0x10);
}
iVar8 = 0;
iVar4 = 0;
iVar9 = 0;
do {
puVar10 = (undefined2 *)(param_5 + iVar8 * 2);
puVar3 = local_640 + iVar4;
puVar7 = local_640 + iVar9;
do {
*puVar10 = *puVar3;
puVar10[0x40] = puVar3[8];
puVar10[0x80] = puVar3[0x80];
puVar1 = puVar3 + 0x88;
puVar3 = puVar3 + 1;
puVar10[0xc0] = *puVar1;
puVar10[0x100] =
(short)((int)(short)puVar7[0x100] + (int)(short)puVar7[0x101] + (int)(short)puVar7[0x110]
+ 2 + (int)(short)puVar7[0x111] >> 2);
puVar10[0x140] =
(short)((int)(short)puVar7[0x200] + (int)(short)puVar7[0x201] + (int)(short)puVar7[0x210]
+ 2 + (int)(short)puVar7[0x211] >> 2);
puVar10 = puVar10 + 1;
puVar7 = puVar7 + 2;
} while ((int)puVar7 < (int)(local_620 + iVar9 * 2));
iVar8 = iVar8 + 8;
iVar4 = iVar4 + 0x10;
iVar9 = iVar9 + 0x20;
} while (iVar9 < 0x100);
return;
}
// --- FUN_00625b30 at 0x00625B30 (size: 2586) ---
void FUN_00625b30(byte *param_1,int param_2,undefined2 *param_3,undefined2 *param_4,
undefined2 *param_5)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
byte bVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
byte bVar16;
byte bVar17;
byte bVar18;
byte bVar19;
byte bVar20;
byte bVar21;
byte bVar22;
byte bVar23;
byte bVar24;
byte bVar25;
byte bVar26;
byte bVar27;
byte bVar28;
byte bVar29;
byte bVar30;
byte bVar31;
byte bVar32;
byte bVar33;
byte bVar34;
byte bVar35;
byte bVar36;
byte bVar37;
byte bVar38;
byte bVar39;
byte bVar40;
byte bVar41;
byte bVar42;
byte bVar43;
byte bVar44;
byte bVar45;
byte bVar46;
byte bVar47;
byte bVar48;
int iVar49;
int iVar50;
int iVar51;
int local_54;
undefined2 *local_18;
undefined2 *local_14;
local_54 = 0;
local_18 = param_5;
local_14 = param_4;
do {
*param_3 = (short)((uint)param_1[2] * 0x4d + (uint)param_1[1] * 0x96 + -0x7f80 +
(uint)*param_1 * 0x1d >> 8);
param_3[1] = (short)((uint)param_1[5] * 0x4d + (uint)param_1[4] * 0x96 + -0x7f80 +
(uint)param_1[3] * 0x1d >> 8);
param_3[2] = (short)((uint)param_1[8] * 0x4d + (uint)param_1[7] * 0x96 + -0x7f80 +
(uint)param_1[6] * 0x1d >> 8);
param_3[3] = (short)((uint)param_1[0xb] * 0x4d + (uint)param_1[10] * 0x96 + -0x7f80 +
(uint)param_1[9] * 0x1d >> 8);
param_3[4] = (short)((uint)param_1[0xe] * 0x4d + (uint)param_1[0xd] * 0x96 + -0x7f80 +
(uint)param_1[0xc] * 0x1d >> 8);
param_3[5] = (short)((uint)param_1[0x11] * 0x4d + (uint)param_1[0x10] * 0x96 + -0x7f80 +
(uint)param_1[0xf] * 0x1d >> 8);
param_3[6] = (short)((uint)param_1[0x14] * 0x4d + (uint)param_1[0x13] * 0x96 + -0x7f80 +
(uint)param_1[0x12] * 0x1d >> 8);
param_3[7] = (short)((uint)param_1[0x17] * 0x4d + (uint)param_1[0x16] * 0x96 + -0x7f80 +
(uint)param_1[0x15] * 0x1d >> 8);
param_3[0x40] =
(short)((uint)param_1[0x1a] * 0x4d + (uint)param_1[0x19] * 0x96 + -0x7f80 +
(uint)param_1[0x18] * 0x1d >> 8);
param_3[0x41] =
(short)((uint)param_1[0x1d] * 0x4d + (uint)param_1[0x1c] * 0x96 + -0x7f80 +
(uint)param_1[0x1b] * 0x1d >> 8);
param_3[0x42] =
(short)((uint)param_1[0x20] * 0x4d + (uint)param_1[0x1f] * 0x96 + -0x7f80 +
(uint)param_1[0x1e] * 0x1d >> 8);
param_3[0x43] =
(short)((uint)param_1[0x23] * 0x4d + (uint)param_1[0x22] * 0x96 + -0x7f80 +
(uint)param_1[0x21] * 0x1d >> 8);
param_3[0x44] =
(short)((uint)param_1[0x26] * 0x4d + (uint)param_1[0x25] * 0x96 + -0x7f80 +
(uint)param_1[0x24] * 0x1d >> 8);
param_3[0x45] =
(short)((uint)param_1[0x29] * 0x4d + (uint)param_1[0x28] * 0x96 + -0x7f80 +
(uint)param_1[0x27] * 0x1d >> 8);
param_3[0x46] =
(short)((uint)param_1[0x2c] * 0x4d + (uint)param_1[0x2b] * 0x96 + -0x7f80 +
(uint)param_1[0x2a] * 0x1d >> 8);
param_3[0x47] =
(short)((uint)param_1[0x2f] * 0x4d + (uint)param_1[0x2e] * 0x96 + -0x7f80 +
(uint)param_1[0x2d] * 0x1d >> 8);
bVar1 = *param_1;
bVar2 = param_1[3];
bVar3 = param_1[1];
bVar4 = param_1[4];
bVar5 = param_1[2];
bVar6 = param_1[5];
bVar7 = param_1[9];
bVar8 = param_1[6];
bVar9 = param_1[7];
bVar10 = param_1[10];
bVar11 = param_1[0xb];
bVar12 = param_1[8];
bVar13 = param_1[0xc];
bVar14 = param_1[0xf];
bVar15 = param_1[0x10];
bVar16 = param_1[0xd];
bVar17 = param_1[0xe];
bVar18 = param_1[0x11];
bVar19 = param_1[0x15];
bVar20 = param_1[0x12];
bVar21 = param_1[0x13];
bVar22 = param_1[0x16];
bVar23 = param_1[0x17];
bVar24 = param_1[0x14];
bVar25 = param_1[0x18];
bVar26 = param_1[0x1b];
bVar27 = param_1[0x1c];
bVar28 = param_1[0x19];
bVar29 = param_1[0x1a];
bVar30 = param_1[0x1d];
bVar31 = param_1[0x21];
bVar32 = param_1[0x1e];
bVar33 = param_1[0x1f];
bVar34 = param_1[0x22];
bVar35 = param_1[0x23];
bVar36 = param_1[0x20];
bVar37 = param_1[0x24];
bVar38 = param_1[0x27];
bVar39 = param_1[0x28];
bVar40 = param_1[0x25];
bVar41 = param_1[0x26];
bVar42 = param_1[0x29];
bVar43 = param_1[0x2d];
bVar44 = param_1[0x2a];
bVar45 = param_1[0x2b];
bVar46 = param_1[0x2e];
bVar47 = param_1[0x2f];
bVar48 = param_1[0x2c];
param_1 = param_1 + param_2;
param_3[8] = (short)((uint)param_1[2] * 0x4d + (uint)param_1[1] * 0x96 + -0x7f80 +
(uint)*param_1 * 0x1d >> 8);
param_3[9] = (short)((uint)param_1[5] * 0x4d + (uint)param_1[4] * 0x96 + -0x7f80 +
(uint)param_1[3] * 0x1d >> 8);
param_3[10] = (short)((uint)param_1[8] * 0x4d + (uint)param_1[7] * 0x96 + -0x7f80 +
(uint)param_1[6] * 0x1d >> 8);
param_3[0xb] = (short)((uint)param_1[0xb] * 0x4d + (uint)param_1[10] * 0x96 + -0x7f80 +
(uint)param_1[9] * 0x1d >> 8);
param_3[0xc] = (short)((uint)param_1[0xe] * 0x4d + (uint)param_1[0xd] * 0x96 + -0x7f80 +
(uint)param_1[0xc] * 0x1d >> 8);
param_3[0xd] = (short)((uint)param_1[0x11] * 0x4d + (uint)param_1[0x10] * 0x96 + -0x7f80 +
(uint)param_1[0xf] * 0x1d >> 8);
param_3[0xe] = (short)((uint)param_1[0x14] * 0x4d + (uint)param_1[0x13] * 0x96 + -0x7f80 +
(uint)param_1[0x12] * 0x1d >> 8);
param_3[0xf] = (short)((uint)param_1[0x17] * 0x4d + (uint)param_1[0x16] * 0x96 + -0x7f80 +
(uint)param_1[0x15] * 0x1d >> 8);
param_3[0x48] =
(short)((uint)param_1[0x1a] * 0x4d + (uint)param_1[0x19] * 0x96 + -0x7f80 +
(uint)param_1[0x18] * 0x1d >> 8);
param_3[0x49] =
(short)((uint)param_1[0x1d] * 0x4d + (uint)param_1[0x1c] * 0x96 + -0x7f80 +
(uint)param_1[0x1b] * 0x1d >> 8);
param_3[0x4a] =
(short)((uint)param_1[0x20] * 0x4d + (uint)param_1[0x1f] * 0x96 + -0x7f80 +
(uint)param_1[0x1e] * 0x1d >> 8);
param_3[0x4b] =
(short)((uint)param_1[0x23] * 0x4d + (uint)param_1[0x22] * 0x96 + -0x7f80 +
(uint)param_1[0x21] * 0x1d >> 8);
param_3[0x4c] =
(short)((uint)param_1[0x26] * 0x4d + (uint)param_1[0x25] * 0x96 + -0x7f80 +
(uint)param_1[0x24] * 0x1d >> 8);
param_3[0x4d] =
(short)((uint)param_1[0x29] * 0x4d + (uint)param_1[0x28] * 0x96 + -0x7f80 +
(uint)param_1[0x27] * 0x1d >> 8);
param_3[0x4e] =
(short)((uint)param_1[0x2c] * 0x4d + (uint)param_1[0x2b] * 0x96 + -0x7f80 +
(uint)param_1[0x2a] * 0x1d >> 8);
param_3[0x4f] =
(short)((uint)param_1[0x2f] * 0x4d + (uint)param_1[0x2e] * 0x96 + -0x7f80 +
(uint)param_1[0x2d] * 0x1d >> 8);
iVar51 = (uint)*param_1 + (uint)param_1[3] + (uint)bVar1 + (uint)bVar2;
iVar50 = (uint)param_1[1] + (uint)param_1[4] + (uint)bVar3 + (uint)bVar4;
iVar49 = (uint)param_1[2] + (uint)param_1[5] + (uint)bVar5 + (uint)bVar6;
*local_14 = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
param_3 = param_3 + 0x10;
*local_18 = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[6] + (uint)param_1[9] + (uint)bVar8 + (uint)bVar7;
iVar50 = (uint)param_1[7] + (uint)param_1[10] + (uint)bVar9 + (uint)bVar10;
iVar49 = (uint)param_1[8] + (uint)param_1[0xb] + (uint)bVar12 + (uint)bVar11;
local_14[1] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[1] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0xc] + (uint)param_1[0xf] + (uint)bVar13 + (uint)bVar14;
iVar50 = (uint)param_1[0xd] + (uint)param_1[0x10] + (uint)bVar16 + (uint)bVar15;
iVar49 = (uint)param_1[0xe] + (uint)param_1[0x11] + (uint)bVar17 + (uint)bVar18;
local_14[2] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[2] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0x12] + (uint)param_1[0x15] + (uint)bVar20 + (uint)bVar19;
iVar50 = (uint)param_1[0x13] + (uint)param_1[0x16] + (uint)bVar21 + (uint)bVar22;
iVar49 = (uint)param_1[0x14] + (uint)param_1[0x17] + (uint)bVar24 + (uint)bVar23;
local_14[3] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[3] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0x18] + (uint)param_1[0x1b] + (uint)bVar25 + (uint)bVar26;
iVar50 = (uint)param_1[0x19] + (uint)param_1[0x1c] + (uint)bVar28 + (uint)bVar27;
iVar49 = (uint)param_1[0x1a] + (uint)param_1[0x1d] + (uint)bVar29 + (uint)bVar30;
local_14[4] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[4] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0x1e] + (uint)param_1[0x21] + (uint)bVar32 + (uint)bVar31;
iVar50 = (uint)param_1[0x1f] + (uint)param_1[0x22] + (uint)bVar33 + (uint)bVar34;
iVar49 = (uint)param_1[0x20] + (uint)param_1[0x23] + (uint)bVar36 + (uint)bVar35;
local_14[5] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[5] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0x24] + (uint)param_1[0x27] + (uint)bVar37 + (uint)bVar38;
iVar50 = (uint)param_1[0x25] + (uint)param_1[0x28] + (uint)bVar40 + (uint)bVar39;
iVar49 = (uint)param_1[0x26] + (uint)param_1[0x29] + (uint)bVar41 + (uint)bVar42;
local_14[6] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[6] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
iVar51 = (uint)param_1[0x2a] + (uint)param_1[0x2d] + (uint)bVar44 + (uint)bVar43;
iVar50 = (uint)param_1[0x2b] + (uint)param_1[0x2e] + (uint)bVar45 + (uint)bVar46;
iVar49 = (uint)param_1[0x2c] + (uint)param_1[0x2f] + (uint)bVar48 + (uint)bVar47;
local_14[7] = (short)(iVar49 * -0x2b + iVar51 * 0x80 + 0x200 + iVar50 * -0x55 >> 10);
local_18[7] = (short)(iVar49 * 0x80 + iVar51 * -0x15 + 0x200 + iVar50 * -0x6b >> 10);
local_54 = local_54 + 2;
local_14 = local_14 + 8;
local_18 = local_18 + 8;
param_1 = param_1 + param_2;
} while (local_54 < 8);
return;
}
// --- FUN_00626760 at 0x00626760 (size: 1263) ---
void FUN_00626760(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
short *psVar2;
short *psVar3;
uint uVar4;
undefined2 *puVar5;
int iVar6;
uint uVar7;
uint uVar8;
undefined2 *puVar9;
int iVar10;
undefined2 *puVar11;
int iVar12;
undefined2 local_342;
undefined2 local_340 [127];
undefined2 local_242 [128];
undefined2 auStack_142 [139];
int local_2c;
undefined2 *local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
iVar6 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_24 = 0;
local_28 = local_340;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar6;
iVar10 = local_1c;
iVar12 = local_18;
do {
uVar7 = (uint)*(byte *)(iVar12 + param_1);
uVar8 = (uint)*(byte *)(iVar12 + 1 + param_1);
uVar4 = (uint)*(byte *)(iVar12 + 2 + param_1);
iVar12 = iVar12 + 3;
local_340[iVar10] = (short)(uVar7 * 0x4d + uVar8 * 0x96 + -0x7f80 + uVar4 * 0x1d >> 8);
local_242[iVar10 + 1] = (short)(uVar7 * -0x2b + uVar8 * -0x55 + 0x80 + uVar4 * 0x80 >> 8);
auStack_142[iVar10 + 1] =
(short)(uVar7 * 0x80 + uVar8 * -0x6b + 0x80 + uVar4 * -0x15 >> 8);
iVar10 = iVar10 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_2c = (int)local_340 + local_24;
puVar5 = local_340 + local_14 + local_1c;
local_20 = iVar6;
do {
local_14 = local_14 + 1;
*puVar5 = *(undefined2 *)((int)&local_342 + param_3 * 2 + local_24);
puVar5[0x80] = *(undefined2 *)((int)local_242 + param_3 * 2 + local_24);
puVar5[0x100] = *(undefined2 *)((int)auStack_142 + param_3 * 2 + local_24);
puVar5 = puVar5 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_24 = local_24 + 0x20;
iVar6 = iVar6 + 1;
} while (iVar6 < param_4);
}
if (iVar6 < 8) {
puVar5 = local_340 + iVar6 * 0x10;
do {
*puVar5 = puVar5[-0x10];
puVar5[0x80] = puVar5[0x70];
iVar6 = iVar6 + 1;
puVar5[0x100] = puVar5[0xf0];
puVar5[1] = puVar5[-0xf];
puVar5[0x81] = puVar5[0x71];
puVar5[0x101] = puVar5[0xf1];
puVar5[2] = puVar5[-0xe];
puVar5[0x82] = puVar5[0x72];
puVar5[0x102] = puVar5[0xf2];
puVar5[3] = puVar5[-0xd];
puVar5[0x83] = puVar5[0x73];
puVar5[0x103] = puVar5[0xf3];
puVar5[4] = puVar5[-0xc];
puVar5[0x84] = puVar5[0x74];
puVar5[0x104] = puVar5[0xf4];
puVar5[5] = puVar5[-0xb];
puVar5[0x85] = puVar5[0x75];
puVar5[0x105] = puVar5[0xf5];
puVar5[6] = puVar5[-10];
puVar5[0x86] = puVar5[0x76];
puVar5[0x106] = puVar5[0xf6];
puVar5[7] = puVar5[-9];
puVar5[0x87] = puVar5[0x77];
puVar5[0x107] = puVar5[0xf7];
puVar5[8] = puVar5[-8];
puVar5[0x88] = puVar5[0x78];
puVar5[0x108] = puVar5[0xf8];
puVar5[9] = puVar5[-7];
puVar5[0x89] = puVar5[0x79];
puVar5[0x109] = puVar5[0xf9];
puVar5[10] = puVar5[-6];
puVar5[0x8a] = puVar5[0x7a];
puVar5[0x10a] = puVar5[0xfa];
puVar5[0xb] = puVar5[-5];
puVar5[0x8b] = puVar5[0x7b];
puVar5[0x10b] = puVar5[0xfb];
puVar5[0xc] = puVar5[-4];
puVar5[0x8c] = puVar5[0x7c];
puVar5[0x10c] = puVar5[0xfc];
puVar5[0xd] = puVar5[-3];
puVar5[0x8d] = puVar5[0x7d];
puVar5[0x10d] = puVar5[0xfd];
puVar5[0xe] = puVar5[-2];
puVar5[0x8e] = puVar5[0x7e];
puVar5[0x10e] = puVar5[0xfe];
puVar5[0xf] = puVar5[-1];
puVar5[0x8f] = puVar5[0x7f];
puVar5[0x10f] = puVar5[0xff];
puVar5 = puVar5 + 0x10;
} while (iVar6 < 8);
}
iVar6 = 0;
local_2c = 0;
local_28 = local_340;
do {
puVar5 = (undefined2 *)(param_5 + iVar6 * 2);
puVar11 = local_28 + local_2c;
puVar9 = local_28 + local_2c;
do {
*puVar5 = *puVar11;
puVar1 = puVar11 + 8;
puVar11 = puVar11 + 1;
puVar5[0x40] = *puVar1;
puVar5[0x80] = (short)((short)puVar9[0x80] + 1 + (int)(short)puVar9[0x81] >> 1);
psVar2 = puVar9 + 0x100;
psVar3 = puVar9 + 0x101;
puVar9 = puVar9 + 2;
puVar5[0xc0] = (short)(*psVar2 + 1 + (int)*psVar3 >> 1);
puVar5 = puVar5 + 1;
} while ((int)puVar9 < (int)(local_28 + local_2c + 0x10));
iVar6 = iVar6 + 8;
local_2c = local_2c + 0x10;
} while (local_2c < 0x80);
return;
}
// --- FUN_00627360 at 0x00627360 (size: 1263) ---
void FUN_00627360(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
short *psVar2;
short *psVar3;
uint uVar4;
undefined2 *puVar5;
int iVar6;
uint uVar7;
uint uVar8;
undefined2 *puVar9;
int iVar10;
undefined2 *puVar11;
int iVar12;
undefined2 local_342;
undefined2 local_340 [127];
undefined2 local_242 [128];
undefined2 auStack_142 [139];
int local_2c;
undefined2 *local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
iVar6 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_24 = 0;
local_28 = local_340;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar6;
iVar10 = local_1c;
iVar12 = local_18;
do {
uVar7 = (uint)*(byte *)(iVar12 + param_1);
uVar8 = (uint)*(byte *)(iVar12 + 1 + param_1);
uVar4 = (uint)*(byte *)(iVar12 + 2 + param_1);
iVar12 = iVar12 + 3;
local_340[iVar10] = (short)(uVar7 * 0x1d + uVar8 * 0x96 + -0x7f80 + uVar4 * 0x4d >> 8);
local_242[iVar10 + 1] = (short)(uVar7 * 0x80 + uVar8 * -0x55 + 0x80 + uVar4 * -0x2b >> 8);
auStack_142[iVar10 + 1] =
(short)(uVar7 * -0x15 + uVar8 * -0x6b + 0x80 + uVar4 * 0x80 >> 8);
iVar10 = iVar10 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_2c = (int)local_340 + local_24;
puVar5 = local_340 + local_14 + local_1c;
local_20 = iVar6;
do {
local_14 = local_14 + 1;
*puVar5 = *(undefined2 *)((int)&local_342 + param_3 * 2 + local_24);
puVar5[0x80] = *(undefined2 *)((int)local_242 + param_3 * 2 + local_24);
puVar5[0x100] = *(undefined2 *)((int)auStack_142 + param_3 * 2 + local_24);
puVar5 = puVar5 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_24 = local_24 + 0x20;
iVar6 = iVar6 + 1;
} while (iVar6 < param_4);
}
if (iVar6 < 8) {
puVar5 = local_340 + iVar6 * 0x10;
do {
*puVar5 = puVar5[-0x10];
puVar5[0x80] = puVar5[0x70];
iVar6 = iVar6 + 1;
puVar5[0x100] = puVar5[0xf0];
puVar5[1] = puVar5[-0xf];
puVar5[0x81] = puVar5[0x71];
puVar5[0x101] = puVar5[0xf1];
puVar5[2] = puVar5[-0xe];
puVar5[0x82] = puVar5[0x72];
puVar5[0x102] = puVar5[0xf2];
puVar5[3] = puVar5[-0xd];
puVar5[0x83] = puVar5[0x73];
puVar5[0x103] = puVar5[0xf3];
puVar5[4] = puVar5[-0xc];
puVar5[0x84] = puVar5[0x74];
puVar5[0x104] = puVar5[0xf4];
puVar5[5] = puVar5[-0xb];
puVar5[0x85] = puVar5[0x75];
puVar5[0x105] = puVar5[0xf5];
puVar5[6] = puVar5[-10];
puVar5[0x86] = puVar5[0x76];
puVar5[0x106] = puVar5[0xf6];
puVar5[7] = puVar5[-9];
puVar5[0x87] = puVar5[0x77];
puVar5[0x107] = puVar5[0xf7];
puVar5[8] = puVar5[-8];
puVar5[0x88] = puVar5[0x78];
puVar5[0x108] = puVar5[0xf8];
puVar5[9] = puVar5[-7];
puVar5[0x89] = puVar5[0x79];
puVar5[0x109] = puVar5[0xf9];
puVar5[10] = puVar5[-6];
puVar5[0x8a] = puVar5[0x7a];
puVar5[0x10a] = puVar5[0xfa];
puVar5[0xb] = puVar5[-5];
puVar5[0x8b] = puVar5[0x7b];
puVar5[0x10b] = puVar5[0xfb];
puVar5[0xc] = puVar5[-4];
puVar5[0x8c] = puVar5[0x7c];
puVar5[0x10c] = puVar5[0xfc];
puVar5[0xd] = puVar5[-3];
puVar5[0x8d] = puVar5[0x7d];
puVar5[0x10d] = puVar5[0xfd];
puVar5[0xe] = puVar5[-2];
puVar5[0x8e] = puVar5[0x7e];
puVar5[0x10e] = puVar5[0xfe];
puVar5[0xf] = puVar5[-1];
puVar5[0x8f] = puVar5[0x7f];
puVar5[0x10f] = puVar5[0xff];
puVar5 = puVar5 + 0x10;
} while (iVar6 < 8);
}
iVar6 = 0;
local_2c = 0;
local_28 = local_340;
do {
puVar5 = (undefined2 *)(param_5 + iVar6 * 2);
puVar11 = local_28 + local_2c;
puVar9 = local_28 + local_2c;
do {
*puVar5 = *puVar11;
puVar1 = puVar11 + 8;
puVar11 = puVar11 + 1;
puVar5[0x40] = *puVar1;
puVar5[0x80] = (short)((short)puVar9[0x80] + 1 + (int)(short)puVar9[0x81] >> 1);
psVar2 = puVar9 + 0x100;
psVar3 = puVar9 + 0x101;
puVar9 = puVar9 + 2;
puVar5[0xc0] = (short)(*psVar2 + 1 + (int)*psVar3 >> 1);
puVar5 = puVar5 + 1;
} while ((int)puVar9 < (int)(local_28 + local_2c + 0x10));
iVar6 = iVar6 + 8;
local_2c = local_2c + 0x10;
} while (local_2c < 0x80);
return;
}
// --- FUN_00627f60 at 0x00627F60 (size: 769) ---
void FUN_00627f60(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
byte bVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
int iVar7;
undefined2 *puVar8;
undefined2 *puVar9;
undefined2 *puVar10;
undefined2 uStack_242;
undefined2 local_240 [63];
undefined2 auStack_1c2 [64];
undefined2 auStack_142 [64];
short asStack_c2 [75];
undefined2 *local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
local_2c = local_240;
iVar5 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_24 = 0;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar5;
iVar7 = local_1c;
local_28 = local_18;
do {
iVar3 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + param_1));
iVar6 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + 1 + param_1));
iVar4 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + 2 + param_1));
bVar2 = *(byte *)(local_28 + 3 + param_1);
local_2c[iVar7] =
(short)((uint)(iVar3 * 0x4d + iVar6 * 0x96 + -0x7f80 + iVar4 * 0x1d) >> 8);
auStack_1c2[iVar7 + 1] =
(short)((uint)(iVar3 * -0x2b + iVar6 * -0x55 + 0x80 + iVar4 * 0x80) >> 8);
auStack_142[iVar7 + 1] =
(short)((uint)(iVar3 * 0x80 + iVar6 * -0x6b + 0x80 + iVar4 * -0x15) >> 8);
local_28 = local_28 + 4;
asStack_c2[iVar7 + 1] = bVar2 - 0x80;
iVar7 = iVar7 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 8) {
local_28 = (int)local_2c + local_24;
puVar8 = local_2c + local_14 + local_1c;
local_20 = iVar5;
do {
local_14 = local_14 + 1;
*puVar8 = *(undefined2 *)((int)&uStack_242 + param_3 * 2 + local_24);
puVar8[0x40] = *(undefined2 *)((int)auStack_1c2 + param_3 * 2 + local_24);
puVar8[0x80] = *(undefined2 *)((int)auStack_142 + param_3 * 2 + local_24);
puVar8[0xc0] = *(undefined2 *)((int)asStack_c2 + param_3 * 2 + local_24);
puVar8 = puVar8 + 1;
} while (local_14 < 8);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 8;
local_24 = local_24 + 0x10;
iVar5 = iVar5 + 1;
} while (iVar5 < param_4);
}
if (iVar5 < 8) {
iVar7 = iVar5 << 3;
puVar8 = local_2c + iVar5 * 8;
do {
puVar9 = local_2c + iVar7;
puVar10 = puVar8;
do {
*puVar9 = puVar10[-8];
puVar9[0x40] = puVar10[0x38];
puVar9[0x80] = puVar10[0x78];
puVar1 = puVar10 + 0xb8;
puVar10 = puVar10 + 1;
puVar9[0xc0] = *puVar1;
puVar9 = puVar9 + 1;
} while ((int)puVar10 < (int)(puVar8 + 8));
iVar7 = iVar7 + 8;
puVar8 = puVar8 + 8;
iVar5 = iVar5 + 1;
} while (iVar5 < 8);
}
iVar5 = 0;
do {
iVar7 = iVar5;
do {
*(undefined2 *)(param_5 + iVar7 * 2) = local_2c[iVar7];
*(undefined2 *)(param_5 + 0x80 + iVar7 * 2) = local_2c[iVar7 + 0x40];
*(undefined2 *)(param_5 + 0x100 + iVar7 * 2) = local_2c[iVar7 + 0x80];
*(undefined2 *)(param_5 + 0x180 + iVar7 * 2) = local_2c[iVar7 + 0xc0];
iVar7 = iVar7 + 1;
} while (iVar7 < iVar5 + 8);
iVar5 = iVar5 + 8;
} while (iVar5 < 0x40);
return;
}
// --- FUN_006288e0 at 0x006288E0 (size: 875) ---
void FUN_006288e0(int param_1,int param_2,int param_3,int param_4,int param_5)
{
short *psVar1;
short *psVar2;
undefined2 *puVar3;
byte bVar4;
int iVar5;
int iVar6;
int iVar7;
int iVar8;
int iVar9;
undefined2 *puVar10;
undefined2 *puVar11;
undefined2 *puVar12;
undefined2 uStack_842;
undefined2 local_840 [127];
undefined2 auStack_742 [128];
undefined2 auStack_642 [128];
short asStack_542 [651];
undefined2 *local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
local_2c = local_840;
iVar7 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_24 = 0;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar7;
iVar9 = local_1c;
local_28 = local_18;
do {
iVar5 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + param_1));
iVar8 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + 1 + param_1));
iVar6 = (int)(short)(0xff - (ushort)*(byte *)(local_28 + 2 + param_1));
bVar4 = *(byte *)(local_28 + 3 + param_1);
local_2c[iVar9] =
(short)((uint)(iVar5 * 0x4d + iVar8 * 0x96 + -0x7f80 + iVar6 * 0x1d) >> 8);
auStack_742[iVar9 + 1] =
(short)((uint)(iVar5 * -0x2b + iVar8 * -0x55 + 0x80 + iVar6 * 0x80) >> 8);
auStack_642[iVar9 + 1] =
(short)((uint)(iVar5 * 0x80 + iVar8 * -0x6b + 0x80 + iVar6 * -0x15) >> 8);
local_28 = local_28 + 4;
asStack_542[iVar9 + 1] = bVar4 - 0x80;
iVar9 = iVar9 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_28 = (int)local_2c + local_24;
puVar10 = local_2c + local_14 + local_1c;
local_20 = iVar7;
do {
local_14 = local_14 + 1;
*puVar10 = *(undefined2 *)((int)&uStack_842 + param_3 * 2 + local_24);
puVar10[0x80] = *(undefined2 *)((int)auStack_742 + param_3 * 2 + local_24);
puVar10[0x100] = *(undefined2 *)((int)auStack_642 + param_3 * 2 + local_24);
puVar10[0x180] = *(undefined2 *)((int)asStack_542 + param_3 * 2 + local_24);
puVar10 = puVar10 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_24 = local_24 + 0x20;
iVar7 = iVar7 + 1;
} while (iVar7 < param_4);
}
if (iVar7 < 8) {
iVar9 = iVar7 << 4;
puVar10 = local_2c + iVar7 * 0x10;
do {
puVar11 = local_2c + iVar9;
puVar12 = puVar10;
do {
*puVar11 = puVar12[-0x10];
puVar11[0x80] = puVar12[0x70];
puVar11[0x100] = puVar12[0xf0];
puVar3 = puVar12 + 0x170;
puVar12 = puVar12 + 1;
puVar11[0x180] = *puVar3;
puVar11 = puVar11 + 1;
} while ((int)puVar12 < (int)(puVar10 + 0x10));
iVar9 = iVar9 + 0x10;
puVar10 = puVar10 + 0x10;
iVar7 = iVar7 + 1;
} while (iVar7 < 8);
}
iVar7 = 0;
local_28 = 0;
do {
puVar10 = (undefined2 *)(param_5 + iVar7 * 2);
puVar11 = local_2c + local_28;
puVar12 = local_2c + local_28;
do {
*puVar10 = *puVar11;
puVar10[0x40] = puVar11[8];
puVar10[0x80] = (short)((short)puVar12[0x80] + 1 + (int)(short)puVar12[0x81] >> 1);
psVar1 = puVar12 + 0x100;
psVar2 = puVar12 + 0x101;
puVar12 = puVar12 + 2;
puVar10[0xc0] = (short)(*psVar1 + 1 + (int)*psVar2 >> 1);
puVar10[0x100] = puVar11[0x180];
puVar3 = puVar11 + 0x188;
puVar11 = puVar11 + 1;
puVar10[0x140] = *puVar3;
puVar10 = puVar10 + 1;
} while ((int)puVar12 < (int)(local_2c + local_28 + 0x10));
iVar7 = iVar7 + 8;
local_28 = local_28 + 0x10;
} while (local_28 < 0x80);
return;
}
// --- FUN_00629540 at 0x00629540 (size: 992) ---
void FUN_00629540(int param_1,int param_2,int param_3,int param_4,int param_5)
{
undefined2 *puVar1;
byte bVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
int iVar7;
undefined2 *puVar8;
undefined2 *puVar9;
undefined2 *puVar10;
undefined2 uStack_842;
undefined2 local_840 [255];
undefined2 auStack_642 [256];
undefined2 auStack_442 [256];
short asStack_242 [267];
undefined2 *local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
local_2c = local_840;
iVar5 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_28 = 0;
do {
local_14 = 0;
if (0 < param_3) {
local_14 = 0;
local_20 = iVar5;
iVar7 = local_1c;
local_24 = local_18;
do {
iVar3 = (int)(short)(0xff - (ushort)*(byte *)(local_24 + param_1));
iVar6 = (int)(short)(0xff - (ushort)*(byte *)(local_24 + 1 + param_1));
iVar4 = (int)(short)(0xff - (ushort)*(byte *)(local_24 + 2 + param_1));
bVar2 = *(byte *)(local_24 + 3 + param_1);
local_2c[iVar7] =
(short)((uint)(iVar3 * 0x4d + iVar6 * 0x96 + -0x7f80 + iVar4 * 0x1d) >> 8);
auStack_642[iVar7 + 1] =
(short)((uint)(iVar3 * -0x2b + iVar6 * -0x55 + 0x80 + iVar4 * 0x80) >> 8);
auStack_442[iVar7 + 1] =
(short)((uint)(iVar3 * 0x80 + iVar6 * -0x6b + 0x80 + iVar4 * -0x15) >> 8);
local_24 = local_24 + 4;
asStack_242[iVar7 + 1] = bVar2 - 0x80;
iVar7 = iVar7 + 1;
local_14 = local_14 + 1;
} while (local_14 < param_3);
}
if (local_14 < 0x10) {
local_24 = (int)local_2c + local_28;
puVar8 = local_2c + local_14 + local_1c;
local_20 = iVar5;
do {
local_14 = local_14 + 1;
*puVar8 = *(undefined2 *)((int)&uStack_842 + param_3 * 2 + local_28);
puVar8[0x100] = *(undefined2 *)((int)auStack_642 + param_3 * 2 + local_28);
puVar8[0x200] = *(undefined2 *)((int)auStack_442 + param_3 * 2 + local_28);
puVar8[0x300] = *(undefined2 *)((int)asStack_242 + param_3 * 2 + local_28);
puVar8 = puVar8 + 1;
} while (local_14 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_28 = local_28 + 0x20;
iVar5 = iVar5 + 1;
} while (iVar5 < param_4);
}
if (iVar5 < 0x10) {
iVar7 = iVar5 << 4;
puVar8 = local_2c + iVar5 * 0x10;
do {
puVar9 = local_2c + iVar7;
puVar10 = puVar8;
do {
*puVar9 = puVar10[-0x10];
puVar9[0x100] = puVar10[0xf0];
puVar9[0x200] = puVar10[0x1f0];
puVar1 = puVar10 + 0x2f0;
puVar10 = puVar10 + 1;
puVar9[0x300] = *puVar1;
puVar9 = puVar9 + 1;
} while ((int)puVar10 < (int)(puVar8 + 0x10));
iVar7 = iVar7 + 0x10;
puVar8 = puVar8 + 0x10;
iVar5 = iVar5 + 1;
} while (iVar5 < 0x10);
}
iVar7 = 0;
iVar5 = 0;
iVar3 = 0;
do {
puVar10 = (undefined2 *)(param_5 + iVar7 * 2);
puVar8 = local_2c + iVar5;
puVar9 = local_2c + iVar3;
do {
*puVar10 = *puVar8;
puVar10[0x40] = puVar8[8];
puVar10[0x80] = puVar8[0x80];
puVar10[0xc0] = puVar8[0x88];
puVar10[0x100] =
(short)((int)(short)puVar9[0x100] + (int)(short)puVar9[0x101] + (int)(short)puVar9[0x110]
+ 2 + (int)(short)puVar9[0x111] >> 2);
puVar10[0x140] =
(short)((int)(short)puVar9[0x200] + (int)(short)puVar9[0x201] + (int)(short)puVar9[0x210]
+ 2 + (int)(short)puVar9[0x211] >> 2);
puVar9 = puVar9 + 2;
puVar10[0x180] = puVar8[0x300];
puVar10[0x1c0] = puVar8[0x308];
puVar10[0x200] = puVar8[0x380];
puVar1 = puVar8 + 0x388;
puVar8 = puVar8 + 1;
puVar10[0x240] = *puVar1;
puVar10 = puVar10 + 1;
} while ((int)puVar9 < (int)(local_2c + iVar3 + 0x10));
iVar7 = iVar7 + 8;
iVar5 = iVar5 + 0x10;
iVar3 = iVar3 + 0x20;
} while (iVar3 < 0x100);
return;
}
// --- FUN_00629920 at 0x00629920 (size: 3331) ---
void FUN_00629920(byte *param_1,int param_2,undefined2 *param_3,undefined2 *param_4,
undefined2 *param_5,short *param_6)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
byte bVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
byte bVar16;
byte bVar17;
byte bVar18;
byte bVar19;
byte bVar20;
byte bVar21;
byte bVar22;
byte bVar23;
byte bVar24;
byte bVar25;
byte bVar26;
byte bVar27;
byte bVar28;
byte bVar29;
byte bVar30;
byte bVar31;
byte bVar32;
byte bVar33;
byte bVar34;
byte bVar35;
byte bVar36;
byte bVar37;
byte bVar38;
byte bVar39;
byte bVar40;
byte bVar41;
byte bVar42;
byte bVar43;
byte bVar44;
byte bVar45;
byte bVar46;
byte bVar47;
byte bVar48;
int iVar49;
int iVar50;
int iVar51;
int local_80;
short *local_1c;
undefined2 *local_18;
undefined2 *local_14;
local_18 = param_5;
local_14 = param_4;
local_80 = 0;
local_1c = param_6;
do {
*param_3 = (short)((uint)*param_1 * -0x4d + (uint)param_1[1] * -0x96 + 0x7f80 +
(uint)param_1[2] * -0x1d >> 8);
param_3[1] = (short)((uint)param_1[4] * -0x4d + (uint)param_1[5] * -0x96 + 0x7f80 +
(uint)param_1[6] * -0x1d >> 8);
param_3[2] = (short)((uint)param_1[8] * -0x4d + (uint)param_1[9] * -0x96 + 0x7f80 +
(uint)param_1[10] * -0x1d >> 8);
param_3[3] = (short)((uint)param_1[0xc] * -0x4d + (uint)param_1[0xd] * -0x96 + 0x7f80 +
(uint)param_1[0xe] * -0x1d >> 8);
param_3[4] = (short)((uint)param_1[0x10] * -0x4d + (uint)param_1[0x11] * -0x96 + 0x7f80 +
(uint)param_1[0x12] * -0x1d >> 8);
param_3[5] = (short)((uint)param_1[0x14] * -0x4d + (uint)param_1[0x15] * -0x96 + 0x7f80 +
(uint)param_1[0x16] * -0x1d >> 8);
param_3[6] = (short)((uint)param_1[0x18] * -0x4d + (uint)param_1[0x19] * -0x96 + 0x7f80 +
(uint)param_1[0x1a] * -0x1d >> 8);
param_3[7] = (short)((uint)param_1[0x1c] * -0x4d + (uint)param_1[0x1d] * -0x96 + 0x7f80 +
(uint)param_1[0x1e] * -0x1d >> 8);
param_3[0x40] =
(short)((uint)param_1[0x20] * -0x4d + (uint)param_1[0x21] * -0x96 + 0x7f80 +
(uint)param_1[0x22] * -0x1d >> 8);
param_3[0x41] =
(short)((uint)param_1[0x24] * -0x4d + (uint)param_1[0x25] * -0x96 + 0x7f80 +
(uint)param_1[0x26] * -0x1d >> 8);
param_3[0x42] =
(short)((uint)param_1[0x28] * -0x4d + (uint)param_1[0x29] * -0x96 + 0x7f80 +
(uint)param_1[0x2a] * -0x1d >> 8);
param_3[0x43] =
(short)((uint)param_1[0x2c] * -0x4d + (uint)param_1[0x2d] * -0x96 + 0x7f80 +
(uint)param_1[0x2e] * -0x1d >> 8);
param_3[0x44] =
(short)((uint)param_1[0x30] * -0x4d + (uint)param_1[0x31] * -0x96 + 0x7f80 +
(uint)param_1[0x32] * -0x1d >> 8);
param_3[0x45] =
(short)((uint)param_1[0x34] * -0x4d + (uint)param_1[0x35] * -0x96 + 0x7f80 +
(uint)param_1[0x36] * -0x1d >> 8);
param_3[0x46] =
(short)((uint)param_1[0x38] * -0x4d + (uint)param_1[0x39] * -0x96 + 0x7f80 +
(uint)param_1[0x3a] * -0x1d >> 8);
param_3[0x47] =
(short)((uint)param_1[0x3c] * -0x4d + (uint)param_1[0x3d] * -0x96 + 0x7f80 +
(uint)param_1[0x3e] * -0x1d >> 8);
*local_1c = param_1[3] - 0x80;
local_1c[1] = param_1[7] - 0x80;
local_1c[2] = param_1[0xb] - 0x80;
local_1c[3] = param_1[0xf] - 0x80;
local_1c[4] = param_1[0x13] - 0x80;
local_1c[5] = param_1[0x17] - 0x80;
local_1c[6] = param_1[0x1b] - 0x80;
local_1c[7] = param_1[0x1f] - 0x80;
local_1c[0x40] = param_1[0x23] - 0x80;
local_1c[0x41] = param_1[0x27] - 0x80;
local_1c[0x42] = param_1[0x2b] - 0x80;
local_1c[0x43] = param_1[0x2f] - 0x80;
local_1c[0x44] = param_1[0x33] - 0x80;
local_1c[0x45] = param_1[0x37] - 0x80;
local_1c[0x46] = param_1[0x3b] - 0x80;
local_1c[0x47] = param_1[0x3f] - 0x80;
bVar1 = *param_1;
bVar2 = param_1[4];
bVar3 = param_1[5];
bVar4 = param_1[1];
bVar5 = param_1[2];
bVar6 = param_1[6];
bVar7 = param_1[0xc];
bVar8 = param_1[8];
bVar9 = param_1[9];
bVar10 = param_1[0xd];
bVar11 = param_1[0xe];
bVar12 = param_1[10];
bVar13 = param_1[0x10];
bVar14 = param_1[0x14];
bVar15 = param_1[0x15];
bVar16 = param_1[0x11];
bVar17 = param_1[0x12];
bVar18 = param_1[0x16];
bVar19 = param_1[0x1c];
bVar20 = param_1[0x18];
bVar21 = param_1[0x19];
bVar22 = param_1[0x1d];
bVar23 = param_1[0x1e];
bVar24 = param_1[0x1a];
bVar25 = param_1[0x20];
bVar26 = param_1[0x24];
bVar27 = param_1[0x25];
bVar28 = param_1[0x21];
bVar29 = param_1[0x22];
bVar30 = param_1[0x26];
bVar31 = param_1[0x2c];
bVar32 = param_1[0x28];
bVar33 = param_1[0x29];
bVar34 = param_1[0x2d];
bVar35 = param_1[0x2e];
bVar36 = param_1[0x2a];
bVar37 = param_1[0x30];
bVar38 = param_1[0x34];
bVar39 = param_1[0x35];
bVar40 = param_1[0x31];
bVar41 = param_1[0x32];
bVar42 = param_1[0x36];
bVar43 = param_1[0x3c];
bVar44 = param_1[0x38];
bVar45 = param_1[0x39];
bVar46 = param_1[0x3d];
bVar47 = param_1[0x3e];
bVar48 = param_1[0x3a];
param_1 = param_1 + param_2;
param_3[8] = (short)((uint)*param_1 * -0x4d + (uint)param_1[1] * -0x96 + 0x7f80 +
(uint)param_1[2] * -0x1d >> 8);
param_3[9] = (short)((uint)param_1[4] * -0x4d + (uint)param_1[5] * -0x96 + 0x7f80 +
(uint)param_1[6] * -0x1d >> 8);
param_3[10] = (short)((uint)param_1[8] * -0x4d + (uint)param_1[9] * -0x96 + 0x7f80 +
(uint)param_1[10] * -0x1d >> 8);
param_3[0xb] = (short)((uint)param_1[0xc] * -0x4d + (uint)param_1[0xd] * -0x96 + 0x7f80 +
(uint)param_1[0xe] * -0x1d >> 8);
param_3[0xc] = (short)((uint)param_1[0x10] * -0x4d + (uint)param_1[0x11] * -0x96 + 0x7f80 +
(uint)param_1[0x12] * -0x1d >> 8);
param_3[0xd] = (short)((uint)param_1[0x14] * -0x4d + (uint)param_1[0x15] * -0x96 + 0x7f80 +
(uint)param_1[0x16] * -0x1d >> 8);
param_3[0xe] = (short)((uint)param_1[0x18] * -0x4d + (uint)param_1[0x19] * -0x96 + 0x7f80 +
(uint)param_1[0x1a] * -0x1d >> 8);
param_3[0xf] = (short)((uint)param_1[0x1c] * -0x4d + (uint)param_1[0x1d] * -0x96 + 0x7f80 +
(uint)param_1[0x1e] * -0x1d >> 8);
param_3[0x48] =
(short)((uint)param_1[0x20] * -0x4d + (uint)param_1[0x21] * -0x96 + 0x7f80 +
(uint)param_1[0x22] * -0x1d >> 8);
param_3[0x49] =
(short)((uint)param_1[0x24] * -0x4d + (uint)param_1[0x25] * -0x96 + 0x7f80 +
(uint)param_1[0x26] * -0x1d >> 8);
param_3[0x4a] =
(short)((uint)param_1[0x28] * -0x4d + (uint)param_1[0x29] * -0x96 + 0x7f80 +
(uint)param_1[0x2a] * -0x1d >> 8);
param_3[0x4b] =
(short)((uint)param_1[0x2c] * -0x4d + (uint)param_1[0x2d] * -0x96 + 0x7f80 +
(uint)param_1[0x2e] * -0x1d >> 8);
param_3[0x4c] =
(short)((uint)param_1[0x30] * -0x4d + (uint)param_1[0x31] * -0x96 + 0x7f80 +
(uint)param_1[0x32] * -0x1d >> 8);
param_3[0x4d] =
(short)((uint)param_1[0x34] * -0x4d + (uint)param_1[0x35] * -0x96 + 0x7f80 +
(uint)param_1[0x36] * -0x1d >> 8);
param_3[0x4e] =
(short)((uint)param_1[0x38] * -0x4d + (uint)param_1[0x39] * -0x96 + 0x7f80 +
(uint)param_1[0x3a] * -0x1d >> 8);
param_3[0x4f] =
(short)((uint)param_1[0x3c] * -0x4d + (uint)param_1[0x3d] * -0x96 + 0x7f80 +
(uint)param_1[0x3e] * -0x1d >> 8);
local_1c[8] = param_1[3] - 0x80;
local_1c[9] = param_1[7] - 0x80;
local_1c[10] = param_1[0xb] - 0x80;
local_1c[0xb] = param_1[0xf] - 0x80;
local_1c[0xc] = param_1[0x13] - 0x80;
local_1c[0xd] = param_1[0x17] - 0x80;
local_1c[0xe] = param_1[0x1b] - 0x80;
local_1c[0xf] = param_1[0x1f] - 0x80;
local_1c[0x48] = param_1[0x23] - 0x80;
local_1c[0x49] = param_1[0x27] - 0x80;
local_1c[0x4a] = param_1[0x2b] - 0x80;
local_1c[0x4b] = param_1[0x2f] - 0x80;
local_1c[0x4c] = param_1[0x33] - 0x80;
local_1c[0x4d] = param_1[0x37] - 0x80;
local_1c[0x4e] = param_1[0x3b] - 0x80;
local_1c[0x4f] = param_1[0x3f] - 0x80;
iVar51 = 0x3fc - ((uint)*param_1 + (uint)param_1[4] + (uint)bVar1 + (uint)bVar2);
iVar50 = 0x3fc - ((uint)param_1[1] + (uint)param_1[5] + (uint)bVar4 + (uint)bVar3);
iVar49 = 0x3fc - ((uint)param_1[2] + (uint)param_1[6] + (uint)bVar5 + (uint)bVar6);
*local_14 = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
*local_18 = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[8] + (uint)param_1[0xc] + (uint)bVar8 + (uint)bVar7);
iVar50 = 0x3fc - ((uint)param_1[9] + (uint)param_1[0xd] + (uint)bVar9 + (uint)bVar10);
iVar49 = 0x3fc - ((uint)param_1[10] + (uint)param_1[0xe] + (uint)bVar12 + (uint)bVar11);
local_14[1] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[1] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[0x10] + (uint)param_1[0x14] + (uint)bVar13 + (uint)bVar14);
iVar50 = 0x3fc - ((uint)param_1[0x11] + (uint)param_1[0x15] + (uint)bVar16 + (uint)bVar15);
iVar49 = 0x3fc - ((uint)param_1[0x12] + (uint)param_1[0x16] + (uint)bVar17 + (uint)bVar18);
local_14[2] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[2] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[0x18] + (uint)param_1[0x1c] + (uint)bVar20 + (uint)bVar19);
iVar50 = 0x3fc - ((uint)param_1[0x19] + (uint)param_1[0x1d] + (uint)bVar21 + (uint)bVar22);
iVar49 = 0x3fc - ((uint)param_1[0x1a] + (uint)param_1[0x1e] + (uint)bVar24 + (uint)bVar23);
local_14[3] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[3] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[0x20] + (uint)param_1[0x24] + (uint)bVar25 + (uint)bVar26);
iVar50 = 0x3fc - ((uint)param_1[0x21] + (uint)param_1[0x25] + (uint)bVar28 + (uint)bVar27);
iVar49 = 0x3fc - ((uint)param_1[0x22] + (uint)param_1[0x26] + (uint)bVar29 + (uint)bVar30);
local_14[4] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[4] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[0x28] + (uint)param_1[0x2c] + (uint)bVar32 + (uint)bVar31);
iVar50 = 0x3fc - ((uint)param_1[0x29] + (uint)param_1[0x2d] + (uint)bVar33 + (uint)bVar34);
iVar49 = 0x3fc - ((uint)param_1[0x2a] + (uint)param_1[0x2e] + (uint)bVar36 + (uint)bVar35);
local_14[5] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_18[5] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
iVar49 = 0x3fc - ((uint)param_1[0x30] + (uint)param_1[0x34] + (uint)bVar37 + (uint)bVar38);
iVar50 = 0x3fc - ((uint)param_1[0x31] + (uint)param_1[0x35] + (uint)bVar40 + (uint)bVar39);
iVar51 = 0x3fc - ((uint)param_1[0x32] + (uint)param_1[0x36] + (uint)bVar41 + (uint)bVar42);
local_14[6] = (short)(iVar49 * -0x2b + iVar50 * -0x55 + 0x200 + iVar51 * 0x80 >> 10);
local_18[6] = (short)(iVar49 * 0x80 + iVar50 * -0x6b + 0x200 + iVar51 * -0x15 >> 10);
iVar51 = 0x3fc - ((uint)param_1[0x38] + (uint)param_1[0x3c] + (uint)bVar44 + (uint)bVar43);
iVar50 = 0x3fc - ((uint)param_1[0x39] + (uint)param_1[0x3d] + (uint)bVar45 + (uint)bVar46);
iVar49 = 0x3fc - ((uint)param_1[0x3a] + (uint)param_1[0x3e] + (uint)bVar48 + (uint)bVar47);
local_14[7] = (short)(iVar51 * -0x2b + iVar50 * -0x55 + 0x200 + iVar49 * 0x80 >> 10);
local_14 = local_14 + 8;
param_3 = param_3 + 0x10;
local_18[7] = (short)(iVar51 * 0x80 + iVar50 * -0x6b + 0x200 + iVar49 * -0x15 >> 10);
local_18 = local_18 + 8;
local_80 = local_80 + 2;
param_1 = param_1 + param_2;
local_1c = local_1c + 0x10;
} while (local_80 < 8);
return;
}
// --- FUN_0062a840 at 0x0062A840 (size: 700) ---
void FUN_0062a840(int param_1,int param_2,int param_3,int param_4,int param_5)
{
int iVar1;
undefined2 *puVar2;
int iVar3;
int iVar4;
int iVar5;
iVar4 = 0;
if (0 < param_4) {
iVar3 = 0;
do {
iVar1 = 0;
iVar5 = iVar3;
if (0 < param_3) {
do {
*(ushort *)(param_5 + iVar5 * 2) = *(byte *)(param_1 + iVar1 * 4) - 0x80;
*(ushort *)(param_5 + 0x80 + iVar5 * 2) = *(byte *)(param_1 + 1 + iVar1 * 4) - 0x80;
*(ushort *)(param_5 + 0x100 + iVar5 * 2) = *(byte *)(param_1 + 2 + iVar1 * 4) - 0x80;
*(ushort *)(param_5 + 0x180 + iVar5 * 2) = *(byte *)(param_1 + 3 + iVar1 * 4) - 0x80;
iVar1 = iVar1 + 1;
iVar5 = iVar5 + 1;
} while (iVar1 < param_3);
}
if (iVar1 < 8) {
puVar2 = (undefined2 *)(param_5 + (iVar1 + iVar3) * 2);
do {
iVar1 = iVar1 + 1;
*puVar2 = puVar2[-1];
puVar2[0x40] = puVar2[0x3f];
puVar2[0x80] = puVar2[0x7f];
puVar2[0xc0] = puVar2[0xbf];
puVar2 = puVar2 + 1;
} while (iVar1 < 8);
}
param_1 = param_1 + param_2;
iVar3 = iVar3 + 8;
iVar4 = iVar4 + 1;
} while (iVar4 < param_4);
}
if (iVar4 < 8) {
puVar2 = (undefined2 *)(param_5 + iVar4 * 0x10);
do {
iVar4 = iVar4 + 1;
*puVar2 = *(undefined2 *)(param_5 + -0x10 + param_4 * 0x10);
puVar2[0x40] = *(undefined2 *)(param_5 + 0x70 + param_4 * 0x10);
puVar2[0x80] = *(undefined2 *)(param_5 + 0xf0 + param_4 * 0x10);
puVar2[0xc0] = *(undefined2 *)(param_5 + 0x170 + param_4 * 0x10);
puVar2[1] = *(undefined2 *)(param_5 + -0xe + param_4 * 0x10);
puVar2[0x41] = *(undefined2 *)(param_5 + 0x72 + param_4 * 0x10);
puVar2[0x81] = *(undefined2 *)(param_5 + 0xf2 + param_4 * 0x10);
puVar2[0xc1] = *(undefined2 *)(param_5 + 0x172 + param_4 * 0x10);
puVar2[2] = *(undefined2 *)(param_5 + -0xc + param_4 * 0x10);
puVar2[0x42] = *(undefined2 *)(param_5 + 0x74 + param_4 * 0x10);
puVar2[0x82] = *(undefined2 *)(param_5 + 0xf4 + param_4 * 0x10);
puVar2[0xc2] = *(undefined2 *)(param_5 + 0x174 + param_4 * 0x10);
puVar2[3] = *(undefined2 *)(param_5 + -10 + param_4 * 0x10);
puVar2[0x43] = *(undefined2 *)(param_5 + 0x76 + param_4 * 0x10);
puVar2[0x83] = *(undefined2 *)(param_5 + 0xf6 + param_4 * 0x10);
puVar2[0xc3] = *(undefined2 *)(param_5 + 0x176 + param_4 * 0x10);
puVar2[4] = *(undefined2 *)(param_5 + -8 + param_4 * 0x10);
puVar2[0x44] = *(undefined2 *)(param_5 + 0x78 + param_4 * 0x10);
puVar2[0x84] = *(undefined2 *)(param_5 + 0xf8 + param_4 * 0x10);
puVar2[0xc4] = *(undefined2 *)(param_5 + 0x178 + param_4 * 0x10);
puVar2[5] = *(undefined2 *)(param_5 + -6 + param_4 * 0x10);
puVar2[0x45] = *(undefined2 *)(param_5 + 0x7a + param_4 * 0x10);
puVar2[0x85] = *(undefined2 *)(param_5 + 0xfa + param_4 * 0x10);
puVar2[0xc5] = *(undefined2 *)(param_5 + 0x17a + param_4 * 0x10);
puVar2[6] = *(undefined2 *)(param_5 + -4 + param_4 * 0x10);
puVar2[0x46] = *(undefined2 *)(param_5 + 0x7c + param_4 * 0x10);
puVar2[0x86] = *(undefined2 *)(param_5 + 0xfc + param_4 * 0x10);
puVar2[0xc6] = *(undefined2 *)(param_5 + 0x17c + param_4 * 0x10);
puVar2[7] = *(undefined2 *)(param_5 + -2 + param_4 * 0x10);
puVar2[0x47] = *(undefined2 *)(param_5 + 0x7e + param_4 * 0x10);
puVar2[0x87] = *(undefined2 *)(param_5 + 0xfe + param_4 * 0x10);
puVar2[199] = *(undefined2 *)(param_5 + 0x17e + param_4 * 0x10);
puVar2 = puVar2 + 8;
} while (iVar4 < 8);
}
return;
}
// --- FUN_0062acb0 at 0x0062ACB0 (size: 892) ---
void FUN_0062acb0(int param_1,int param_2,int param_3,int param_4,int param_5)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
short *psVar7;
int iVar8;
byte *pbVar9;
iVar1 = 0;
if (0 < param_4) {
iVar3 = 0;
iVar2 = 0;
do {
iVar4 = 0;
iVar5 = iVar2;
iVar8 = iVar3;
if (0 < param_3) {
do {
iVar4 = iVar4 + 1;
*(ushort *)(param_5 + iVar5 * 2) = *(byte *)(iVar8 + param_1) - 0x80;
*(ushort *)(param_5 + 0x80 + iVar5 * 2) = *(byte *)(iVar8 + 1 + param_1) - 0x80;
*(ushort *)(param_5 + 0x100 + iVar5 * 2) = *(byte *)(iVar8 + 2 + param_1) - 0x80;
iVar5 = iVar5 + 1;
iVar8 = iVar8 + 3;
} while (iVar4 < param_3);
}
iVar8 = iVar4 * 3;
iVar5 = iVar3 + iVar8;
if (iVar4 < 8) {
if (3 < 8 - iVar4) {
iVar6 = iVar4 + iVar2;
do {
iVar4 = iVar4 + 3;
*(ushort *)(param_5 + iVar6 * 2) = *(byte *)(iVar5 + -3 + param_1) - 0x80;
*(ushort *)(param_5 + 0x80 + iVar6 * 2) = *(byte *)(iVar5 + -2 + param_1) - 0x80;
*(ushort *)(param_5 + 0x100 + iVar6 * 2) = *(byte *)(iVar5 + -1 + param_1) - 0x80;
*(ushort *)(param_5 + 2 + iVar6 * 2) = *(byte *)(iVar5 + -3 + param_1) - 0x80;
*(ushort *)(param_5 + 0x82 + iVar6 * 2) = *(byte *)(iVar5 + -2 + param_1) - 0x80;
*(ushort *)(param_5 + 0x102 + iVar6 * 2) = *(byte *)(iVar5 + -1 + param_1) - 0x80;
*(ushort *)(param_5 + 4 + iVar6 * 2) = *(byte *)(iVar5 + -3 + param_1) - 0x80;
*(ushort *)(param_5 + 0x84 + iVar6 * 2) = *(byte *)(iVar5 + -2 + param_1) - 0x80;
*(ushort *)(param_5 + 0x104 + iVar6 * 2) = *(byte *)(iVar5 + -1 + param_1) - 0x80;
iVar6 = iVar6 + 3;
} while (iVar4 < 4);
}
pbVar9 = (byte *)(iVar3 + -3 + iVar8 + param_1);
psVar7 = (short *)(param_5 + (iVar4 + iVar2) * 2);
do {
iVar4 = iVar4 + 1;
*psVar7 = *pbVar9 - 0x80;
psVar7[0x40] = pbVar9[1] - 0x80;
psVar7[0x80] = pbVar9[2] - 0x80;
psVar7 = psVar7 + 1;
} while (iVar4 < 8);
}
iVar3 = iVar3 + param_2;
iVar2 = iVar2 + 8;
iVar1 = iVar1 + 1;
} while (iVar1 < param_4);
}
iVar2 = iVar1 * 8;
for (; iVar1 < 8; iVar1 = iVar1 + 1) {
*(ushort *)(param_5 + iVar1 * 0x10) = *(byte *)(iVar2 + -8 + param_1) - 0x80;
*(ushort *)(param_5 + 0x80 + iVar1 * 0x10) = *(byte *)(iVar2 + -7 + param_1) - 0x80;
*(ushort *)(param_5 + 0x100 + iVar1 * 0x10) = *(byte *)(iVar2 + -6 + param_1) - 0x80;
*(ushort *)(param_5 + 2 + iVar1 * 0x10) = *(byte *)(iVar2 + -5 + param_1) - 0x80;
*(ushort *)(param_5 + 0x82 + iVar1 * 0x10) = *(byte *)(iVar2 + -4 + param_1) - 0x80;
*(ushort *)(param_5 + 0x102 + iVar1 * 0x10) = *(byte *)(iVar2 + -3 + param_1) - 0x80;
*(ushort *)(param_5 + 4 + iVar1 * 0x10) = *(byte *)(iVar2 + -2 + param_1) - 0x80;
*(ushort *)(param_5 + 0x84 + iVar1 * 0x10) = *(byte *)(iVar2 + -1 + param_1) - 0x80;
*(ushort *)(param_5 + 0x104 + iVar1 * 0x10) = *(byte *)(iVar2 + param_1) - 0x80;
*(ushort *)(param_5 + 6 + iVar1 * 0x10) = *(byte *)(iVar2 + 1 + param_1) - 0x80;
*(ushort *)(param_5 + 0x86 + iVar1 * 0x10) = *(byte *)(iVar2 + 2 + param_1) - 0x80;
*(ushort *)(param_5 + 0x106 + iVar1 * 0x10) = *(byte *)(iVar2 + 3 + param_1) - 0x80;
*(ushort *)(param_5 + 8 + iVar1 * 0x10) = *(byte *)(iVar2 + 4 + param_1) - 0x80;
*(ushort *)(param_5 + 0x88 + iVar1 * 0x10) = *(byte *)(iVar2 + 5 + param_1) - 0x80;
*(ushort *)(param_5 + 0x108 + iVar1 * 0x10) = *(byte *)(iVar2 + 6 + param_1) - 0x80;
*(ushort *)(param_5 + 10 + iVar1 * 0x10) = *(byte *)(iVar2 + 7 + param_1) - 0x80;
*(ushort *)(param_5 + 0x8a + iVar1 * 0x10) = *(byte *)(iVar2 + 8 + param_1) - 0x80;
*(ushort *)(param_5 + 0x10a + iVar1 * 0x10) = *(byte *)(iVar2 + 9 + param_1) - 0x80;
*(ushort *)(param_5 + 0xc + iVar1 * 0x10) = *(byte *)(iVar2 + 10 + param_1) - 0x80;
*(ushort *)(param_5 + 0x8c + iVar1 * 0x10) = *(byte *)(iVar2 + 0xb + param_1) - 0x80;
*(ushort *)(param_5 + 0x10c + iVar1 * 0x10) = *(byte *)(iVar2 + 0xc + param_1) - 0x80;
*(ushort *)(param_5 + 0xe + iVar1 * 0x10) = *(byte *)(iVar2 + 0xd + param_1) - 0x80;
*(ushort *)(param_5 + 0x8e + iVar1 * 0x10) = *(byte *)(iVar2 + 0xe + param_1) - 0x80;
*(ushort *)(param_5 + 0x10e + iVar1 * 0x10) = *(byte *)(iVar2 + 0xf + param_1) - 0x80;
}
return;
}
// --- FUN_0062b2a0 at 0x0062B2A0 (size: 1261) ---
void FUN_0062b2a0(int param_1,int param_2,int param_3,int param_4,int param_5)
{
ushort *puVar1;
ushort *puVar2;
ushort *puVar3;
ushort *puVar4;
int iVar5;
int iVar6;
ushort *puVar7;
int iVar8;
ushort *puVar9;
int iVar10;
int iVar11;
short *psVar12;
ushort local_642;
ushort local_640 [16];
undefined1 local_620 [478];
ushort local_442 [256];
ushort auStack_242 [267];
int local_2c;
int local_28;
ushort *local_24;
int local_20;
int local_1c;
int local_18;
iVar8 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_2c = 0;
local_24 = local_640;
do {
iVar6 = 0;
if (0 < param_3) {
local_20 = iVar8;
iVar10 = local_1c;
iVar11 = local_18;
do {
iVar6 = iVar6 + 1;
local_640[iVar10] = (ushort)*(byte *)(iVar11 + param_1);
local_442[iVar10 + 1] = (ushort)*(byte *)(iVar11 + 1 + param_1);
iVar5 = iVar11 + 2;
iVar11 = iVar11 + 3;
auStack_242[iVar10 + 1] = (ushort)*(byte *)(iVar5 + param_1);
iVar10 = iVar10 + 1;
} while (iVar6 < param_3);
}
if (iVar6 < 0x10) {
local_28 = (int)local_640 + local_2c;
puVar7 = local_640 + iVar6 + local_1c;
local_20 = iVar8;
do {
iVar6 = iVar6 + 1;
*puVar7 = *(ushort *)((int)&local_642 + param_3 * 2 + local_2c);
puVar7[0x100] = *(ushort *)((int)local_442 + param_3 * 2 + local_2c);
puVar7[0x200] = *(ushort *)((int)auStack_242 + param_3 * 2 + local_2c);
puVar7 = puVar7 + 1;
} while (iVar6 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_2c = local_2c + 0x20;
iVar8 = iVar8 + 1;
} while (iVar8 < param_4);
}
if (iVar8 < 0x10) {
puVar7 = local_640 + iVar8 * 0x10;
do {
*puVar7 = puVar7[-0x10];
puVar7[0x100] = puVar7[0xf0];
iVar8 = iVar8 + 1;
puVar7[0x200] = puVar7[0x1f0];
puVar7[1] = puVar7[-0xf];
puVar7[0x101] = puVar7[0xf1];
puVar7[0x201] = puVar7[0x1f1];
puVar7[2] = puVar7[-0xe];
puVar7[0x102] = puVar7[0xf2];
puVar7[0x202] = puVar7[0x1f2];
puVar7[3] = puVar7[-0xd];
puVar7[0x103] = puVar7[0xf3];
puVar7[0x203] = puVar7[499];
puVar7[4] = puVar7[-0xc];
puVar7[0x104] = puVar7[0xf4];
puVar7[0x204] = puVar7[500];
puVar7[5] = puVar7[-0xb];
puVar7[0x105] = puVar7[0xf5];
puVar7[0x205] = puVar7[0x1f5];
puVar7[6] = puVar7[-10];
puVar7[0x106] = puVar7[0xf6];
puVar7[0x206] = puVar7[0x1f6];
puVar7[7] = puVar7[-9];
puVar7[0x107] = puVar7[0xf7];
puVar7[0x207] = puVar7[0x1f7];
puVar7[8] = puVar7[-8];
puVar7[0x108] = puVar7[0xf8];
puVar7[0x208] = puVar7[0x1f8];
puVar7[9] = puVar7[-7];
puVar7[0x109] = puVar7[0xf9];
puVar7[0x209] = puVar7[0x1f9];
puVar7[10] = puVar7[-6];
puVar7[0x10a] = puVar7[0xfa];
puVar7[0x20a] = puVar7[0x1fa];
puVar7[0xb] = puVar7[-5];
puVar7[0x10b] = puVar7[0xfb];
puVar7[0x20b] = puVar7[0x1fb];
puVar7[0xc] = puVar7[-4];
puVar7[0x10c] = puVar7[0xfc];
puVar7[0x20c] = puVar7[0x1fc];
puVar7[0xd] = puVar7[-3];
puVar7[0x10d] = puVar7[0xfd];
puVar7[0x20d] = puVar7[0x1fd];
puVar7[0xe] = puVar7[-2];
puVar7[0x10e] = puVar7[0xfe];
puVar7[0x20e] = puVar7[0x1fe];
puVar7[0xf] = puVar7[-1];
puVar7[0x10f] = puVar7[0xff];
puVar7[0x20f] = puVar7[0x1ff];
puVar7 = puVar7 + 0x10;
} while (iVar8 < 0x10);
}
iVar6 = 0;
iVar8 = 0;
iVar10 = 0;
do {
psVar12 = (short *)(param_5 + iVar6 * 2);
puVar7 = local_640 + iVar8;
puVar9 = local_640 + iVar10;
do {
*psVar12 = *puVar7 - 0x80;
psVar12[0x40] = puVar7[8] - 0x80;
psVar12[0x80] = puVar7[0x80] - 0x80;
psVar12[0xc0] = puVar7[0x88] - 0x80;
puVar7 = puVar7 + 1;
psVar12[0x100] =
(short)((int)(short)puVar9[0x100] + (int)(short)puVar9[0x101] + (int)(short)puVar9[0x110]
+ 2 + (int)(short)puVar9[0x111] >> 2) + -0x80;
puVar1 = puVar9 + 0x200;
puVar2 = puVar9 + 0x201;
puVar3 = puVar9 + 0x210;
puVar4 = puVar9 + 0x211;
puVar9 = puVar9 + 2;
psVar12[0x140] =
(short)((int)(short)*puVar1 + (int)(short)*puVar2 + (int)(short)*puVar3 + 2 +
(int)(short)*puVar4 >> 2) + -0x80;
psVar12 = psVar12 + 1;
} while ((int)puVar9 < (int)(local_620 + iVar10 * 2));
iVar6 = iVar6 + 8;
iVar8 = iVar8 + 0x10;
iVar10 = iVar10 + 0x20;
} while (iVar10 < 0x100);
return;
}
// --- FUN_0062b790 at 0x0062B790 (size: 1284) ---
void FUN_0062b790(byte *param_1,int param_2,short *param_3,short *param_4,short *param_5)
{
byte bVar1;
byte bVar2;
byte bVar3;
byte bVar4;
byte bVar5;
byte bVar6;
byte bVar7;
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
byte bVar16;
byte bVar17;
byte bVar18;
byte bVar19;
byte bVar20;
byte bVar21;
byte bVar22;
byte bVar23;
byte bVar24;
byte bVar25;
byte bVar26;
byte bVar27;
byte bVar28;
byte bVar29;
byte bVar30;
byte bVar31;
byte bVar32;
byte bVar33;
byte bVar34;
byte bVar35;
byte bVar36;
byte bVar37;
byte bVar38;
byte bVar39;
byte bVar40;
byte bVar41;
byte bVar42;
byte bVar43;
byte bVar44;
byte bVar45;
byte bVar46;
byte bVar47;
byte bVar48;
byte bVar49;
byte bVar50;
byte bVar51;
byte bVar52;
byte bVar53;
byte bVar54;
byte bVar55;
byte bVar56;
byte bVar57;
byte bVar58;
byte bVar59;
byte bVar60;
byte bVar61;
byte bVar62;
int local_90;
local_90 = 0;
do {
*param_3 = *param_1 - 0x80;
param_3[1] = param_1[3] - 0x80;
param_3[2] = param_1[6] - 0x80;
param_3[3] = param_1[9] - 0x80;
param_3[4] = param_1[0xc] - 0x80;
param_3[5] = param_1[0xf] - 0x80;
param_3[6] = param_1[0x12] - 0x80;
param_3[7] = param_1[0x15] - 0x80;
param_3[0x40] = param_1[0x18] - 0x80;
param_3[0x41] = param_1[0x1b] - 0x80;
param_3[0x42] = param_1[0x1e] - 0x80;
param_3[0x43] = param_1[0x21] - 0x80;
param_3[0x44] = param_1[0x24] - 0x80;
param_3[0x45] = param_1[0x27] - 0x80;
param_3[0x46] = param_1[0x2a] - 0x80;
param_3[0x47] = param_1[0x2d] - 0x80;
bVar1 = param_1[1];
bVar2 = param_1[4];
bVar3 = param_1[7];
bVar4 = param_1[10];
bVar5 = param_1[0xd];
bVar6 = param_1[0x10];
bVar7 = param_1[0x16];
bVar8 = param_1[0x13];
bVar9 = param_1[0x19];
bVar10 = param_1[0x1c];
bVar11 = param_1[0x22];
bVar12 = param_1[0x1f];
bVar13 = param_1[0x25];
bVar14 = param_1[0x28];
bVar15 = param_1[0x2e];
bVar16 = param_1[0x2b];
bVar17 = param_1[2];
bVar18 = param_1[5];
bVar19 = param_1[0xb];
bVar20 = param_1[8];
bVar21 = param_1[0xe];
bVar22 = param_1[0x11];
bVar23 = param_1[0x17];
bVar24 = param_1[0x14];
bVar25 = param_1[0x1a];
bVar26 = param_1[0x1d];
bVar27 = param_1[0x23];
bVar28 = param_1[0x20];
bVar29 = param_1[0x26];
bVar30 = param_1[0x29];
bVar31 = param_1[0x2f];
bVar32 = param_1[0x2c];
param_1 = param_1 + param_2;
param_3[8] = *param_1 - 0x80;
param_3[9] = param_1[3] - 0x80;
param_3[10] = param_1[6] - 0x80;
param_3[0xb] = param_1[9] - 0x80;
param_3[0xc] = param_1[0xc] - 0x80;
param_3[0xd] = param_1[0xf] - 0x80;
param_3[0xe] = param_1[0x12] - 0x80;
param_3[0xf] = param_1[0x15] - 0x80;
param_3[0x48] = param_1[0x18] - 0x80;
param_3[0x49] = param_1[0x1b] - 0x80;
param_3[0x4a] = param_1[0x1e] - 0x80;
param_3[0x4b] = param_1[0x21] - 0x80;
param_3[0x4c] = param_1[0x24] - 0x80;
param_3[0x4d] = param_1[0x27] - 0x80;
param_3[0x4e] = param_1[0x2a] - 0x80;
param_3[0x4f] = param_1[0x2d] - 0x80;
bVar33 = param_1[7];
bVar34 = param_1[10];
bVar35 = param_1[0x10];
bVar36 = param_1[0xd];
bVar37 = param_1[0x13];
bVar38 = param_1[0x16];
bVar39 = param_1[0x1c];
bVar40 = param_1[0x19];
bVar41 = param_1[0x1f];
bVar42 = param_1[0x22];
bVar43 = param_1[0x28];
bVar44 = param_1[0x25];
bVar45 = param_1[0x2b];
bVar46 = param_1[0x2e];
bVar47 = param_1[5];
bVar48 = param_1[2];
bVar49 = param_1[8];
bVar50 = param_1[0xb];
bVar51 = param_1[0x11];
bVar52 = param_1[0xe];
bVar53 = param_1[0x14];
bVar54 = param_1[0x17];
bVar55 = param_1[0x1d];
bVar56 = param_1[0x1a];
bVar57 = param_1[0x20];
bVar58 = param_1[0x23];
bVar59 = param_1[0x26];
bVar60 = param_1[0x29];
bVar61 = param_1[0x2c];
bVar62 = param_1[0x2f];
*param_4 = (short)((int)((uint)param_1[1] + (uint)param_1[4] + 2 + (uint)bVar1 + (uint)bVar2) >>
2) + -0x80;
param_4[1] = (short)((int)((uint)bVar33 + (uint)bVar34 + 2 + (uint)bVar3 + (uint)bVar4) >> 2) +
-0x80;
param_4[2] = (short)((int)((uint)bVar36 + (uint)bVar35 + 2 + (uint)bVar5 + (uint)bVar6) >> 2) +
-0x80;
param_4[3] = (short)((int)((uint)bVar37 + (uint)bVar38 + 2 + (uint)bVar8 + (uint)bVar7) >> 2) +
-0x80;
param_4[4] = (short)((int)((uint)bVar40 + (uint)bVar39 + 2 + (uint)bVar9 + (uint)bVar10) >> 2) +
-0x80;
param_4[5] = (short)((int)((uint)bVar41 + (uint)bVar42 + 2 + (uint)bVar12 + (uint)bVar11) >> 2)
+ -0x80;
param_4[6] = (short)((int)((uint)bVar44 + (uint)bVar43 + 2 + (uint)bVar13 + (uint)bVar14) >> 2)
+ -0x80;
param_4[7] = (short)((int)((uint)bVar45 + (uint)bVar46 + 2 + (uint)bVar16 + (uint)bVar15) >> 2)
+ -0x80;
*param_5 = (short)((int)((uint)bVar48 + (uint)bVar47 + 2 + (uint)bVar17 + (uint)bVar18) >> 2) +
-0x80;
param_5[1] = (short)((int)((uint)bVar49 + (uint)bVar50 + 2 + (uint)bVar20 + (uint)bVar19) >> 2)
+ -0x80;
param_5[2] = (short)((int)((uint)bVar52 + (uint)bVar51 + 2 + (uint)bVar21 + (uint)bVar22) >> 2)
+ -0x80;
param_5[3] = (short)((int)((uint)bVar53 + (uint)bVar54 + 2 + (uint)bVar24 + (uint)bVar23) >> 2)
+ -0x80;
param_5[4] = (short)((int)((uint)bVar56 + (uint)bVar55 + 2 + (uint)bVar25 + (uint)bVar26) >> 2)
+ -0x80;
param_4 = param_4 + 8;
param_5[5] = (short)((int)((uint)bVar57 + (uint)bVar58 + 2 + (uint)bVar28 + (uint)bVar27) >> 2)
+ -0x80;
param_5[6] = (short)((int)((uint)bVar59 + (uint)bVar60 + 2 + (uint)bVar29 + (uint)bVar30) >> 2)
+ -0x80;
param_5[7] = (short)((int)((uint)bVar61 + (uint)bVar62 + 2 + (uint)bVar32 + (uint)bVar31) >> 2)
+ -0x80;
param_5 = param_5 + 8;
param_3 = param_3 + 0x10;
param_1 = param_1 + param_2;
local_90 = local_90 + 2;
} while (local_90 < 8);
return;
}
// --- FUN_0062be20 at 0x0062BE20 (size: 1165) ---
void FUN_0062be20(int param_1,int param_2,int param_3,int param_4,int param_5)
{
int iVar1;
int iVar2;
ushort *puVar3;
int iVar4;
ushort *puVar5;
int iVar6;
int iVar7;
short *psVar8;
ushort local_342;
ushort local_340 [127];
ushort local_242 [128];
ushort auStack_142 [139];
int local_2c;
ushort *local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
iVar4 = 0;
if (0 < param_4) {
local_18 = 0;
local_1c = 0;
local_24 = 0;
local_28 = local_340;
do {
iVar2 = 0;
if (0 < param_3) {
local_20 = iVar4;
iVar6 = local_1c;
iVar7 = local_18;
do {
iVar2 = iVar2 + 1;
local_340[iVar6] = (ushort)*(byte *)(iVar7 + param_1);
local_242[iVar6 + 1] = (ushort)*(byte *)(iVar7 + 1 + param_1);
iVar1 = iVar7 + 2;
iVar7 = iVar7 + 3;
auStack_142[iVar6 + 1] = (ushort)*(byte *)(iVar1 + param_1);
iVar6 = iVar6 + 1;
} while (iVar2 < param_3);
}
if (iVar2 < 0x10) {
local_2c = (int)local_340 + local_24;
puVar3 = local_340 + iVar2 + local_1c;
local_20 = iVar4;
do {
iVar2 = iVar2 + 1;
*puVar3 = *(ushort *)((int)&local_342 + param_3 * 2 + local_24);
puVar3[0x80] = *(ushort *)((int)local_242 + param_3 * 2 + local_24);
puVar3[0x100] = *(ushort *)((int)auStack_142 + param_3 * 2 + local_24);
puVar3 = puVar3 + 1;
} while (iVar2 < 0x10);
}
local_18 = local_18 + param_2;
local_1c = local_1c + 0x10;
local_24 = local_24 + 0x20;
iVar4 = iVar4 + 1;
} while (iVar4 < param_4);
}
if (iVar4 < 8) {
puVar3 = local_340 + iVar4 * 0x10;
do {
*puVar3 = puVar3[-0x10];
puVar3[0x80] = puVar3[0x70];
iVar4 = iVar4 + 1;
puVar3[0x100] = puVar3[0xf0];
puVar3[1] = puVar3[-0xf];
puVar3[0x81] = puVar3[0x71];
puVar3[0x101] = puVar3[0xf1];
puVar3[2] = puVar3[-0xe];
puVar3[0x82] = puVar3[0x72];
puVar3[0x102] = puVar3[0xf2];
puVar3[3] = puVar3[-0xd];
puVar3[0x83] = puVar3[0x73];
puVar3[0x103] = puVar3[0xf3];
puVar3[4] = puVar3[-0xc];
puVar3[0x84] = puVar3[0x74];
puVar3[0x104] = puVar3[0xf4];
puVar3[5] = puVar3[-0xb];
puVar3[0x85] = puVar3[0x75];
puVar3[0x105] = puVar3[0xf5];
puVar3[6] = puVar3[-10];
puVar3[0x86] = puVar3[0x76];
puVar3[0x106] = puVar3[0xf6];
puVar3[7] = puVar3[-9];
puVar3[0x87] = puVar3[0x77];
puVar3[0x107] = puVar3[0xf7];
puVar3[8] = puVar3[-8];
puVar3[0x88] = puVar3[0x78];
puVar3[0x108] = puVar3[0xf8];
puVar3[9] = puVar3[-7];
puVar3[0x89] = puVar3[0x79];
puVar3[0x109] = puVar3[0xf9];
puVar3[10] = puVar3[-6];
puVar3[0x8a] = puVar3[0x7a];
puVar3[0x10a] = puVar3[0xfa];
puVar3[0xb] = puVar3[-5];
puVar3[0x8b] = puVar3[0x7b];
puVar3[0x10b] = puVar3[0xfb];
puVar3[0xc] = puVar3[-4];
puVar3[0x8c] = puVar3[0x7c];
puVar3[0x10c] = puVar3[0xfc];
puVar3[0xd] = puVar3[-3];
puVar3[0x8d] = puVar3[0x7d];
puVar3[0x10d] = puVar3[0xfd];
puVar3[0xe] = puVar3[-2];
puVar3[0x8e] = puVar3[0x7e];
puVar3[0x10e] = puVar3[0xfe];
puVar3[0xf] = puVar3[-1];
puVar3[0x8f] = puVar3[0x7f];
puVar3[0x10f] = puVar3[0xff];
puVar3 = puVar3 + 0x10;
} while (iVar4 < 8);
}
iVar4 = 0;
local_2c = 0;
local_28 = local_340;
do {
psVar8 = (short *)(param_5 + iVar4 * 2);
puVar3 = local_28 + local_2c;
puVar5 = local_28 + local_2c;
do {
*psVar8 = *puVar3 - 0x80;
psVar8[0x40] = puVar3[8] - 0x80;
psVar8[0x80] = (short)((short)puVar5[0x80] + 1 + (int)(short)puVar5[0x81] >> 1) + -0x80;
psVar8[0xc0] = (short)((short)puVar5[0x100] + 1 + (int)(short)puVar5[0x101] >> 1) + -0x80;
psVar8 = psVar8 + 1;
puVar3 = puVar3 + 1;
puVar5 = puVar5 + 2;
} while ((int)puVar5 < (int)(local_28 + local_2c + 0x10));
iVar4 = iVar4 + 8;
local_2c = local_2c + 0x10;
} while (local_2c < 0x80);
return;
}
// --- FUN_0062c620 at 0x0062C620 (size: 1434) ---
void FUN_0062c620(int param_1,int param_2,uint param_3,int param_4,int param_5)
{
int iVar1;
ushort *puVar2;
int iVar3;
int iVar4;
ushort *puVar5;
uint uVar6;
short *psVar7;
ushort local_342;
ushort local_340 [127];
ushort local_242 [128];
ushort auStack_142 [131];
int local_3c;
ushort *local_38;
int local_34;
int local_30;
int local_2c;
uint local_28;
int local_24;
uint local_20;
int local_1c;
int local_18;
int local_14;
iVar3 = 0;
if (0 < param_4) {
local_30 = param_3 - 1;
local_14 = 0;
local_34 = param_3 * 2;
local_3c = param_2;
local_18 = 0;
local_1c = 0;
local_20 = param_3 & 1;
local_24 = 0;
local_38 = local_340;
local_28 = param_3;
do {
uVar6 = 0;
if (0 < local_30) {
local_2c = local_14;
iVar3 = local_14;
iVar4 = local_18;
do {
uVar6 = uVar6 + 2;
local_340[iVar4] = (ushort)*(byte *)(iVar3 + param_1);
local_340[iVar4 + 1] = (ushort)*(byte *)(iVar3 + 2 + param_1);
local_242[iVar4 + 1] = (ushort)*(byte *)(iVar3 + 1 + param_1);
local_242[iVar4 + 2] = (ushort)*(byte *)(iVar3 + 1 + param_1);
auStack_142[iVar4 + 1] = (ushort)*(byte *)(iVar3 + 3 + param_1);
iVar1 = iVar3 + 3;
iVar3 = iVar3 + 4;
auStack_142[iVar4 + 2] = (ushort)*(byte *)(iVar1 + param_1);
iVar4 = iVar4 + 2;
} while ((int)uVar6 < local_30);
}
if ((param_3 & 1) != 0) {
(&local_342)[local_28] = (ushort)*(byte *)(local_34 + -2 + param_1);
local_242[local_28] = (ushort)*(byte *)(local_34 + -1 + param_1);
auStack_142[local_28] = (ushort)*(byte *)(local_34 + -3 + param_1);
uVar6 = param_3;
}
if ((int)uVar6 < 0x10) {
local_2c = (int)local_340 + local_1c;
puVar2 = local_340 + uVar6 + local_18;
do {
uVar6 = uVar6 + 1;
*puVar2 = *(ushort *)((int)&local_342 + param_3 * 2 + local_1c);
puVar2[0x80] = *(ushort *)((int)local_242 + param_3 * 2 + local_1c);
puVar2[0x100] = *(ushort *)((int)auStack_142 + param_3 * 2 + local_1c);
puVar2 = puVar2 + 1;
} while ((int)uVar6 < 0x10);
}
local_14 = local_14 + param_2;
local_18 = local_18 + 0x10;
local_28 = local_28 + 0x10;
local_34 = local_34 + param_2;
iVar3 = local_24 + 1;
local_1c = local_1c + 0x20;
local_24 = iVar3;
} while (iVar3 < param_4);
}
if (iVar3 < 8) {
puVar2 = local_340 + iVar3 * 0x10;
do {
*puVar2 = puVar2[-0x10];
puVar2[0x80] = puVar2[0x70];
iVar3 = iVar3 + 1;
puVar2[0x100] = puVar2[0xf0];
puVar2[1] = puVar2[-0xf];
puVar2[0x81] = puVar2[0x71];
puVar2[0x101] = puVar2[0xf1];
puVar2[2] = puVar2[-0xe];
puVar2[0x82] = puVar2[0x72];
puVar2[0x102] = puVar2[0xf2];
puVar2[3] = puVar2[-0xd];
puVar2[0x83] = puVar2[0x73];
puVar2[0x103] = puVar2[0xf3];
puVar2[4] = puVar2[-0xc];
puVar2[0x84] = puVar2[0x74];
puVar2[0x104] = puVar2[0xf4];
puVar2[5] = puVar2[-0xb];
puVar2[0x85] = puVar2[0x75];
puVar2[0x105] = puVar2[0xf5];
puVar2[6] = puVar2[-10];
puVar2[0x86] = puVar2[0x76];
puVar2[0x106] = puVar2[0xf6];
puVar2[7] = puVar2[-9];
puVar2[0x87] = puVar2[0x77];
puVar2[0x107] = puVar2[0xf7];
puVar2[8] = puVar2[-8];
puVar2[0x88] = puVar2[0x78];
puVar2[0x108] = puVar2[0xf8];
puVar2[9] = puVar2[-7];
puVar2[0x89] = puVar2[0x79];
puVar2[0x109] = puVar2[0xf9];
puVar2[10] = puVar2[-6];
puVar2[0x8a] = puVar2[0x7a];
puVar2[0x10a] = puVar2[0xfa];
puVar2[0xb] = puVar2[-5];
puVar2[0x8b] = puVar2[0x7b];
puVar2[0x10b] = puVar2[0xfb];
puVar2[0xc] = puVar2[-4];
puVar2[0x8c] = puVar2[0x7c];
puVar2[0x10c] = puVar2[0xfc];
puVar2[0xd] = puVar2[-3];
puVar2[0x8d] = puVar2[0x7d];
puVar2[0x10d] = puVar2[0xfd];
puVar2[0xe] = puVar2[-2];
puVar2[0x8e] = puVar2[0x7e];
puVar2[0x10e] = puVar2[0xfe];
puVar2[0xf] = puVar2[-1];
puVar2[0x8f] = puVar2[0x7f];
puVar2[0x10f] = puVar2[0xff];
puVar2 = puVar2 + 0x10;
} while (iVar3 < 8);
}
iVar3 = 0;
local_3c = 0;
local_38 = local_340;
do {
psVar7 = (short *)(param_5 + iVar3 * 2);
puVar2 = local_38 + local_3c;
puVar5 = local_38 + local_3c;
do {
*psVar7 = *puVar2 - 0x80;
psVar7[0x40] = puVar2[8] - 0x80;
psVar7[0x80] = (short)((short)puVar5[0x80] + 1 + (int)(short)puVar5[0x81] >> 1) + -0x80;
psVar7[0xc0] = (short)((short)puVar5[0x100] + 1 + (int)(short)puVar5[0x101] >> 1) + -0x80;
psVar7 = psVar7 + 1;
puVar2 = puVar2 + 1;
puVar5 = puVar5 + 2;
} while ((int)puVar5 < (int)(local_38 + local_3c + 0x10));
iVar3 = iVar3 + 8;
local_3c = local_3c + 0x10;
} while (local_3c < 0x80);
return;
}
// --- FUN_0062cf10 at 0x0062CF10 (size: 1112) ---
void FUN_0062cf10(int param_1,int param_2,uint param_3,int param_4,int param_5)
{
byte *pbVar1;
int iVar2;
ushort *puVar3;
int iVar4;
int iVar5;
uint uVar6;
ushort local_e2;
ushort local_e0 [70];
int local_54;
uint local_50;
int local_4c;
uint local_48;
int local_44;
int local_40;
int local_3c;
uint local_38;
ushort *local_34;
int local_30;
int local_2c;
uint local_28;
ushort *local_24;
int local_20;
int local_1c;
ushort *local_18;
iVar5 = 0;
if (0 < param_4) {
local_38 = param_3 & 1;
local_44 = param_3 * 2 + -2;
local_48 = param_3;
local_4c = param_3 - 5;
local_40 = 0;
local_54 = param_2;
local_20 = 0;
local_3c = 0;
local_50 = param_3;
local_1c = 0;
local_24 = local_e0;
local_40 = 0;
local_28 = param_3;
local_18 = local_e0;
do {
uVar6 = 0;
if (0 < (int)param_3) {
if (4 < (int)param_3) {
local_34 = (ushort *)local_40;
uVar6 = 0;
iVar5 = local_40;
iVar4 = local_20;
do {
uVar6 = uVar6 + 4;
local_e0[iVar4] = (ushort)*(byte *)(iVar5 + param_1);
local_e0[iVar4 + 1] = (ushort)*(byte *)(iVar5 + 1 + param_1);
local_e0[iVar4 + 2] = (ushort)*(byte *)(iVar5 + 2 + param_1);
iVar2 = iVar5 + 3;
iVar5 = iVar5 + 4;
local_e0[iVar4 + 3] = (ushort)*(byte *)(iVar2 + param_1);
iVar4 = iVar4 + 4;
} while ((int)uVar6 <= (int)(param_3 - 5));
}
local_30 = uVar6 + local_40;
iVar5 = uVar6 + local_20;
do {
pbVar1 = (byte *)(local_30 + param_1);
local_30 = local_30 + 1;
uVar6 = uVar6 + 1;
local_e0[iVar5] = (ushort)*pbVar1;
iVar5 = iVar5 + 1;
} while ((int)uVar6 < (int)param_3);
}
if ((param_3 & 1) != 0) {
(&local_e2)[local_50] = (ushort)*(byte *)((local_28 - 1) + param_1);
uVar6 = param_3;
}
if ((int)uVar6 < 8) {
if ((int)(8 - uVar6) < 5) {
local_34 = local_18 + (param_3 - 1);
}
else {
local_2c = (int)local_e0 + local_3c;
local_34 = (ushort *)(local_2c + local_44);
local_30 = uVar6 + local_20;
do {
uVar6 = uVar6 + 4;
local_e0[local_30] = *(ushort *)((int)&local_e2 + param_3 * 2 + local_3c);
local_e0[local_30 + 1] = *(ushort *)((int)&local_e2 + param_3 * 2 + local_3c);
local_e0[local_30 + 2] = *(ushort *)((int)&local_e2 + param_3 * 2 + local_3c);
local_e0[local_30 + 3] = *(ushort *)((int)&local_e2 + param_3 * 2 + local_3c);
local_30 = local_30 + 4;
} while ((int)uVar6 < 3);
}
puVar3 = local_e0 + uVar6 + local_20;
do {
uVar6 = uVar6 + 1;
*puVar3 = *local_34;
puVar3 = puVar3 + 1;
} while ((int)uVar6 < 8);
}
local_40 = local_40 + param_2;
local_20 = local_20 + 8;
local_50 = local_50 + 8;
local_28 = local_28 + param_2;
iVar5 = local_1c + 1;
local_18 = local_18 + 8;
local_3c = local_3c + 0x10;
local_1c = iVar5;
} while (iVar5 < param_4);
}
if (iVar5 < 8) {
puVar3 = local_e0 + iVar5 * 8;
do {
*puVar3 = puVar3[-8];
puVar3[1] = puVar3[-7];
iVar5 = iVar5 + 1;
puVar3[2] = puVar3[-6];
puVar3[3] = puVar3[-5];
puVar3[4] = puVar3[-4];
puVar3[5] = puVar3[-3];
puVar3[6] = puVar3[-2];
puVar3[7] = puVar3[-1];
puVar3 = puVar3 + 8;
} while (iVar5 < 8);
}
iVar5 = 0;
do {
*(ushort *)(param_5 + iVar5 * 2) = local_e0[iVar5] - 0x80;
*(ushort *)(param_5 + 2 + iVar5 * 2) = local_e0[iVar5 + 1] - 0x80;
*(ushort *)(param_5 + 4 + iVar5 * 2) = local_e0[iVar5 + 2] - 0x80;
*(ushort *)(param_5 + 6 + iVar5 * 2) = local_e0[iVar5 + 3] - 0x80;
*(ushort *)(param_5 + 8 + iVar5 * 2) = local_e0[iVar5 + 4] - 0x80;
*(ushort *)(param_5 + 10 + iVar5 * 2) = local_e0[iVar5 + 5] - 0x80;
*(ushort *)(param_5 + 0xc + iVar5 * 2) = local_e0[iVar5 + 6] - 0x80;
*(ushort *)(param_5 + 0xe + iVar5 * 2) = local_e0[iVar5 + 7] - 0x80;
iVar5 = iVar5 + 8;
} while (iVar5 < 0x40);
return;
}
// --- FUN_0062f6a0 at 0x0062F6A0 (size: 455) ---
undefined4
FUN_0062f6a0(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,int param_7,
int param_8,int param_9,uint param_10,int *param_11,int *param_12)
{
int iVar1;
uint uVar2;
int iVar3;
int iVar4;
iVar1 = *param_1;
uVar2 = (int)param_10 >> 0x1f;
if (iVar1 == 0) {
iVar4 = param_1[2];
if (((iVar4 == 0) && (param_1[1] == 0)) && (param_1[3] == 0)) {
param_5 = param_5 * param_3;
*param_11 = param_6 * param_4 * param_2 + param_7 * param_5 + param_8;
*param_12 = 0;
param_9 = param_9 - param_4 * param_2;
if (param_9 <= param_2) {
param_2 = param_9;
}
param_12[2] = param_2;
param_12[1] = 0;
iVar1 = (param_10 ^ uVar2) - uVar2;
if (iVar1 - param_5 <= param_3) {
param_3 = iVar1 - param_5;
}
param_12[3] = param_3;
return 0;
}
}
else {
iVar4 = param_1[2];
}
param_4 = param_4 * param_2;
if (((param_4 < iVar4) && (iVar1 <= param_2 + param_4)) &&
((param_5 = param_5 * param_3, param_5 < param_1[3] && (param_1[1] <= param_3 + param_5)))) {
*param_11 = param_6 * (param_4 - iVar1) + param_7 * (param_5 - param_1[1]) + param_8;
iVar1 = *param_1 - param_4;
if (iVar1 < 0) {
iVar1 = 0;
}
*param_12 = iVar1;
iVar4 = param_1[2] - param_4;
iVar1 = iVar4;
if (param_2 < iVar4) {
iVar1 = param_2;
}
param_9 = (*param_1 - param_4) + param_9;
if ((iVar1 < param_9) && (param_9 = param_2, iVar4 <= param_2)) {
param_9 = iVar4;
}
param_12[2] = param_9;
iVar1 = param_1[1] - param_5;
if (iVar1 < 0) {
iVar1 = 0;
}
param_12[1] = iVar1;
iVar4 = (param_10 ^ uVar2) - uVar2;
iVar3 = param_1[3] - param_5;
iVar1 = iVar3;
if (param_3 < iVar3) {
iVar1 = param_3;
}
if (iVar1 < (param_1[1] - param_5) + iVar4) {
if (iVar3 <= param_3) {
param_3 = iVar3;
}
}
else {
param_3 = (param_1[1] - param_5) + iVar4;
}
param_12[3] = param_3;
return 0;
}
return 0xfffffff8;
}
// --- FUN_0062f870 at 0x0062F870 (size: 297) ---
int * FUN_0062f870(int *param_1,int *param_2,int *param_3)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
iVar1 = DAT_009088e4;
if (*param_2 <= param_3[2]) {
if (*param_3 <= param_2[2]) {
if (param_2[1] <= param_3[3]) {
if (param_3[1] <= param_2[3]) {
if (*param_3 < *param_2) {
iVar1 = *param_2;
}
else {
iVar1 = *param_3;
}
if (param_3[1] < param_2[1]) {
iVar2 = param_2[1];
}
else {
iVar2 = param_3[1];
}
if (param_2[2] < param_3[2]) {
iVar3 = param_2[2];
}
else {
iVar3 = param_3[2];
}
if (param_2[3] < param_3[3]) {
iVar4 = param_2[3];
}
else {
iVar4 = param_3[3];
}
*param_1 = iVar1;
param_1[1] = iVar2;
param_1[2] = iVar3;
param_1[3] = iVar4;
return param_1;
}
}
}
}
*param_1 = DAT_009088e0;
iVar3 = DAT_009088ec;
iVar2 = DAT_009088e8;
param_1[1] = iVar1;
param_1[2] = iVar2;
param_1[3] = iVar3;
return param_1;
}
// --- FUN_0062f9a0 at 0x0062F9A0 (size: 47) ---
undefined4 FUN_0062f9a0(int *param_1,int *param_2)
{
if ((((*param_1 == *param_2) && (param_1[2] == param_2[2])) && (param_1[1] == param_2[1])) &&
(param_1[3] == param_2[3])) {
return 1;
}
return 0;
}
// --- FUN_0062f9d0 at 0x0062F9D0 (size: 47) ---
undefined4 FUN_0062f9d0(int *param_1,int *param_2)
{
if ((((*param_1 == *param_2) && (param_1[2] == param_2[2])) && (param_1[1] == param_2[1])) &&
(param_1[3] == param_2[3])) {
return 0;
}
return 1;
}
// --- FUN_0062fa00 at 0x0062FA00 (size: 150) ---
int * FUN_0062fa00(int *param_1,int *param_2,int *param_3)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
char cVar7;
cVar7 = FUN_0062f9a0(param_2,&DAT_009088e0);
iVar1 = DAT_009088e4;
if (cVar7 != '\0') {
*param_1 = DAT_009088e0;
iVar3 = DAT_009088ec;
iVar2 = DAT_009088e8;
param_1[1] = iVar1;
param_1[2] = iVar2;
param_1[3] = iVar3;
return param_1;
}
iVar1 = param_2[2];
iVar2 = *param_3;
iVar3 = param_2[1];
iVar4 = param_2[3];
iVar5 = param_3[1];
iVar6 = param_3[1];
*param_1 = *param_2 - *param_3;
param_1[1] = iVar3 - iVar5;
param_1[2] = iVar1 - iVar2;
param_1[3] = iVar4 - iVar6;
return param_1;
}
// --- FUN_0062faa0 at 0x0062FAA0 (size: 166) ---
void FUN_0062faa0(int param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5,
undefined4 param_6,undefined1 param_7)
{
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);
}
else {
FUN_00631630(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
}
FUN_006327e0(param_1,param_2,param_4,param_5,param_6);
return;
}
// --- FUN_0062fb50 at 0x0062FB50 (size: 6664) ---
/* WARNING: Type propagation algorithm not settling */
void FUN_0062fb50(int param_1,int param_2,int *param_3,int param_4,undefined4 param_5,int param_6,
int param_7,char param_8)
{
short *psVar1;
undefined1 *puVar2;
short sVar3;
int iVar4;
int iVar5;
int iVar6;
undefined1 *puVar7;
undefined1 *puVar8;
int iVar9;
short *psVar10;
short *psVar11;
short *psVar12;
undefined1 *puVar13;
int iVar14;
undefined1 *puVar15;
int iVar16;
undefined1 *puVar17;
undefined1 *puVar18;
undefined1 *puVar19;
short *psVar20;
int iVar21;
int iVar22;
short local_594 [640];
int local_94;
int local_90;
int local_8c;
int local_88;
int local_84;
int local_80;
undefined1 *local_7c;
int local_78;
undefined1 *local_74;
undefined1 *local_70;
int local_6c;
short *local_68;
undefined1 *local_64;
undefined1 *local_60;
undefined1 *local_5c;
undefined1 *local_58;
int local_54;
int local_50;
int local_4c;
int local_48;
int local_44;
short *local_40;
short *local_3c;
short *local_38;
short *local_34;
undefined1 *local_30;
int local_2c;
int local_28;
int local_24;
undefined1 *local_20;
undefined1 *local_1c;
short *local_18;
local_34 = (short *)0x0;
if (*param_3 == 1) {
if (*(int *)(param_1 + 0x34) == 3) {
iVar4 = 3;
}
else {
iVar4 = *(int *)(param_1 + 0x30);
}
if (iVar4 <= *(int *)(param_2 + 0x38)) {
return;
}
iVar4 = *(int *)(param_1 + 0x37b8);
iVar5 = iVar4 / *(int *)(param_3[0xd] + 4);
local_18 = *(short **)(param_1 + 0x37bc);
psVar12 = (short *)((int)local_18 / *(int *)(param_3[0xd] + 8));
}
else {
iVar4 = *(int *)(param_1 + 0x37b8);
local_18 = *(short **)(param_1 + 0x37bc);
psVar12 = local_18;
iVar5 = iVar4;
}
if (((*(int *)(param_1 + 0x4de8) == 1) && (iVar4 == 2)) && (local_18 == (short *)0x1)) {
if (*(int *)(param_1 + 0x74) == 0) {
local_48 = 0;
iVar4 = *(int *)(param_1 + 0x37c0) + -1;
if (*(int *)(param_1 + 0x37c0) != 0) {
iVar6 = iVar4 * 0x10;
local_48 = 0;
do {
iVar4 = iVar4 + -1;
local_48 = local_48 +
*(int *)(iVar6 + 4 + *(int *)(param_1 + 0x37cc)) *
*(int *)(iVar6 + 8 + *(int *)(param_1 + 0x37cc));
iVar6 = iVar6 + -0x10;
local_84 = iVar5 * param_6;
} while (iVar4 != -1);
}
}
else {
local_48 = 1;
}
local_44 = param_4 * 2 * local_48 * 0x40 + *(int *)(*(int *)(param_1 + 0x4dec) + 4);
local_48 = local_48 * 0x100 + local_44;
}
else {
local_44 = 0;
local_48 = 0;
}
local_4c = *(int *)(param_1 + 0x4834);
iVar4 = FUN_0062f6a0(param_1 + 4,iVar5 * param_6,(int)psVar12 * 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_94);
if (iVar4 == 0) {
if (param_7 == 0) {
iVar4 = *(int *)(param_1 + 0x34);
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
local_50 = *(int *)(param_2 + 0x2c);
if (*(int *)(param_2 + 0x38) == 0) {
local_50 = local_50 + 2;
}
else if (*(int *)(param_2 + 0x38) == 1) {
local_50 = local_50 + 1;
}
}
else {
local_50 = *(int *)(param_2 + 0x2c) + *(int *)(param_2 + 0x38);
}
iVar5 = *param_3;
iVar6 = *(int *)(param_1 + 0x30);
local_80 = 0;
local_58 = (undefined1 *)0x0;
local_54 = param_6 << 5;
psVar12 = local_34;
while( true ) {
iVar9 = iVar6;
if (iVar5 < iVar6) {
iVar9 = iVar5;
}
if (iVar9 <= local_80) break;
if ((*(int *)(param_1 + 0x58) != 4) || (local_80 < 1)) {
iVar6 = param_3[0xd];
if (iVar5 == 1) {
iVar5 = *(int *)(iVar6 + 8);
puVar8 = *(undefined1 **)(iVar6 + 4);
}
else {
iVar5 = *(int *)((int)local_58 + 8 + iVar6);
puVar8 = *(undefined1 **)((int)local_58 + 4 + iVar6);
}
local_34 = *(short **)(param_1 + 0x37b8);
puVar7 = (undefined1 *)((int)local_34 / (int)puVar8);
local_30 = *(undefined1 **)(param_1 + 0x37bc);
iVar6 = (int)local_30 / iVar5;
if (param_8 == '\0') {
if ((((*(int *)(param_1 + 0x4de8) == 1) && (local_34 == (short *)0x2)) &&
(local_30 == (undefined1 *)0x1)) && (param_6 != 1)) {
psVar12 = local_594;
local_68 = psVar12;
local_6c = 0;
if (0 < (int)puVar8) {
iVar4 = 0;
local_74 = (undefined1 *)(param_6 + -1);
local_84 = param_6 + -6;
local_70 = (undefined1 *)((int)puVar7 * param_6);
local_64 = (undefined1 *)(param_6 * 8);
local_60 = puVar7;
local_5c = puVar8;
do {
iVar5 = 0;
if (0 < (int)local_64) {
local_30 = (undefined1 *)(local_44 + param_6 * 2);
local_34 = (short *)(local_4c + param_6 * 2);
puVar8 = (undefined1 *)0x0;
local_6c = iVar4;
local_68 = psVar12;
do {
psVar12 = (short *)(iVar5 << 2);
if (local_60 == (undefined1 *)0x2) {
local_18 = psVar12;
psVar11 = (short *)(iVar5 * 2);
local_38 = psVar11;
psVar10 = (short *)(local_4c + iVar5 * 2);
local_40 = psVar10;
sVar3 = *psVar10;
psVar20 = local_68 + iVar5 * 2;
local_3c = psVar20;
*(char *)psVar20 =
(char)(*(short *)(local_30 + iVar5 * 2 + -2) + 1 + sVar3 * 3 >> 2);
*(char *)((int)psVar20 + 1) = (char)(psVar10[1] + 2 + sVar3 * 3 >> 2);
if (1 < (int)local_74) {
psVar20 = psVar10 + 1;
local_7c = puVar8;
local_78 = iVar5;
do {
psVar12 = psVar12 + 1;
sVar3 = *psVar20;
psVar1 = (short *)((int)local_68 + (int)psVar12);
*(char *)psVar1 = (char)(psVar20[-1] + 1 + sVar3 * 3 >> 2);
*(char *)((int)psVar1 + 1) = (char)(psVar20[1] + 2 + sVar3 * 3 >> 2);
psVar20 = psVar20 + 1;
} while ((int)psVar20 < (int)(psVar10 + param_6 + -1));
local_3c = psVar1;
}
psVar12 = local_3c;
iVar4 = *(short *)((int)psVar11 + (int)local_34 + -2) * 3;
*(char *)(local_3c + 1) =
(char)(*(short *)((int)psVar11 + (int)local_34 + -4) + 1 + iVar4 >> 2);
*(char *)((int)psVar12 + 3) =
(char)(*(short *)((int)psVar11 + local_48) + 2 + iVar4 >> 2);
}
else {
iVar4 = 0;
if (0 < param_6) {
if (param_6 < 6) {
psVar12 = local_68 + iVar5 * 2;
}
else {
psVar12 = local_68 + iVar5 * 2;
local_7c = puVar8;
do {
*(undefined1 *)((int)psVar12 + iVar4) = puVar8[iVar4 * 2 + local_4c];
*(undefined1 *)((int)psVar12 + iVar4 + 1) =
puVar8[iVar4 * 2 + local_4c + 2];
*(undefined1 *)((int)psVar12 + iVar4 + 2) =
puVar8[iVar4 * 2 + local_4c + 4];
*(undefined1 *)((int)psVar12 + iVar4 + 3) =
puVar8[iVar4 * 2 + local_4c + 6];
*(undefined1 *)((int)psVar12 + iVar4 + 4) =
puVar8[iVar4 * 2 + local_4c + 8];
iVar4 = iVar4 + 5;
} while (iVar4 <= local_84);
}
local_78 = iVar5;
do {
*(undefined1 *)((int)psVar12 + iVar4) = puVar8[iVar4 * 2 + local_4c];
iVar4 = iVar4 + 1;
} while (iVar4 < param_6);
}
}
puVar8 = puVar8 + 0x10;
iVar5 = iVar5 + 8;
iVar4 = local_6c;
psVar12 = local_68;
} while (iVar5 < (int)local_64);
}
psVar12 = (short *)((int)psVar12 + (int)local_70);
local_4c = local_4c + 0x80;
local_48 = local_48 + 0x80;
local_44 = local_44 + 0x80;
iVar4 = iVar4 + 1;
} while (iVar4 < (int)local_5c);
iVar4 = *(int *)(param_1 + 0x34);
}
}
else {
iVar9 = 0;
if (0 < iVar5) {
iVar4 = iVar6 * 0x20;
iVar16 = 0;
local_60 = puVar7;
local_6c = iVar4;
do {
puVar17 = (undefined1 *)((int)local_594 + iVar16);
puVar18 = (undefined1 *)0x0;
if (0 < (int)puVar8) {
local_24 = iVar16;
local_28 = local_54 * iVar6;
local_2c = iVar9;
local_78 = iVar5;
local_5c = puVar8;
iVar22 = local_4c;
do {
psVar12 = (short *)0x0;
if (0 < param_6) {
psVar10 = (short *)0x0;
local_20 = puVar18;
local_1c = puVar17;
do {
iVar14 = 0;
if (0 < param_6) {
local_18 = (short *)((int)psVar10 + (int)puVar17);
puVar15 = (undefined1 *)0x0;
local_38 = psVar10;
local_3c = psVar12;
do {
psVar20 = (short *)0x0;
if (0 < iVar4) {
psVar11 = (short *)((int)psVar10 + (int)puVar17 + (int)puVar15);
local_68 = psVar11;
local_64 = puVar15;
local_84 = iVar14;
do {
puVar13 = (undefined1 *)0x0;
if (0 < (int)puVar7) {
if ((int)puVar7 < 5) {
puVar19 = (undefined1 *)
((int)psVar12 * 0x10 + iVar22 + iVar14 * 2);
}
else {
iVar21 = (int)psVar12 * 0x10 + iVar22;
puVar19 = (undefined1 *)(iVar21 + iVar14 * 2);
puVar2 = (undefined1 *)((int)psVar20 + (int)psVar11);
local_7c = (undefined1 *)0x0;
local_74 = puVar2;
local_70 = puVar19;
do {
puVar2[(int)local_7c] = *(undefined1 *)(iVar21 + iVar14 * 2)
;
(puVar2 + 1)[(int)local_7c] =
*(undefined1 *)(iVar21 + iVar14 * 2);
(puVar2 + 2)[(int)local_7c] =
*(undefined1 *)(iVar21 + iVar14 * 2);
(puVar2 + 3)[(int)local_7c] =
*(undefined1 *)(iVar21 + iVar14 * 2);
puVar13 = local_7c + 4;
local_7c = puVar13;
} while ((int)puVar13 <= (int)(puVar7 + -5));
}
local_40 = psVar20;
do {
((undefined1 *)((int)psVar20 + (int)psVar11))[(int)puVar13] =
*puVar19;
puVar13 = puVar13 + 1;
} while ((int)puVar13 < (int)puVar7);
}
psVar20 = psVar20 + 0x10;
} while ((int)psVar20 < iVar4);
}
puVar15 = puVar15 + (int)puVar7;
iVar14 = iVar14 + 1;
} while (iVar14 < param_6);
}
psVar10 = psVar10 + iVar6 * 0x10;
psVar12 = (short *)((int)psVar12 + 1);
} while ((int)psVar12 < param_6);
}
puVar17 = puVar17 + (int)puVar7 * param_6;
iVar22 = iVar22 + 0x80;
puVar18 = puVar18 + 1;
} while ((int)puVar18 < (int)puVar8);
local_4c = iVar22;
}
iVar16 = iVar16 + local_54 * iVar6;
iVar9 = iVar9 + 1;
} while (iVar9 < iVar5);
iVar4 = *(int *)(param_1 + 0x34);
local_34 = (short *)((int)puVar7 * param_6);
local_30 = puVar7 + -5;
}
}
}
else {
puVar18 = (undefined1 *)0x0;
if (0 < iVar5) {
iVar4 = iVar6 * param_6;
puVar7 = (undefined1 *)((int)puVar7 * param_6);
local_7c = puVar7 + -6;
psVar12 = (short *)0x0;
local_60 = puVar7;
local_6c = iVar4;
do {
puVar17 = (undefined1 *)((int)local_594 + (int)psVar12);
psVar10 = (short *)0x0;
if (0 < (int)puVar8) {
local_68 = psVar12;
local_70 = (undefined1 *)(local_54 * iVar6);
local_74 = puVar18;
local_78 = iVar5;
local_5c = puVar8;
iVar9 = local_4c;
do {
psVar20 = (short *)0x0;
if (0 < iVar4) {
local_38 = (short *)0x0;
iVar16 = 0;
local_40 = psVar10;
psVar11 = (short *)0x0;
local_64 = puVar17;
do {
iVar22 = 0;
if (0 < (int)puVar7) {
if (5 < (int)puVar7) {
iVar14 = iVar9 + iVar16;
do {
*(undefined1 *)((int)psVar11 + (int)(puVar17 + iVar22)) =
*(undefined1 *)(iVar14 + iVar22 * 2);
*(undefined1 *)((int)psVar11 + (int)(puVar17 + iVar22 + 1)) =
*(undefined1 *)(iVar14 + 2 + iVar22 * 2);
*(undefined1 *)((int)psVar11 + (int)(puVar17 + iVar22 + 2)) =
*(undefined1 *)(iVar14 + 4 + iVar22 * 2);
*(undefined1 *)((int)psVar11 + (int)(puVar17 + iVar22 + 3)) =
*(undefined1 *)(iVar14 + 6 + iVar22 * 2);
*(undefined1 *)((int)psVar11 + (int)(puVar17 + iVar22 + 4)) =
*(undefined1 *)(iVar14 + 8 + iVar22 * 2);
iVar22 = iVar22 + 5;
local_34 = (short *)iVar16;
} while (iVar22 <= (int)(puVar7 + -6));
}
local_30 = puVar17 + (int)psVar11;
local_38 = psVar11;
local_3c = psVar20;
do {
local_30[iVar22] = *(undefined1 *)(iVar9 + iVar16 + iVar22 * 2);
iVar22 = iVar22 + 1;
} while (iVar22 < (int)puVar7);
}
psVar11 = psVar11 + 0x10;
iVar16 = iVar16 + 0x10;
psVar20 = (short *)((int)psVar20 + 1);
} while ((int)psVar20 < iVar4);
}
puVar17 = puVar17 + (int)puVar7;
iVar9 = iVar9 + 0x80;
psVar10 = (short *)((int)psVar10 + 1);
} while ((int)psVar10 < (int)puVar8);
local_4c = iVar9;
}
psVar12 = (short *)((int)psVar12 + local_54 * iVar6);
puVar18 = puVar18 + 1;
} while ((int)puVar18 < iVar5);
iVar4 = *(int *)(param_1 + 0x34);
}
}
psVar12 = local_594;
if ((iVar4 == 3) && (*(int *)(param_2 + 0x38) != 0)) {
if (*(int *)(param_2 + 0x38) == 2) {
local_50 = local_50 + 1;
}
if (local_90 < local_88) {
puVar8 = (undefined1 *)(local_90 << 5);
iVar4 = local_90;
do {
if (local_94 < local_8c) {
local_30 = puVar8;
local_34 = psVar12;
iVar5 = local_94;
do {
*(undefined1 *)(iVar4 * *(int *)(param_1 + 0x3c) + local_50 + iVar5 * 2) =
*(undefined1 *)((int)psVar12 + (int)(puVar8 + iVar5));
iVar5 = iVar5 + 2;
} while (iVar5 < local_8c);
}
puVar8 = puVar8 + 0x20;
iVar4 = iVar4 + 1;
} while (iVar4 < local_88);
iVar4 = *(int *)(param_1 + 0x34);
}
}
else {
FUN_00633140(param_1,&local_94,local_80,local_50,psVar12);
iVar4 = *(int *)(param_1 + 0x34);
}
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
local_50 = local_50 + -1;
iVar5 = *param_3;
iVar6 = *(int *)(param_1 + 0x30);
}
else {
local_50 = local_50 + 1;
iVar5 = *param_3;
iVar6 = *(int *)(param_1 + 0x30);
}
}
local_58 = (undefined1 *)((int)local_58 + 0x18);
local_80 = local_80 + 1;
}
iVar5 = local_80;
if ((*(int *)(param_1 + 0x74) != 0) &&
(iVar5 = *(int *)(param_1 + 0x54),
*(int *)(param_1 + 0x54) + -1 != *(int *)(param_2 + 0x38))) {
iVar5 = iVar6;
}
if (((iVar4 != 0xff) || (*(int *)(param_1 + 0x58) != 0xff)) &&
(iVar4 = local_50, local_34 = psVar12, iVar5 < iVar6)) {
do {
FUN_00633140(param_1,&local_94,iVar5,iVar4,psVar12);
if ((*(int *)(param_1 + 0x34) == 2) && (*(int *)(param_1 + 0x58) == 1)) {
iVar4 = iVar4 + -1;
}
else {
iVar4 = iVar4 + 1;
}
iVar5 = iVar5 + 1;
} while (iVar5 < *(int *)(param_1 + 0x30));
}
}
else {
local_78 = *(int *)(param_2 + 0x2c);
iVar4 = *(int *)(param_1 + 0x34);
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
if (*(int *)(param_2 + 0x38) == 0) {
local_78 = local_78 + 2;
}
else if (*(int *)(param_2 + 0x38) == 1) {
local_78 = local_78 + 1;
}
}
local_84 = 0;
local_80 = param_6 << 5;
local_7c = (undefined1 *)0x0;
psVar12 = local_34;
while( true ) {
if (iVar4 == 3) {
iVar5 = 3;
}
else {
iVar5 = *param_3;
if (*(int *)(param_1 + 0x30) <= *param_3) {
iVar5 = *(int *)(param_1 + 0x30);
}
}
if (iVar5 <= (int)local_7c) break;
if ((*(int *)(param_1 + 0x58) != 4) || ((int)local_7c < 1)) {
iVar5 = param_3[0xd];
if (*param_3 == 1) {
puVar8 = *(undefined1 **)(iVar5 + 8);
psVar12 = *(short **)(iVar5 + 4);
}
else {
puVar8 = *(undefined1 **)(local_84 + 8 + iVar5);
psVar12 = *(short **)(local_84 + 4 + iVar5);
}
local_18 = *(short **)(param_1 + 0x37b8);
iVar5 = (int)local_18 / (int)psVar12;
local_1c = *(undefined1 **)(param_1 + 0x37bc);
iVar6 = (int)local_1c / (int)puVar8;
if (param_8 == '\0') {
if ((((*(int *)(param_1 + 0x4de8) == 1) && (local_18 == (short *)0x2)) &&
(local_1c == (undefined1 *)0x1)) && (param_6 != 1)) {
psVar10 = local_594;
local_1c = (undefined1 *)0x0;
local_18 = psVar10;
if (0 < (int)psVar12) {
puVar8 = (undefined1 *)0x0;
local_58 = (undefined1 *)(param_6 + -1);
local_5c = (undefined1 *)(param_6 + -6);
local_54 = iVar5 * param_6;
local_40 = (short *)(param_6 * 8);
local_50 = iVar5;
local_34 = psVar12;
do {
puVar7 = (undefined1 *)0x0;
if (0 < (int)local_40) {
local_20 = (undefined1 *)(local_44 + param_6 * 2);
local_24 = local_4c + param_6 * 2;
iVar4 = 0;
local_1c = puVar8;
local_18 = psVar10;
do {
puVar8 = (undefined1 *)((int)puVar7 << 2);
if (local_50 == 2) {
local_60 = puVar8;
iVar5 = (int)puVar7 * 2;
local_28 = iVar5;
psVar12 = (short *)(local_4c + (int)puVar7 * 2);
local_3c = psVar12;
sVar3 = *psVar12;
psVar10 = local_18 + (int)puVar7 * 2;
local_38 = psVar10;
*(char *)psVar10 =
(char)(*(short *)(local_20 + (int)puVar7 * 2 + -2) + 1 + sVar3 * 3 >> 2
);
*(char *)((int)psVar10 + 1) = (char)(psVar12[1] + 1 + sVar3 * 3 >> 2);
if (1 < (int)local_58) {
psVar10 = psVar12 + 1;
local_2c = iVar4;
local_30 = puVar7;
do {
puVar8 = puVar8 + 2;
sVar3 = *psVar10;
psVar20 = (short *)((int)local_18 + (int)puVar8);
*(char *)psVar20 = (char)(psVar10[-1] + 1 + sVar3 * 3 >> 2);
*(char *)((int)psVar20 + 1) = (char)(psVar10[1] + 2 + sVar3 * 3 >> 2);
psVar10 = psVar10 + 1;
} while ((int)psVar10 < (int)(psVar12 + param_6 + -1));
local_38 = psVar20;
}
psVar12 = local_38;
iVar6 = *(short *)(local_24 + -2 + iVar5) * 3;
*(char *)(local_38 + 1) =
(char)(*(short *)(local_24 + -4 + iVar5) + 2 + iVar6 >> 2);
*(char *)((int)psVar12 + 3) =
(char)(*(short *)(local_48 + iVar5) + 2 + iVar6 >> 2);
}
else {
iVar5 = 0;
if (0 < param_6) {
if (param_6 < 6) {
psVar12 = local_18 + (int)puVar7 * 2;
}
else {
iVar6 = local_4c + iVar4;
psVar12 = local_18 + (int)puVar7 * 2;
local_2c = iVar4;
do {
*(undefined1 *)((int)psVar12 + iVar5) =
*(undefined1 *)(iVar6 + iVar5 * 2);
*(undefined1 *)((int)psVar12 + iVar5 + 1) =
*(undefined1 *)(iVar6 + 2 + iVar5 * 2);
*(undefined1 *)((int)psVar12 + iVar5 + 2) =
*(undefined1 *)(iVar6 + 4 + iVar5 * 2);
*(undefined1 *)((int)psVar12 + iVar5 + 3) =
*(undefined1 *)(iVar6 + 6 + iVar5 * 2);
*(undefined1 *)((int)psVar12 + iVar5 + 4) =
*(undefined1 *)(iVar6 + 8 + iVar5 * 2);
iVar5 = iVar5 + 5;
} while (iVar5 <= (int)local_5c);
}
local_30 = puVar7;
do {
*(undefined1 *)((int)psVar12 + iVar5) =
*(undefined1 *)(local_4c + iVar4 + iVar5 * 2);
iVar5 = iVar5 + 1;
} while (iVar5 < param_6);
}
}
iVar4 = iVar4 + 0x10;
puVar7 = puVar7 + 8;
puVar8 = local_1c;
psVar10 = local_18;
} while ((int)puVar7 < (int)local_40);
}
psVar10 = (short *)((int)psVar10 + local_54);
local_4c = local_4c + 0x80;
local_48 = local_48 + 0x80;
local_44 = local_44 + 0x80;
puVar8 = puVar8 + 1;
} while ((int)puVar8 < (int)local_34);
iVar4 = *(int *)(param_1 + 0x34);
}
}
else {
iVar9 = 0;
if (0 < (int)puVar8) {
iVar4 = iVar6 * 0x20;
local_70 = (undefined1 *)(iVar5 * param_6);
local_74 = (undefined1 *)(iVar5 + -5);
iVar16 = 0;
local_24 = 0;
local_50 = iVar5;
local_54 = iVar4;
do {
puVar18 = (undefined1 *)((int)local_594 + iVar16);
puVar7 = (undefined1 *)0x0;
if (0 < (int)psVar12) {
local_24 = iVar16;
local_28 = local_80 * iVar6;
local_2c = iVar9;
local_30 = puVar8;
iVar22 = local_4c;
do {
psVar10 = (short *)0x0;
if (0 < param_6) {
iVar14 = 0;
local_20 = puVar7;
local_1c = puVar18;
do {
psVar20 = (short *)0x0;
if (0 < param_6) {
puVar17 = (undefined1 *)0x0;
local_6c = iVar14;
local_68 = psVar10;
do {
puVar15 = (undefined1 *)0x0;
if (0 < iVar4) {
puVar13 = (undefined1 *)((int)(puVar18 + iVar14) + (int)puVar17);
local_60 = puVar13;
local_64 = puVar17;
local_38 = psVar20;
do {
psVar11 = (short *)0x0;
if (0 < iVar5) {
if (iVar5 < 5) {
puVar19 = (undefined1 *)
((int)psVar10 * 0x10 + iVar22 + (int)psVar20 * 2);
}
else {
iVar21 = (int)psVar10 * 0x10 + iVar22;
puVar19 = (undefined1 *)(iVar21 + (int)psVar20 * 2);
psVar1 = (short *)(puVar15 + (int)puVar13);
local_3c = (short *)0x0;
local_40 = psVar1;
local_58 = puVar19;
do {
*(undefined1 *)((int)psVar1 + (int)local_3c) =
*(undefined1 *)(iVar21 + (int)psVar20 * 2);
((undefined1 *)((int)psVar1 + 1))[(int)local_3c] =
*(undefined1 *)(iVar21 + (int)psVar20 * 2);
*(undefined1 *)((int)(psVar1 + 1) + (int)local_3c) =
*(undefined1 *)(iVar21 + (int)psVar20 * 2);
((undefined1 *)((int)psVar1 + 3))[(int)local_3c] =
*(undefined1 *)(iVar21 + (int)psVar20 * 2);
psVar11 = local_3c + 2;
local_3c = psVar11;
} while ((int)psVar11 <= iVar5 + -5);
}
local_5c = puVar15;
do {
(puVar15 + (int)puVar13)[(int)psVar11] = *puVar19;
psVar11 = (short *)((int)psVar11 + 1);
} while ((int)psVar11 < iVar5);
}
puVar15 = puVar15 + 0x20;
} while ((int)puVar15 < iVar4);
}
puVar17 = puVar17 + iVar5;
psVar20 = (short *)((int)psVar20 + 1);
local_18 = (short *)(puVar18 + iVar14);
} while ((int)psVar20 < param_6);
}
iVar14 = iVar14 + iVar4;
psVar10 = (short *)((int)psVar10 + 1);
} while ((int)psVar10 < param_6);
}
puVar18 = puVar18 + iVar5 * param_6;
iVar22 = iVar22 + 0x80;
puVar7 = puVar7 + 1;
} while ((int)puVar7 < (int)psVar12);
local_4c = iVar22;
local_34 = psVar12;
}
iVar16 = iVar16 + local_80 * iVar6;
iVar9 = iVar9 + 1;
} while (iVar9 < (int)puVar8);
iVar4 = *(int *)(param_1 + 0x34);
}
}
}
else {
iVar9 = 0;
if (0 < (int)puVar8) {
iVar4 = iVar6 * param_6;
iVar5 = iVar5 * param_6;
psVar10 = (short *)0x0;
local_50 = iVar5;
local_54 = iVar4;
do {
psVar11 = (short *)((int)local_594 + (int)psVar10);
psVar20 = (short *)0x0;
if (0 < (int)psVar12) {
local_38 = psVar10;
local_2c = local_80 * iVar6;
local_28 = iVar9;
local_30 = puVar8;
iVar16 = local_4c;
do {
iVar22 = 0;
if (0 < iVar4) {
local_1c = (undefined1 *)0x0;
puVar18 = (undefined1 *)0x0;
local_40 = psVar20;
local_3c = psVar11;
puVar7 = (undefined1 *)0x0;
do {
iVar14 = 0;
if (0 < iVar5) {
if (iVar5 < 6) {
local_5c = (undefined1 *)((int)psVar11 + (int)puVar7);
local_20 = puVar18 + iVar16;
}
else {
puVar17 = (undefined1 *)((int)psVar11 + (int)puVar7);
local_5c = puVar17;
puVar15 = puVar18 + iVar16;
local_20 = puVar15;
local_58 = puVar18;
do {
puVar17[iVar14] = puVar15[iVar14 * 2];
puVar17[iVar14 + 1] = puVar15[iVar14 * 2 + 2];
puVar17[iVar14 + 2] = puVar15[iVar14 * 2 + 4];
puVar17[iVar14 + 3] = puVar15[iVar14 * 2 + 6];
puVar17[iVar14 + 4] = puVar15[iVar14 * 2 + 8];
iVar14 = iVar14 + 5;
} while (iVar14 <= iVar5 + -6);
}
local_1c = puVar7;
local_24 = iVar22;
do {
local_5c[iVar14] = local_20[iVar14 * 2];
iVar14 = iVar14 + 1;
} while (iVar14 < iVar5);
}
puVar7 = puVar7 + 0x20;
puVar18 = puVar18 + 0x10;
iVar22 = iVar22 + 1;
} while (iVar22 < iVar4);
}
psVar11 = (short *)((int)psVar11 + iVar5);
iVar16 = iVar16 + 0x80;
psVar20 = (short *)((int)psVar20 + 1);
} while ((int)psVar20 < (int)psVar12);
local_4c = iVar16;
local_34 = psVar12;
}
psVar10 = (short *)((int)psVar10 + local_80 * iVar6);
iVar9 = iVar9 + 1;
} while (iVar9 < (int)puVar8);
iVar4 = *(int *)(param_1 + 0x34);
local_18 = (short *)(iVar5 + -6);
}
}
psVar12 = local_594;
if ((iVar4 == 3) && (local_7c != (undefined1 *)0x0)) {
if (local_7c == (undefined1 *)0x2) {
local_78 = local_78 + 1;
}
if (local_90 < local_88) {
psVar10 = (short *)(local_90 << 5);
iVar4 = local_90;
do {
if (local_94 < local_8c) {
local_18 = psVar10;
local_34 = psVar12;
iVar5 = local_94;
do {
*(undefined1 *)(iVar4 * *(int *)(param_1 + 0x3c) + local_78 + iVar5 * 2) =
((undefined1 *)((int)psVar12 + (int)psVar10))[iVar5];
iVar5 = iVar5 + 2;
} while (iVar5 < local_8c);
}
psVar10 = psVar10 + 0x10;
iVar4 = iVar4 + 1;
} while (iVar4 < local_88);
iVar4 = *(int *)(param_1 + 0x34);
}
}
else {
FUN_00633140(param_1,&local_94,local_7c,local_78,psVar12);
iVar4 = *(int *)(param_1 + 0x34);
}
if ((iVar4 == 2) && (*(int *)(param_1 + 0x58) == 1)) {
local_78 = local_78 + -1;
}
else {
local_78 = local_78 + 1;
}
}
local_84 = local_84 + 0x18;
local_7c = (undefined1 *)((int)local_7c + 1);
}
if (((iVar4 != 0xff) || (*(int *)(param_1 + 0x58) != 0xff)) &&
(puVar8 = local_7c, iVar4 = local_78, local_34 = psVar12,
(int)local_7c < *(int *)(param_1 + 0x30))) {
do {
FUN_00633140(param_1,&local_94,puVar8,iVar4,psVar12);
if ((*(int *)(param_1 + 0x34) == 2) && (*(int *)(param_1 + 0x58) == 1)) {
iVar4 = iVar4 + -1;
}
else {
iVar4 = iVar4 + 1;
}
puVar8 = (undefined1 *)((int)puVar8 + 1);
} while ((int)puVar8 < *(int *)(param_1 + 0x30));
}
}
}
return;
}