/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401f70a0 FUN_1401f70a0 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001401f7140) */ /* WARNING: Removing unreachable block (ram,0x0001401f7144) */ /* WARNING: Removing unreachable block (ram,0x0001401f7160) */ /* WARNING: Removing unreachable block (ram,0x0001401f716e) */ /* WARNING: Removing unreachable block (ram,0x0001401f7166) */ /* WARNING: Removing unreachable block (ram,0x0001401f7175) */ /* WARNING: Removing unreachable block (ram,0x0001401f718d) */ void FUN_1401f70a0(longlong param_1) { int *piVar1; int iVar2; undefined8 uVar3; undefined8 *puVar4; undefined *puVar5; longlong lVar6; longlong lVar7; undefined8 *puVar8; longlong lVar9; longlong *plVar10; int iVar11; undefined8 *puVar12; ulonglong uVar13; uint uVar14; longlong lVar15; longlong lVar16; longlong lVar17; int local_res10; longlong *local_res18; longlong local_res20; undefined **local_b8; longlong *local_b0; longlong local_a8; undefined8 local_a0; undefined8 local_98; undefined *local_90; longlong local_88; undefined1 local_80; undefined8 local_78; undefined1 local_70; undefined8 local_68; undefined1 local_60; undefined8 local_58; undefined8 *local_50; local_58 = 0xfffffffffffffffe; lVar9 = param_1 + 0x10; local_88 = lVar9; FUN_14016db50(lVar9); local_80 = 1; local_b8 = Proud::CFastArray,0>::vftable; local_b0 = (longlong *)0x0; local_a8 = 0; local_a0 = 0; local_98 = 0; FUN_140171180(&local_b8); if ((uint)local_a0 == 0) { FUN_14016d8c0(); puVar5 = PTR_DAT_140344098; local_90 = PTR_DAT_140344098; lVar15 = (longlong)(int)(uint)local_a0; if ((int)(uint)local_a0 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } FUN_1401703e0(&local_b8,(uint)local_a0 + 1); lVar16 = local_a8; if ((uint)local_a0 == 0) { lVar16 = 0; } FUN_14004f4d0(lVar16 + lVar15 * 8,&local_90); if (((puVar5 != (undefined *)0x0) && (puVar5 != PTR_DAT_140344098)) && (puVar5 + -8 != (undefined *)0x0)) { uVar3 = FUN_14016d8c0(); local_78 = uVar3; FUN_14016db50(uVar3); local_70 = 1; piVar1 = (int *)(puVar5 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar5 + -8); } FUN_14016dbe0(uVar3); local_70 = 0; } local_90 = PTR_DAT_140344098; } local_res10 = 0; local_res20 = 0; uVar14 = (uint)local_a0; if (0 < (int)(uint)local_a0) { do { puVar8 = (undefined8 *)0x0; puVar4 = operator_new(0x100); puVar12 = puVar8; local_50 = puVar4; if (puVar4 != (undefined8 *)0x0) { *puVar4 = Proud::CSsdpContext::vftable; FUN_14016d8c0(); puVar4[1] = PTR_DAT_140344098; puVar4[2] = 0; puVar4[5] = 0; puVar4[6] = 0; puVar4[7] = 0; puVar4[8] = 0; puVar4[4] = Proud::ByteArray::vftable; *(undefined1 *)(puVar4 + 0x10) = 0; *(undefined1 *)(puVar4 + 0x18) = 0; puVar4[0x19] = 0; puVar4[3] = 0; puVar12 = puVar4; } if (puVar12 == (undefined8 *)0x0) { local_res18 = (longlong *)0x0; } else { local_res18 = (longlong *)FUN_14016d940(0x10); local_res18[1] = 1; *local_res18 = (longlong)puVar12; } lVar9 = local_a8; if ((local_res20 < 0) || ((int)(uint)local_a0 <= local_res10)) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } if (local_res18 != (longlong *)0x0) { puVar8 = (undefined8 *)*local_res18; } puVar5 = (undefined *)puVar8[1]; if ((undefined *)puVar8[1] == (undefined *)0x0) { puVar5 = PTR_DAT_140344098; } puVar8[1] = puVar5; if (*(undefined **)(local_a8 + local_res20 * 8) != puVar5) { uVar3 = FUN_14016d8c0(); local_68 = uVar3; FUN_14016db50(uVar3); local_60 = 1; FUN_14004f5a0(puVar8 + 1); puVar5 = *(undefined **)(lVar9 + local_res20 * 8); puVar8[1] = puVar5; if (((puVar5 != PTR_DAT_140344098) && (puVar5 != (undefined *)0x0)) && (puVar5 != (undefined *)0x8)) { *(int *)(puVar5 + -4) = *(int *)(puVar5 + -4) + 1; } FUN_14016dbe0(uVar3); local_60 = 0; } lVar15 = param_1 + 0x100; iVar2 = *(int *)(param_1 + 0x118); lVar9 = (longlong)iVar2; if (iVar2 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } iVar11 = *(int *)(param_1 + 0x118); FUN_1401f61d0(lVar15,iVar11 + 1); iVar11 = iVar11 - iVar2; if ((0 < iVar11) && (iVar11 = iVar11 + -1, -1 < iVar11)) { lVar16 = (longlong)(iVar11 + iVar2 + 1) << 3; lVar17 = (longlong)(iVar11 + iVar2) << 3; do { lVar6 = FUN_14016ab80(lVar15); lVar7 = FUN_14016ab80(lVar15); FUN_1401eb200(lVar16 + lVar7,lVar17 + lVar6); lVar17 = lVar17 + -8; lVar16 = lVar16 + -8; iVar11 = iVar11 + -1; } while (-1 < iVar11); } lVar15 = FUN_14016ab80(lVar15); if (local_res18 != *(longlong **)(lVar15 + lVar9 * 8)) { if (local_res18 != (longlong *)0x0) { local_res18[1] = local_res18[1] + 1; } plVar10 = (longlong *)0x0; lVar16 = *(longlong *)(lVar15 + lVar9 * 8); if ((lVar16 != 0) && (*(longlong *)(*(longlong *)(lVar15 + lVar9 * 8) + 8) = *(longlong *)(lVar16 + 8) + -1, *(longlong *)(*(longlong *)(lVar15 + lVar9 * 8) + 8) == 0)) { plVar10 = *(longlong **)(lVar15 + lVar9 * 8); } *(longlong **)(lVar15 + lVar9 * 8) = local_res18; if (plVar10 != (longlong *)0x0) { puVar8 = (undefined8 *)*plVar10; if (puVar8 != (undefined8 *)0x0) { (**(code **)*puVar8)(puVar8,1); } FUN_14016d970(plVar10); } } if (local_res18 != (longlong *)0x0) { plVar10 = local_res18 + 1; *plVar10 = *plVar10 + -1; if (*plVar10 == 0) { puVar8 = (undefined8 *)*local_res18; if (puVar8 != (undefined8 *)0x0) { (**(code **)*puVar8)(puVar8,1); } FUN_14016d970(local_res18); } } local_res10 = local_res10 + 1; local_res20 = local_res20 + 1; lVar9 = local_88; uVar14 = (uint)local_a0; } while (local_res10 < (int)(uint)local_a0); } local_b8 = Proud::CFastArray,0>::vftable; if (0 < (int)uVar14) { uVar13 = (ulonglong)uVar14; lVar15 = local_a8; do { FUN_14004f5a0(lVar15); lVar15 = lVar15 + 8; uVar13 = uVar13 - 1; } while (uVar13 != 0); } if (local_a8 != 0) { if (local_b0 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*local_b0 + 0x18))(local_b0,local_a8); } } FUN_14016dbe0(lVar9); return; }