/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401e0de0 FUN_1401e0de0 * Pseudocode, not original source. */ void FUN_1401e0de0(longlong param_1,undefined4 param_2) { int *piVar1; double dVar2; undefined8 *puVar3; char cVar4; undefined4 uVar5; uint uVar6; uint uVar7; uint uVar8; uint uVar9; int iVar10; undefined4 *puVar11; undefined4 *puVar12; longlong *plVar13; uint *puVar14; undefined8 uVar15; longlong *plVar16; longlong lVar17; uint *puVar18; longlong lVar19; uint *puVar20; longlong lVar21; uint uVar22; longlong lVar23; longlong lVar24; longlong lVar25; int iVar26; undefined *puVar27; undefined *puVar28; undefined *puVar29; undefined4 *puVar30; double dVar31; double dVar32; undefined8 *local_res8; undefined4 local_res10; uint *local_res18; undefined4 *local_res20; undefined **local_228; undefined4 local_220; undefined2 local_21c; undefined *local_218; undefined *local_210; undefined *local_208; undefined *local_200; undefined4 *local_1f8; undefined1 local_1f0; undefined *local_1e8; undefined *local_1e0; undefined4 local_1d8 [2]; longlong local_1d0 [2]; undefined8 local_1c0; undefined8 local_1b8; undefined **local_1b0; undefined8 local_1a8; undefined8 local_1a0; undefined8 local_198; undefined8 local_190; undefined8 local_188; longlong local_180; ulonglong local_178; undefined4 local_168; undefined **local_160; undefined8 local_158; undefined8 local_150; undefined8 local_148; undefined8 local_140; undefined **local_130; undefined4 local_128; undefined2 local_124; undefined **local_118; undefined8 local_110; undefined8 local_108; undefined8 local_100; undefined8 local_f8; undefined8 local_e8; undefined1 local_e0; undefined8 local_d8; undefined1 local_d0; undefined8 local_c8; undefined1 local_c0; undefined8 local_b8; undefined8 local_b0; undefined1 local_a8; undefined8 local_a0; undefined1 local_98; undefined8 local_90; undefined1 local_88; undefined8 local_80; undefined1 local_78; undefined4 *local_70; local_b8 = 0xfffffffffffffffe; puVar30 = (undefined4 *)0x0; uVar8 = 0; puVar11 = puVar30; if (*(undefined8 **)(param_1 + 0x1570) != (undefined8 *)0x0) { puVar11 = (undefined4 *)**(undefined8 **)(param_1 + 0x1570); } if (*(char *)(puVar11 + 0x20) != '\x01') { return; } puVar11 = puVar30; if (*(undefined8 **)(param_1 + 0x1570) != (undefined8 *)0x0) { puVar11 = (undefined4 *)**(undefined8 **)(param_1 + 0x1570); } local_res10 = param_2; FUN_1401f37b0(puVar11,0); local_1d0[0] = 0; local_1c0 = 0; local_1b8 = 0; local_1a8 = 0; local_1a0 = 0; local_198 = 0; local_190 = 0; local_1b0 = Proud::ByteArray::vftable; local_178 = 0; local_180 = 0; local_188 = 0; local_158 = 0; local_150 = 0; local_148 = 0; local_140 = 0; local_160 = Proud::ByteArray::vftable; local_130 = Proud::AddrPort::vftable; local_128 = 0; local_124 = 0; local_110 = 0; local_108 = 0; local_100 = 0; local_f8 = 0; local_118 = Proud::ByteArray::vftable; local_res20 = (undefined4 *)FUN_14016d940(0x60); puVar11 = puVar30; if (local_res20 != (undefined4 *)0x0) { puVar11 = (undefined4 *)FUN_140198ee0(local_res20); } if (puVar11 == (undefined4 *)0x0) { local_res20 = (undefined4 *)0x0; puVar12 = puVar30; } else { puVar12 = (undefined4 *)FUN_14016d940(0x48); local_70 = puVar12; if (puVar12 != (undefined4 *)0x0) { local_res20 = puVar12; uVar5 = FUN_140171510(); FUN_14016da70(puVar12,uVar5,1); } local_res20 = puVar12; FUN_14016db50(puVar12); *(undefined8 *)(puVar12 + 0x10) = 1; *(undefined4 **)(puVar12 + 0xe) = puVar11; FUN_14016dbe0(puVar12); } FUN_140184b90(local_1d0,&local_res20); if (puVar12 != (undefined4 *)0x0) { local_1f8 = puVar12; FUN_14016db50(puVar12); local_1f0 = 1; plVar16 = (longlong *)(puVar12 + 0x10); *plVar16 = *plVar16 + -1; if (*plVar16 == 0) { FUN_14016dbe0(puVar12); local_1f0 = 0; FUN_140154a90(puVar12); } else { FUN_14016dbe0(puVar12); local_1f0 = 0; } } local_1d8[0] = 0xd; puVar11 = puVar30; if (local_1d0[0] != 0) { puVar11 = *(undefined4 **)(local_1d0[0] + 0x38); } *puVar11 = 0x1c; local_168 = 1; FUN_1401dcb50(param_1,local_1d8); puVar11 = puVar30; if (*(undefined8 **)(param_1 + 0x1570) != (undefined8 *)0x0) { puVar11 = (undefined4 *)**(undefined8 **)(param_1 + 0x1570); } puVar3 = *(undefined8 **)(param_1 + 0x1570); if ((int)puVar11[0x50] < DAT_140344cb8) { puVar11 = puVar30; if (puVar3 != (undefined8 *)0x0) { puVar11 = (undefined4 *)*puVar3; } *(undefined8 *)(puVar11 + 0x40) = DAT_14034c8b0; puVar11 = puVar30; if (*(undefined8 **)(param_1 + 0x1570) != (undefined8 *)0x0) { puVar11 = (undefined4 *)**(undefined8 **)(param_1 + 0x1570); } puVar11[0x50] = puVar11[0x50] + 1; } else { puVar11 = puVar30; if (puVar3 != (undefined8 *)0x0) { puVar11 = (undefined4 *)*puVar3; } *(undefined8 *)(puVar11 + 0x40) = DAT_140344ca8; } if ((*(char *)(param_1 + 0x1790) == '\0') && (*(int *)(param_1 + 0x6c8) == 0)) goto LAB_1401e1732; FUN_1401d37e0(param_1,&local_210); puVar11 = puVar30; if (*(undefined8 **)(param_1 + 0x1570) != (undefined8 *)0x0) { puVar11 = (undefined4 *)**(undefined8 **)(param_1 + 0x1570); } plVar16 = (longlong *)(param_1 + 0x70); dVar31 = (double)(**(code **)(*plVar16 + 0x1c0))(plVar16); dVar2 = *(double *)(puVar11 + 0x30); dVar32 = 0.0; if (((*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) && (lVar21 = **(longlong **)(param_1 + 0x1520), dVar32 = 0.0, lVar21 != 0)) && (dVar32 = 0.0, lVar21 != 0x40)) { puVar11 = (undefined4 *)(lVar21 + -0x40); if (lVar21 == 0) { puVar11 = puVar30; } dVar32 = (double)(**(code **)(*plVar16 + 0x1c0))(plVar16); dVar32 = dVar32 - *(double *)(puVar11 + 0x60); } if (((*(longlong **)(param_1 + 0x1520) == (longlong *)0x0) || (lVar21 = **(longlong **)(param_1 + 0x1520), lVar21 == 0)) || (lVar21 == 0x40)) { local_220 = DAT_140344450; local_21c = DAT_140344454; } else { puVar11 = puVar30; if (lVar21 != 0) { puVar11 = (undefined4 *)(lVar21 + -0x40); } local_220 = puVar11[0x4c]; local_21c = *(undefined2 *)(puVar11 + 0x4d); } local_228 = Proud::AddrPort::vftable; plVar13 = (longlong *)FUN_1401705d0(&local_228,&local_200); puVar27 = (undefined *)*plVar13; if ((undefined *)*plVar13 == (undefined *)0x0) { puVar27 = PTR_DAT_1403440a0; } FUN_14016d8c0(); puVar20 = (uint *)PTR_DAT_1403440a0; local_res18 = (uint *)PTR_DAT_1403440a0; uVar6 = FUN_14016d740(puVar27); puVar11 = puVar30; if ((puVar20 != (uint *)0x0) && (puVar11 = (undefined4 *)0x0, puVar20 != (uint *)PTR_DAT_1403440a0)) { puVar11 = (undefined4 *)(ulonglong)*(uint *)((longlong)puVar20 + -8); } uVar9 = 0; uVar7 = uVar6; if ((((int)uVar6 <= (int)puVar11) && (uVar7 = uVar8, puVar20 != (uint *)0x0)) && (uVar7 = uVar9, puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = *(uint *)((longlong)puVar20 + -8); } uVar22 = 1; if (1 < (int)uVar7) { uVar22 = uVar7; } uVar7 = uVar9; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = *(uint *)((longlong)puVar20 + -8); } if ((int)uVar7 < (int)uVar22) { if (puVar20 == (uint *)0x0) { puVar20 = (uint *)PTR_DAT_1403440a0; } local_res18 = puVar20; if ((int)uVar22 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar22 == 0) { FUN_14004eb70(&local_res18); } else { uVar7 = uVar9; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = puVar20[-2]; } if (uVar22 != uVar7) { puVar14 = (uint *)FUN_14016d940((longlong)(int)uVar22 * 2 + 10); if (puVar14 != (uint *)0x0) { *puVar14 = 0; puVar14[1] = 1; } *puVar14 = uVar22; uVar7 = uVar9; if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar7 = puVar20[-2]; } puVar18 = (uint *)PTR_DAT_1403440a0; if ((int)uVar22 < (int)uVar7) { LAB_1401e127a: if (puVar20 != (uint *)0x0) { puVar18 = puVar20; } } else { uVar22 = uVar8; if (puVar20 != (uint *)0x0) { if (puVar20 != (uint *)PTR_DAT_1403440a0) { uVar22 = puVar20[-2]; } goto LAB_1401e127a; } } FUN_14016d770(puVar14 + 2,puVar18,uVar22); FUN_14004eb70(&local_res18); local_res18 = puVar14 + 2; } } } FUN_14004e850(&local_res18); puVar20 = local_res18; puVar14 = local_res18; if (local_res18 == (uint *)0x0) { puVar14 = (uint *)PTR_DAT_1403440a0; } FUN_14016d770(puVar14,puVar27,uVar6); puVar14 = puVar20; if (puVar20 == (uint *)0x0) { puVar14 = (uint *)PTR_DAT_1403440a0; } uVar8 = FUN_14016d740(puVar14); puVar11 = puVar30; if (0 < (int)uVar8) { puVar11 = (undefined4 *)(ulonglong)uVar8; } if ((puVar20 != (uint *)0x0) && (puVar20 != (uint *)PTR_DAT_1403440a0)) { uVar9 = puVar20[-2]; } if (((int)puVar11 < (int)uVar9) || (puVar11 = puVar30, puVar20 == (uint *)0x0)) { LAB_1401e1316: if (((puVar20 != (uint *)PTR_DAT_1403440a0) && (puVar20 != (uint *)0x0)) && (puVar20 + -2 != (uint *)0x0)) { puVar20[-2] = (uint)puVar11; *(undefined2 *)((longlong)puVar20 + (longlong)(int)(uint)puVar11 * 2) = 0; } } else if (puVar20 != (uint *)PTR_DAT_1403440a0) { puVar11 = (undefined4 *)(ulonglong)puVar20[-2]; goto LAB_1401e1316; } if (((local_200 != (undefined *)0x0) && (local_200 != PTR_DAT_1403440a0)) && (local_200 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_a0 = uVar15; FUN_14016db50(uVar15); local_98 = 1; piVar1 = (int *)(local_200 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_200 + -8); } FUN_14016dbe0(uVar15); } if (puVar20 == (uint *)0x0) { puVar20 = (uint *)PTR_DAT_1403440a0; } puVar27 = local_210; if (local_210 == (undefined *)0x0) { puVar27 = PTR_DAT_1403440a0; } local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffffffffff00); local_200 = PTR_DAT_1403440a0; cVar4 = (**(code **)(*plVar16 + 0x158))(plVar16,&local_res8); iVar26 = 1; if (cVar4 != '\0') { iVar26 = 1; if ((char)local_res8 == '\0') { iVar26 = 2; } } plVar16 = (longlong *)(**(code **)(*plVar16 + 0xb0))(plVar16,&local_1e8); puVar28 = (undefined *)*plVar16; if (puVar28 == (undefined *)0x0) { iVar10 = 0; } else if (puVar28 == PTR_DAT_1403440a0) { iVar10 = 0; } else { iVar10 = *(int *)(puVar28 + -8); } if (((local_1e8 != (undefined *)0x0) && (local_1e8 != PTR_DAT_1403440a0)) && (local_1e8 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_e8 = uVar15; FUN_14016db50(uVar15); local_e0 = 1; piVar1 = (int *)(local_1e8 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_1e8 + -8); } FUN_14016dbe0(uVar15); } if (iVar10 != 0) { iVar26 = iVar26 + 1; } FUN_14016d8c0(); local_218 = PTR_DAT_1403440a0; plVar16 = (longlong *)FUN_14016f6b0(&local_1e0); plVar13 = (longlong *)(**(code **)(*(longlong *)(param_1 + 0x70) + 0xb0))(); puVar28 = (undefined *)*plVar16; if ((undefined *)*plVar16 == (undefined *)0x0) { puVar28 = PTR_DAT_1403440a0; } puVar29 = (undefined *)*plVar13; if ((undefined *)*plVar13 == (undefined *)0x0) { puVar29 = PTR_DAT_1403440a0; } plVar16 = *(longlong **)(param_1 + 0x1570); if (plVar16 == (longlong *)0x0) { lVar21 = 0; lVar25 = 0; lVar24 = 0; } else { lVar21 = *plVar16; lVar25 = *plVar16; lVar24 = *plVar16; } lVar17 = *(longlong *)(param_1 + 0x5d8); if (lVar17 == 0) { lVar23 = 0; lVar19 = 0; lVar17 = 0; } else { lVar23 = *(longlong *)(lVar17 + 0x38); lVar19 = *(longlong *)(lVar17 + 0x38); lVar17 = *(longlong *)(lVar17 + 0x38); } FUN_14004c020(&local_218, L"(first chance) to-server UDP punch lost##Reason:%d##CliInstCount=%d##RecentElapTime=%3.3f##DisconnedCount=%d##recv count=%d##last ok recv interval=%3.3f##Recurred:%d##LocalIP:%s##UDP kept time:%3.3f##Time diff since RecvIssue:%3.3f##NAT name=%s##%s##Process=%s" ,local_res10,*(undefined4 *)(lVar17 + 0x2a8),*(undefined8 *)(lVar19 + 0x180), *(undefined4 *)(lVar23 + 0x288),*(undefined4 *)(lVar24 + 0x1c0), *(undefined8 *)(lVar25 + 0x200),*(undefined4 *)(lVar21 + 0x140),puVar20, dVar31 - dVar2,dVar32,puVar29,puVar27,puVar28); if (((local_208 != (undefined *)0x0) && (local_208 != PTR_DAT_1403440a0)) && (local_208 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_80 = uVar15; FUN_14016db50(uVar15); local_78 = 1; piVar1 = (int *)(local_208 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_208 + -8); } FUN_14016dbe0(uVar15); } local_208 = PTR_DAT_1403440a0; if (((local_1e0 != (undefined *)0x0) && (local_1e0 != PTR_DAT_1403440a0)) && (local_1e0 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_d8 = uVar15; FUN_14016db50(uVar15); local_d0 = 1; piVar1 = (int *)(local_1e0 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_1e0 + -8); } FUN_14016dbe0(uVar15); } puVar27 = local_218; FUN_1401d51c0(param_1,iVar26,&DAT_1402b0a98,local_218); if (((puVar27 != (undefined *)0x0) && (puVar27 != PTR_DAT_1403440a0)) && (puVar27 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_c8 = uVar15; FUN_14016db50(uVar15); local_c0 = 1; piVar1 = (int *)(puVar27 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar27 + -8); } FUN_14016dbe0(uVar15); } puVar20 = local_res18; if (((local_res18 != (uint *)0x0) && (local_res18 != (uint *)PTR_DAT_1403440a0)) && (puVar14 = local_res18 + -2, puVar14 != (uint *)0x0)) { uVar15 = FUN_14016d8c0(); local_b0 = uVar15; FUN_14016db50(uVar15); local_a8 = 1; puVar20 = puVar20 + -1; *puVar20 = *puVar20 - 1; if (*puVar20 == 0) { FUN_14016d970(puVar14); } FUN_14016dbe0(uVar15); } if (((local_210 != (undefined *)0x0) && (local_210 != PTR_DAT_1403440a0)) && (local_210 + -8 != (undefined *)0x0)) { uVar15 = FUN_14016d8c0(); local_90 = uVar15; FUN_14016db50(uVar15); local_88 = 1; piVar1 = (int *)(local_210 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_210 + -8); } FUN_14016dbe0(uVar15); } LAB_1401e1732: (**(code **)(*(longlong *)(param_1 + 0x1818) + 0x50)) ((longlong *)(param_1 + 0x1818),1,&DAT_14034c4b0); FUN_14019a9e0(&local_118); FUN_14019a9e0(&local_160); local_res8 = &local_188; FUN_14016d0e0(&local_188); if (local_180 != 0) { if ((longlong)local_178 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } local_178 = local_178 & 0xffffffff00000000; } FUN_14019a9e0(&local_1b0); FUN_14018b600(&local_1b8); FUN_14018b580(&local_1c0); FUN_140154b00(local_1d0); return; }