server-re/decomp/DBCServer_Release_x64/full/functions/0x14015fbe0.c

197 lines
6 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14015fbe0 FUN_14015fbe0
* Pseudocode, not original source. */
undefined8 * FUN_14015fbe0(undefined8 *param_1,longlong *param_2)
{
char cVar1;
longlong *plVar2;
code *pcVar3;
longlong *plVar4;
longlong lVar5;
undefined8 *puVar6;
longlong *plVar7;
longlong *plVar8;
longlong *plVar9;
longlong *plVar10;
if (*(char *)((longlong)param_2 + 0x29) != '\0') {
std::_Xout_of_range("invalid map/set<T> iterator");
pcVar3 = (code *)swi(3);
puVar6 = (undefined8 *)(*pcVar3)();
return puVar6;
}
plVar10 = (longlong *)param_2[2];
plVar7 = param_2 + 2;
if (*(char *)((longlong)plVar10 + 0x29) == '\0') {
cVar1 = *(char *)(*plVar10 + 0x29);
plVar8 = (longlong *)*plVar10;
while (cVar1 == '\0') {
cVar1 = *(char *)(*plVar8 + 0x29);
plVar10 = plVar8;
plVar8 = (longlong *)*plVar8;
}
}
else {
cVar1 = *(char *)(param_2[1] + 0x29);
plVar9 = (longlong *)param_2[1];
plVar8 = param_2;
while ((plVar10 = plVar9, cVar1 == '\0' && (plVar8 == (longlong *)plVar10[2]))) {
cVar1 = *(char *)(plVar10[1] + 0x29);
plVar9 = (longlong *)plVar10[1];
plVar8 = plVar10;
}
}
plVar8 = (longlong *)*param_2;
if (*(char *)((longlong)plVar8 + 0x29) == '\0') {
plVar9 = plVar8;
if ((*(char *)(*plVar7 + 0x29) == '\0') && (plVar9 = (longlong *)plVar10[2], plVar10 != param_2)
) {
plVar8[1] = (longlong)plVar10;
*plVar10 = *param_2;
plVar8 = plVar10;
if (plVar10 != (longlong *)*plVar7) {
plVar8 = (longlong *)plVar10[1];
if (*(char *)((longlong)plVar9 + 0x29) == '\0') {
plVar9[1] = (longlong)plVar8;
}
*plVar8 = (longlong)plVar9;
plVar10[2] = *plVar7;
*(longlong **)(*plVar7 + 8) = plVar10;
}
if ((longlong *)DAT_140353138[1] == param_2) {
DAT_140353138[1] = plVar10;
}
else {
puVar6 = (undefined8 *)param_2[1];
if ((longlong *)*puVar6 == param_2) {
*puVar6 = plVar10;
}
else {
puVar6[2] = plVar10;
}
}
plVar10[1] = param_2[1];
lVar5 = plVar10[5];
*(char *)(plVar10 + 5) = (char)param_2[5];
*(char *)(param_2 + 5) = (char)lVar5;
goto LAB_14015fdb3;
}
}
else {
plVar9 = (longlong *)*plVar7;
}
plVar8 = (longlong *)param_2[1];
if (*(char *)((longlong)plVar9 + 0x29) == '\0') {
plVar9[1] = (longlong)plVar8;
}
if ((longlong *)DAT_140353138[1] == param_2) {
DAT_140353138[1] = plVar9;
}
else if ((longlong *)*plVar8 == param_2) {
*plVar8 = (longlong)plVar9;
}
else {
plVar8[2] = (longlong)plVar9;
}
if ((longlong *)*DAT_140353138 == param_2) {
plVar7 = plVar8;
if (*(char *)((longlong)plVar9 + 0x29) == '\0') {
cVar1 = *(char *)(*plVar9 + 0x29);
plVar2 = (longlong *)*plVar9;
plVar7 = plVar9;
while (plVar4 = plVar2, cVar1 == '\0') {
plVar2 = (longlong *)*plVar4;
cVar1 = *(char *)((longlong)plVar2 + 0x29);
plVar7 = plVar4;
}
}
*DAT_140353138 = plVar7;
}
if ((longlong *)DAT_140353138[2] == param_2) {
if (*(char *)((longlong)plVar9 + 0x29) == '\0') {
cVar1 = *(char *)(plVar9[2] + 0x29);
plVar7 = (longlong *)plVar9[2];
plVar2 = plVar9;
while (plVar4 = plVar7, cVar1 == '\0') {
plVar7 = (longlong *)plVar4[2];
cVar1 = *(char *)((longlong)plVar7 + 0x29);
plVar2 = plVar4;
}
DAT_140353138[2] = plVar2;
}
else {
DAT_140353138[2] = plVar8;
}
}
LAB_14015fdb3:
if ((char)param_2[5] == '\x01') {
if (plVar9 != (longlong *)DAT_140353138[1]) {
do {
plVar7 = plVar8;
if ((char)plVar9[5] != '\x01') break;
plVar8 = (longlong *)*plVar7;
if (plVar9 == plVar8) {
plVar8 = (longlong *)plVar7[2];
if ((char)plVar8[5] == '\0') {
*(undefined1 *)(plVar8 + 5) = 1;
*(undefined1 *)(plVar7 + 5) = 0;
FUN_140160010(plVar7);
plVar8 = (longlong *)plVar7[2];
}
if (*(char *)((longlong)plVar8 + 0x29) == '\0') {
if ((*(char *)(*plVar8 + 0x28) != '\x01') || (*(char *)(plVar8[2] + 0x28) != '\x01')) {
if (*(char *)(plVar8[2] + 0x28) == '\x01') {
*(undefined1 *)(*plVar8 + 0x28) = 1;
*(undefined1 *)(plVar8 + 5) = 0;
FUN_140160070();
plVar8 = (longlong *)plVar7[2];
}
*(char *)(plVar8 + 5) = (char)plVar7[5];
*(undefined1 *)(plVar7 + 5) = 1;
*(undefined1 *)(plVar8[2] + 0x28) = 1;
FUN_140160010(plVar7);
break;
}
LAB_14015fe8d:
*(undefined1 *)(plVar8 + 5) = 0;
}
}
else {
if ((char)plVar8[5] == '\0') {
*(undefined1 *)(plVar8 + 5) = 1;
*(undefined1 *)(plVar7 + 5) = 0;
FUN_140160070(plVar7);
plVar8 = (longlong *)*plVar7;
}
if (*(char *)((longlong)plVar8 + 0x29) == '\0') {
if ((*(char *)(plVar8[2] + 0x28) == '\x01') && (*(char *)(*plVar8 + 0x28) == '\x01'))
goto LAB_14015fe8d;
if (*(char *)(*plVar8 + 0x28) == '\x01') {
*(undefined1 *)(plVar8[2] + 0x28) = 1;
*(undefined1 *)(plVar8 + 5) = 0;
FUN_140160010();
plVar8 = (longlong *)*plVar7;
}
*(char *)(plVar8 + 5) = (char)plVar7[5];
*(undefined1 *)(plVar7 + 5) = 1;
*(undefined1 *)(*plVar8 + 0x28) = 1;
FUN_140160070(plVar7);
break;
}
}
plVar8 = (longlong *)plVar7[1];
plVar9 = plVar7;
} while (plVar7 != (longlong *)DAT_140353138[1]);
}
*(undefined1 *)(plVar9 + 5) = 1;
}
operator_delete(param_2);
if (DAT_140353140 != 0) {
DAT_140353140 = DAT_140353140 + -1;
}
*param_1 = plVar10;
return param_1;
}