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