146 lines
5.4 KiB
C
146 lines
5.4 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401b4190 FUN_1401b4190
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401b4190(longlong param_1,longlong param_2)
|
|
|
|
{
|
|
undefined2 uVar1;
|
|
uint uVar2;
|
|
longlong lVar3;
|
|
longlong lVar4;
|
|
longlong *plVar5;
|
|
ulonglong uVar6;
|
|
ulonglong uVar7;
|
|
char cVar8;
|
|
undefined4 uVar9;
|
|
uint *puVar10;
|
|
uint *puVar11;
|
|
undefined *puVar12;
|
|
uint *puVar13;
|
|
uint *puVar14;
|
|
ulonglong uVar15;
|
|
uint uVar16;
|
|
undefined8 uVar17;
|
|
|
|
uVar17 = 0xfffffffffffffffe;
|
|
*(undefined4 *)(param_2 + 0x30) = *(undefined4 *)(param_1 + 0x6f8);
|
|
uVar1 = *(undefined2 *)(param_1 + 0x714);
|
|
*(undefined4 *)(param_2 + 0x18) = *(undefined4 *)(param_1 + 0x710);
|
|
*(undefined2 *)(param_2 + 0x1c) = uVar1;
|
|
lVar3 = *(longlong *)(param_1 + 0x748);
|
|
*(undefined4 *)(param_2 + 8) = *(undefined4 *)(lVar3 + 0x130);
|
|
*(undefined2 *)(param_2 + 0xc) = *(undefined2 *)(lVar3 + 0x134);
|
|
*(undefined4 *)(param_2 + 0x28) = *(undefined4 *)(param_1 + 0x720);
|
|
*(undefined2 *)(param_2 + 0x2c) = *(undefined2 *)(param_1 + 0x724);
|
|
*(undefined8 *)(param_2 + 0xa0) = *(undefined8 *)(param_1 + 0x1c8);
|
|
*(undefined4 *)(param_2 + 0xa8) = *(undefined4 *)(param_1 + 0x1e8);
|
|
*(undefined1 *)(param_2 + 0x91) = *(undefined1 *)(param_1 + 0x700);
|
|
puVar14 = (uint *)0x0;
|
|
puVar13 = puVar14;
|
|
if (*(longlong *)(param_1 + 0x68) != 0) {
|
|
puVar13 = *(uint **)(param_1 + 0x58);
|
|
}
|
|
for (; puVar13 != (uint *)0x0; puVar13 = *(uint **)(puVar13 + 4)) {
|
|
uVar16 = *(uint *)(param_2 + 0x60);
|
|
uVar2 = *puVar13;
|
|
uVar6 = (ulonglong)uVar2 % (ulonglong)uVar16;
|
|
lVar3 = *(longlong *)(param_2 + 0x40);
|
|
if (lVar3 != 0) {
|
|
for (puVar10 = *(uint **)(lVar3 + uVar6 * 8);
|
|
(puVar10 != (uint *)0x0 && ((uint)uVar6 == puVar10[6] % uVar16));
|
|
puVar10 = *(uint **)(puVar10 + 2)) {
|
|
if (*puVar10 == uVar2) goto LAB_1401b42e1;
|
|
}
|
|
}
|
|
uVar6 = (ulonglong)uVar2 % (ulonglong)uVar16;
|
|
if (lVar3 != 0) {
|
|
for (puVar10 = *(uint **)(lVar3 + uVar6 * 8);
|
|
(puVar10 != (uint *)0x0 && ((uint)uVar6 == puVar10[6] % uVar16));
|
|
puVar10 = *(uint **)(puVar10 + 2)) {
|
|
if (*puVar10 == uVar2) goto LAB_1401b42dd;
|
|
}
|
|
}
|
|
puVar10 = (uint *)FUN_140178900(param_2 + 0x38,puVar13,uVar6);
|
|
LAB_1401b42dd:
|
|
*(undefined1 *)(puVar10 + 1) = 0;
|
|
LAB_1401b42e1:
|
|
}
|
|
puVar13 = puVar14;
|
|
if (0 < *(int *)(param_1 + 600)) {
|
|
do {
|
|
if (((longlong)puVar14 < 0) || (*(int *)(param_1 + 600) <= (int)puVar13)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6e0();
|
|
}
|
|
puVar10 = (uint *)(*(longlong *)(param_1 + 0x250) + (longlong)puVar14 * 4);
|
|
lVar3 = param_2 + 0x38;
|
|
uVar16 = *puVar10;
|
|
uVar2 = *(uint *)(param_2 + 0x60);
|
|
uVar15 = (ulonglong)uVar2;
|
|
uVar6 = (ulonglong)uVar16 % uVar15;
|
|
lVar4 = *(longlong *)(param_2 + 0x40);
|
|
if (lVar4 != 0) {
|
|
for (puVar11 = *(uint **)(lVar4 + uVar6 * 8);
|
|
(puVar11 != (uint *)0x0 && ((uint)uVar6 == puVar11[6] % uVar2));
|
|
puVar11 = *(uint **)(puVar11 + 2)) {
|
|
if (*puVar11 == uVar16) goto LAB_1401b43de;
|
|
}
|
|
}
|
|
uVar7 = (ulonglong)uVar16 % uVar15;
|
|
if (lVar4 == 0) {
|
|
LAB_1401b439f:
|
|
cVar8 = FUN_1401b5a10(lVar3,uVar15,CONCAT71((int7)(uVar6 >> 8),1),uVar15,uVar17);
|
|
if (cVar8 == '\0') {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14004dc60(0x8007000e);
|
|
}
|
|
}
|
|
else {
|
|
for (puVar11 = *(uint **)(lVar4 + uVar7 * 8);
|
|
(puVar11 != (uint *)0x0 && ((uint)uVar7 == puVar11[6] % uVar2));
|
|
puVar11 = *(uint **)(puVar11 + 2)) {
|
|
if (*puVar11 == uVar16) goto LAB_1401b43d5;
|
|
}
|
|
if (lVar4 == 0) goto LAB_1401b439f;
|
|
}
|
|
FUN_140173d40(lVar3);
|
|
puVar11 = (uint *)FUN_140175ab0(lVar3,puVar10,uVar7,uVar16);
|
|
FUN_140173d40(lVar3);
|
|
LAB_1401b43d5:
|
|
*(undefined1 *)(puVar11 + 1) = 0;
|
|
LAB_1401b43de:
|
|
uVar16 = (int)puVar13 + 1;
|
|
puVar13 = (uint *)(ulonglong)uVar16;
|
|
puVar14 = (uint *)((longlong)puVar14 + 1);
|
|
} while ((int)uVar16 < *(int *)(param_1 + 600));
|
|
}
|
|
*(undefined1 *)(param_2 + 0x34) = 0;
|
|
*(bool *)(param_2 + 0x90) = *(int *)(param_1 + 0x710) != *(int *)(param_1 + 0x720);
|
|
puVar12 = *(undefined **)(param_2 + 0x98);
|
|
if (*(undefined **)(param_2 + 0x98) == (undefined *)0x0) {
|
|
puVar12 = PTR_DAT_1403440a0;
|
|
}
|
|
*(undefined **)(param_2 + 0x98) = puVar12;
|
|
if (*(undefined **)(param_1 + 0x1f0) != puVar12) {
|
|
uVar17 = FUN_14016d8c0();
|
|
FUN_14016db50(uVar17);
|
|
FUN_14004eb70(param_2 + 0x98);
|
|
puVar12 = *(undefined **)(param_1 + 0x1f0);
|
|
*(undefined **)(param_2 + 0x98) = puVar12;
|
|
if (((puVar12 != PTR_DAT_1403440a0) && (puVar12 != (undefined *)0x0)) &&
|
|
(puVar12 != (undefined *)0x8)) {
|
|
*(int *)(puVar12 + -4) = *(int *)(puVar12 + -4) + 1;
|
|
}
|
|
FUN_14016dbe0(uVar17);
|
|
}
|
|
*(undefined8 *)(param_2 + 0xb0) = *(undefined8 *)(param_1 + 0x30);
|
|
*(undefined8 *)(param_2 + 0xb8) = *(undefined8 *)(param_1 + 0x1e0);
|
|
plVar5 = *(longlong **)(*(longlong *)(param_1 + 0x238) + 0x478);
|
|
uVar9 = (**(code **)(*plVar5 + 0x18))(plVar5,*(undefined4 *)(param_1 + 0x6f8));
|
|
*(undefined4 *)(param_2 + 200) = uVar9;
|
|
*(undefined4 *)(param_2 + 0xc0) = *(undefined4 *)(param_1 + 0x1d8);
|
|
*(undefined4 *)(param_2 + 0xc4) = *(undefined4 *)(param_1 + 0x1dc);
|
|
return;
|
|
}
|
|
|