1332 lines
46 KiB
C
1332 lines
46 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14006a630 FUN_14006a630
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Removing unreachable block (ram,0x00014006b2b1) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014006b2c4) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014006b2e2) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014006bf3d) */
|
|
|
|
undefined8
|
|
FUN_14006a630(longlong param_1,uint param_2,undefined8 param_3,undefined8 *param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
uint *puVar1;
|
|
undefined *puVar2;
|
|
int *piVar3;
|
|
undefined4 uVar4;
|
|
undefined4 uVar5;
|
|
void *pvVar6;
|
|
undefined **ppuVar7;
|
|
LPVOID pvVar8;
|
|
bool bVar9;
|
|
bool bVar10;
|
|
bool bVar11;
|
|
bool bVar12;
|
|
bool bVar13;
|
|
bool bVar14;
|
|
bool bVar15;
|
|
bool bVar16;
|
|
bool bVar17;
|
|
bool bVar18;
|
|
bool bVar19;
|
|
bool bVar20;
|
|
bool bVar21;
|
|
bool bVar22;
|
|
bool bVar23;
|
|
bool bVar24;
|
|
bool bVar25;
|
|
undefined4 uVar26;
|
|
undefined2 uVar27;
|
|
undefined ***pppuVar28;
|
|
short *psVar29;
|
|
undefined *puVar30;
|
|
int iVar31;
|
|
uint uVar32;
|
|
uint uVar33;
|
|
ulonglong uVar34;
|
|
ulonglong uVar35;
|
|
undefined8 uVar36;
|
|
uint *puVar37;
|
|
longlong *plVar38;
|
|
undefined8 *puVar39;
|
|
undefined4 *puVar40;
|
|
TypeDescriptor *pTVar41;
|
|
int *piVar42;
|
|
ulonglong uVar43;
|
|
TypeDescriptor *pTVar44;
|
|
undefined ***pppuVar45;
|
|
short **ppsVar46;
|
|
longlong lVar47;
|
|
uint **ppuVar48;
|
|
ulonglong uVar49;
|
|
void **ppvVar50;
|
|
TypeDescriptor *pTVar51;
|
|
TypeDescriptor *pTVar52;
|
|
undefined ***pppuVar53;
|
|
uint uVar54;
|
|
undefined ***pppuVar55;
|
|
ulonglong uVar56;
|
|
SIZE_T SVar57;
|
|
uint *puVar58;
|
|
undefined *puVar59;
|
|
short *psVar60;
|
|
TypeDescriptor *pTVar61;
|
|
undefined ***pppuVar62;
|
|
int *piVar63;
|
|
undefined1 auStack_708 [32];
|
|
uint local_68c;
|
|
uint *local_688;
|
|
TypeDescriptor local_680;
|
|
undefined4 local_670;
|
|
longlong local_668;
|
|
undefined ***local_660;
|
|
undefined ***local_658;
|
|
undefined ***local_650;
|
|
undefined8 *local_648;
|
|
TypeDescriptor *local_640;
|
|
undefined4 local_638;
|
|
uint *local_630;
|
|
undefined4 local_628;
|
|
TypeDescriptor *local_620;
|
|
undefined4 local_618;
|
|
undefined4 local_614;
|
|
TypeDescriptor *local_610;
|
|
undefined ***local_608;
|
|
uint *local_5f8;
|
|
short *local_5f0;
|
|
undefined4 local_5e8;
|
|
undefined ***local_5e0;
|
|
undefined8 *local_5d8;
|
|
undefined4 local_5d0;
|
|
undefined *local_5c8;
|
|
undefined4 *local_5c0;
|
|
longlong local_5b8;
|
|
TypeDescriptor *local_5b0;
|
|
undefined **local_5a8;
|
|
undefined8 local_5a0;
|
|
TypeDescriptor *local_598;
|
|
undefined8 local_590;
|
|
undefined4 local_588;
|
|
undefined4 local_584;
|
|
undefined **local_580;
|
|
undefined8 local_578;
|
|
TypeDescriptor *local_570;
|
|
undefined8 local_568;
|
|
undefined4 local_560;
|
|
undefined4 local_55c;
|
|
undefined **local_558;
|
|
undefined8 local_550;
|
|
TypeDescriptor *local_548;
|
|
undefined8 local_540;
|
|
undefined4 local_538;
|
|
undefined4 local_534;
|
|
undefined **local_530;
|
|
undefined8 local_528;
|
|
TypeDescriptor *local_520;
|
|
undefined8 local_518;
|
|
undefined4 local_510;
|
|
undefined4 local_50c;
|
|
int *local_508;
|
|
undefined1 local_500;
|
|
TypeDescriptor *local_4f8;
|
|
void **local_4f0;
|
|
int *local_4e8;
|
|
undefined8 *local_4e0;
|
|
undefined **local_4d8;
|
|
undefined8 local_4d0;
|
|
undefined8 local_4c8;
|
|
undefined8 local_4c0;
|
|
undefined8 local_4b8;
|
|
undefined **local_4b0;
|
|
undefined8 local_4a8;
|
|
undefined8 local_4a0;
|
|
undefined8 local_498;
|
|
undefined8 local_490;
|
|
undefined **local_488;
|
|
undefined8 local_480;
|
|
undefined8 local_478;
|
|
undefined8 local_470;
|
|
undefined8 local_468;
|
|
undefined **local_460;
|
|
undefined8 local_458;
|
|
undefined8 local_450;
|
|
undefined8 local_448;
|
|
undefined8 local_440;
|
|
undefined **local_438;
|
|
undefined8 local_430;
|
|
undefined8 local_428;
|
|
undefined8 local_420;
|
|
undefined8 local_418;
|
|
undefined **local_410;
|
|
undefined8 local_408;
|
|
undefined8 local_400;
|
|
undefined8 local_3f8;
|
|
undefined8 local_3f0;
|
|
undefined ***local_3e8;
|
|
undefined1 local_3e0;
|
|
int *local_3d8;
|
|
undefined1 local_3d0;
|
|
undefined4 local_3b8;
|
|
undefined **local_3b0;
|
|
undefined4 local_3a8;
|
|
undefined2 local_3a4;
|
|
undefined **local_3a0;
|
|
undefined4 local_398;
|
|
undefined2 local_394;
|
|
undefined1 local_390;
|
|
undefined4 local_388;
|
|
undefined **local_380;
|
|
undefined4 local_378;
|
|
undefined2 local_374;
|
|
undefined **local_370;
|
|
undefined4 local_368;
|
|
undefined2 local_364;
|
|
undefined1 local_360;
|
|
undefined4 local_358;
|
|
undefined **local_350;
|
|
undefined4 local_348;
|
|
undefined2 local_344;
|
|
undefined **local_340;
|
|
undefined4 local_338;
|
|
undefined2 local_334;
|
|
undefined1 local_330;
|
|
undefined8 local_320;
|
|
undefined8 local_318 [2];
|
|
undefined8 local_308 [36];
|
|
undefined4 local_1e8;
|
|
undefined4 local_1e4;
|
|
undefined4 local_1e0;
|
|
undefined4 local_1dc;
|
|
undefined4 local_1d8;
|
|
undefined4 local_1d4;
|
|
undefined4 local_1d0;
|
|
undefined4 local_1cc;
|
|
undefined4 local_1c8;
|
|
undefined4 local_1c4;
|
|
undefined4 local_1c0;
|
|
undefined4 local_1bc;
|
|
undefined4 local_1b8;
|
|
undefined4 local_1b4;
|
|
undefined4 local_1b0;
|
|
undefined4 local_1ac;
|
|
uint local_1a8;
|
|
uint local_1a4;
|
|
undefined4 local_1a0;
|
|
int *local_198;
|
|
uint local_190;
|
|
undefined4 local_18c;
|
|
undefined4 local_188;
|
|
int *local_180;
|
|
undefined4 local_178 [72];
|
|
ulonglong local_58;
|
|
|
|
local_320 = 0xfffffffffffffffe;
|
|
local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_708;
|
|
local_680.spare._0_4_ = (uint)param_3;
|
|
pTVar51 = (TypeDescriptor *)0x0;
|
|
bVar24 = false;
|
|
bVar22 = false;
|
|
bVar20 = false;
|
|
bVar19 = false;
|
|
bVar17 = false;
|
|
bVar15 = false;
|
|
bVar13 = false;
|
|
ppuVar48 = &local_688;
|
|
puVar39 = param_4;
|
|
local_68c = param_2;
|
|
local_668 = param_1;
|
|
local_648 = param_4;
|
|
local_5b8 = param_1;
|
|
local_4e0 = param_4;
|
|
FUN_140064860(param_1,(longlong *)ppuVar48,(uint)local_680.spare);
|
|
if ((local_688 == (uint *)0x0) || (*(longlong *)local_688 == 0)) {
|
|
if ((local_688 != (uint *)0x0) &&
|
|
(*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1,
|
|
*(longlong *)(local_688 + 2) == 0)) {
|
|
pvVar8 = *(LPVOID *)local_688;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,ppuVar48,param_3,puVar39);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(local_688);
|
|
}
|
|
LAB_14006c2fb:
|
|
uVar43 = FUN_140049e40(param_4);
|
|
return uVar43 & 0xffffffffffffff00;
|
|
}
|
|
local_670 = param_5;
|
|
uVar33 = *(uint *)(*(longlong *)local_688 + 0x30);
|
|
uVar56 = (ulonglong)local_68c;
|
|
uVar43 = uVar56 % (ulonglong)uVar33;
|
|
lVar47 = *(longlong *)(*(longlong *)local_688 + 0x10);
|
|
if (lVar47 != 0) {
|
|
for (puVar37 = *(uint **)(lVar47 + uVar43 * 8);
|
|
(puVar37 != (uint *)0x0 && ((uint)uVar43 == puVar37[10] % uVar33));
|
|
puVar37 = *(uint **)(puVar37 + 6)) {
|
|
if (*puVar37 == local_68c) {
|
|
uVar36 = 0x11;
|
|
uVar43 = (ulonglong)(uint)local_680.spare;
|
|
FUN_140069310(param_1,uVar43,uVar56,0x11);
|
|
if ((local_688 != (uint *)0x0) &&
|
|
(*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1,
|
|
*(longlong *)(local_688 + 2) == 0)) {
|
|
pvVar8 = *(LPVOID *)local_688;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,uVar43,uVar56,uVar36);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(local_688);
|
|
}
|
|
uVar36 = FUN_140049e40(param_4);
|
|
return CONCAT71((int7)((ulonglong)uVar36 >> 8),1);
|
|
}
|
|
}
|
|
}
|
|
if ((*(char *)(param_1 + 0x24c) == '\0') || (local_68c != 1)) {
|
|
uVar49 = (ulonglong)local_68c;
|
|
puVar37 = local_688;
|
|
uVar34 = FUN_14004f000(param_1,local_68c);
|
|
if ((uVar34 == 0) ||
|
|
((pppuVar53 = (undefined ***)(uVar34 + 0x40), local_658 = pppuVar53,
|
|
pppuVar53 == (undefined ***)0x0 ||
|
|
(uVar35 = FUN_140050f60(param_1,uVar34), uVar49 = uVar34, (char)uVar35 != '\0')))) {
|
|
*(longlong *)(puVar37 + 2) = *(longlong *)(puVar37 + 2) + -1;
|
|
if (*(longlong *)(local_688 + 2) == 0) {
|
|
pvVar8 = *(LPVOID *)local_688;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,uVar49,uVar56,uVar43);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(local_688);
|
|
}
|
|
goto LAB_14006c2fb;
|
|
}
|
|
}
|
|
else {
|
|
pppuVar53 = (undefined ***)(param_1 + 0xb8);
|
|
local_658 = pppuVar53;
|
|
}
|
|
piVar63 = (int *)FUN_140048960((char *)(param_1 + 0x760));
|
|
uVar33 = local_68c;
|
|
bVar9 = false;
|
|
pTVar61 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)local_688;
|
|
}
|
|
ppvVar50 = &pTVar61->spare;
|
|
uVar32 = *(uint *)&pTVar61[3].pVFTable;
|
|
uVar43 = (ulonglong)local_68c % (ulonglong)uVar32;
|
|
pvVar6 = pTVar61[1].pVFTable;
|
|
uVar54 = (uint)uVar43;
|
|
local_508 = piVar63;
|
|
local_4e8 = piVar63;
|
|
if (pvVar6 != (void *)0x0) {
|
|
for (puVar37 = *(uint **)((longlong)pvVar6 + uVar43 * 8);
|
|
(puVar37 != (uint *)0x0 && (uVar54 == puVar37[10] % uVar32));
|
|
puVar37 = *(uint **)(puVar37 + 6)) {
|
|
if (*puVar37 == local_68c) goto LAB_14006a913;
|
|
}
|
|
if (pvVar6 != (void *)0x0) {
|
|
for (puVar37 = *(uint **)((longlong)pvVar6 + uVar43 * 8);
|
|
(puVar37 != (uint *)0x0 && (uVar54 == puVar37[10] % uVar32));
|
|
puVar37 = *(uint **)(puVar37 + 6)) {
|
|
if (*puVar37 == local_68c) goto LAB_14006a8fb;
|
|
}
|
|
}
|
|
}
|
|
if ((pvVar6 == (void *)0x0) &&
|
|
(uVar36 = FUN_14004c640((longlong)ppvVar50,uVar32,'\x01'), (char)uVar36 == '\0')) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400050d0(0x8007000e);
|
|
}
|
|
FUN_14004c730((char *)ppvVar50);
|
|
puVar37 = FUN_14004e640((char *)ppvVar50,&local_68c,uVar54,uVar33);
|
|
FUN_14004c730((char *)ppvVar50);
|
|
LAB_14006a8fb:
|
|
*(int **)(puVar37 + 2) = local_508;
|
|
*(undefined ****)(puVar37 + 4) = pppuVar53;
|
|
LAB_14006a913:
|
|
local_630 = (uint *)0x0;
|
|
if (local_688 != (uint *)0x0) {
|
|
*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + 1;
|
|
local_630 = local_688;
|
|
}
|
|
uVar33 = *(uint *)(pppuVar53 + 6);
|
|
pTVar61 = (TypeDescriptor *)(ulonglong)uVar33;
|
|
uVar43 = (ulonglong)(uint)local_680.spare % (ulonglong)pTVar61;
|
|
ppuVar7 = pppuVar53[2];
|
|
uVar32 = (uint)uVar43;
|
|
if (ppuVar7 != (undefined **)0x0) {
|
|
for (puVar37 = (uint *)ppuVar7[uVar43];
|
|
(puVar37 != (uint *)0x0 && (uVar32 == puVar37[8] % uVar33));
|
|
puVar37 = *(uint **)(puVar37 + 4)) {
|
|
if (*puVar37 == (uint)local_680.spare) goto LAB_14006aa94;
|
|
}
|
|
if (ppuVar7 != (undefined **)0x0) {
|
|
puVar37 = (uint *)ppuVar7[uVar43];
|
|
while ((puVar37 != (uint *)0x0 &&
|
|
(ppvVar50 = (void **)((ulonglong)puVar37[8] % (ulonglong)pTVar61),
|
|
uVar32 == (uint)ppvVar50))) {
|
|
if (*puVar37 == (uint)local_680.spare) goto LAB_14006aa0e;
|
|
puVar37 = *(uint **)(puVar37 + 4);
|
|
}
|
|
if (ppuVar7 != (undefined **)0x0) goto LAB_14006a9d5;
|
|
}
|
|
}
|
|
uVar36 = FUN_14004c640((longlong)(pppuVar53 + 1),uVar33,'\x01');
|
|
if ((char)uVar36 == '\0') {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400050d0(0x8007000e);
|
|
}
|
|
LAB_14006a9d5:
|
|
FUN_1400c8cb0((char *)(pppuVar53 + 1));
|
|
pTVar61 = (TypeDescriptor *)(ulonglong)(uint)local_680.spare;
|
|
ppvVar50 = &local_680.spare;
|
|
puVar37 = FUN_140067090((char *)(pppuVar53 + 1),(undefined4 *)ppvVar50,uVar32,
|
|
(uint)local_680.spare);
|
|
FUN_1400c8cb0((char *)(pppuVar53 + 1));
|
|
LAB_14006aa0e:
|
|
if (local_630 != *(uint **)(puVar37 + 2)) {
|
|
if (local_630 != (uint *)0x0) {
|
|
*(longlong *)(local_630 + 2) = *(longlong *)(local_630 + 2) + 1;
|
|
}
|
|
pTVar52 = pTVar51;
|
|
if ((*(longlong *)(puVar37 + 2) != 0) &&
|
|
(*(longlong *)(*(longlong *)(puVar37 + 2) + 8) =
|
|
*(longlong *)(*(longlong *)(puVar37 + 2) + 8) + -1,
|
|
*(longlong *)(*(longlong *)(puVar37 + 2) + 8) == 0)) {
|
|
pTVar52 = *(TypeDescriptor **)(puVar37 + 2);
|
|
}
|
|
*(uint **)(puVar37 + 2) = local_630;
|
|
if (pTVar52 != (TypeDescriptor *)0x0) {
|
|
pvVar8 = pTVar52->pVFTable;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,ppvVar50,local_688,pTVar61);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(pTVar52);
|
|
}
|
|
}
|
|
LAB_14006aa94:
|
|
bVar25 = false;
|
|
bVar23 = false;
|
|
bVar21 = false;
|
|
bVar18 = false;
|
|
bVar16 = false;
|
|
bVar14 = false;
|
|
bVar12 = false;
|
|
pTVar52 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar52 = *(TypeDescriptor **)local_688;
|
|
}
|
|
local_5b0 = (TypeDescriptor *)&pTVar52->spare;
|
|
local_4f8 = pTVar51;
|
|
local_4f0 = (void **)local_5b0;
|
|
if (pTVar52[2].spare != (void *)0x0) {
|
|
local_4f8 = pTVar52[1].spare;
|
|
}
|
|
do {
|
|
pTVar52 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar52 = *(TypeDescriptor **)local_688;
|
|
}
|
|
local_620 = local_4f8;
|
|
if ((local_4f8 == (TypeDescriptor *)0x0) && (local_5b0 == (TypeDescriptor *)&pTVar52->spare)) {
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar51 = *(TypeDescriptor **)local_688;
|
|
}
|
|
puVar37 = local_688;
|
|
FUN_140059c20(param_1,(uint *)pTVar51,(longlong)local_688,pTVar61);
|
|
if (!bVar9) {
|
|
pTVar61 = (TypeDescriptor *)0x0;
|
|
puVar37 = (uint *)0x1;
|
|
pTVar51 = (TypeDescriptor *)(ulonglong)(uint)local_680.spare;
|
|
FUN_140069310(param_1,pTVar51,1,0);
|
|
}
|
|
puVar58 = local_630;
|
|
if (local_630 != (uint *)0x0) {
|
|
puVar1 = local_630 + 2;
|
|
*(longlong *)puVar1 = *(longlong *)puVar1 + -1;
|
|
if (*(longlong *)puVar1 == 0) {
|
|
pvVar8 = *(LPVOID *)local_630;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,pTVar51,puVar37,pTVar61);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(puVar58);
|
|
}
|
|
}
|
|
if ((local_688 != (uint *)0x0) &&
|
|
(*(longlong *)(local_688 + 2) = *(longlong *)(local_688 + 2) + -1,
|
|
*(longlong *)(local_688 + 2) == 0)) {
|
|
pvVar8 = *(LPVOID *)local_688;
|
|
if (pvVar8 != (LPVOID)0x0) {
|
|
FUN_1400519b0((longlong)pvVar8,pTVar51,puVar37,pTVar61);
|
|
FUN_14003e8b0(pvVar8);
|
|
}
|
|
FUN_14003e8b0(local_688);
|
|
}
|
|
uVar36 = FUN_140049e40(local_648);
|
|
return CONCAT71((int7)((ulonglong)uVar36 >> 8),1);
|
|
}
|
|
if (local_4f8 == (TypeDescriptor *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400050d0(0x80004005);
|
|
}
|
|
pppuVar53 = local_4f8[1].pVFTable;
|
|
pTVar52 = local_5b0;
|
|
puVar37 = local_688;
|
|
local_660 = pppuVar53;
|
|
if (pppuVar53 != (undefined ***)(param_1 + 0xb8)) {
|
|
local_190 = local_68c;
|
|
local_18c = (*(code *)**pppuVar53)(pppuVar53);
|
|
local_188 = local_670;
|
|
pTVar44 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar44 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pTVar61 = (TypeDescriptor *)0x1;
|
|
puVar37 = &local_190;
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)*(uint *)&pTVar44[0xe].pVFTable;
|
|
local_180 = piVar63;
|
|
FUN_14004c860((longlong)&pTVar44[0xc].spare,*(uint *)&pTVar44[0xe].pVFTable,(longlong)puVar37,
|
|
1);
|
|
bVar9 = true;
|
|
}
|
|
if ((local_658 != (undefined ***)(param_1 + 0xb8)) && (local_658 != pppuVar53)) {
|
|
local_1a8 = (*(code *)**pppuVar53)(pppuVar53);
|
|
local_1a4 = local_68c;
|
|
local_1a0 = local_670;
|
|
pTVar44 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar44 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pTVar61 = (TypeDescriptor *)0x1;
|
|
puVar37 = &local_1a8;
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)*(uint *)&pTVar44[0xe].pVFTable;
|
|
local_198 = piVar63;
|
|
FUN_14004c860((longlong)&pTVar44[0xc].spare,*(uint *)&pTVar44[0xe].pVFTable,(longlong)puVar37,
|
|
1);
|
|
bVar9 = true;
|
|
}
|
|
bVar11 = false;
|
|
local_680.pVFTable = (TypeDescriptor *)0x0;
|
|
pppuVar45 = pppuVar53;
|
|
iVar31 = (*(code *)**pppuVar53)();
|
|
pTVar44 = pTVar51;
|
|
bVar10 = false;
|
|
if ((iVar31 != 1) &&
|
|
(pppuVar45 = local_658, iVar31 = (*(code *)**local_658)(), pppuVar28 = local_658, iVar31 != 1
|
|
)) {
|
|
pppuVar62 = local_658 + -8;
|
|
pppuVar55 = (undefined ***)(local_668 + 0x2d8);
|
|
pTVar61 = (TypeDescriptor *)(ulonglong)*(uint *)(local_658 + 0xd7);
|
|
puVar37 = (uint *)(ulonglong)*(uint *)(pppuVar53 + 0xd7);
|
|
pppuVar45 = pppuVar55;
|
|
local_650 = pppuVar53 + -8;
|
|
local_608 = pppuVar62;
|
|
plVar38 = FUN_14005d550((longlong)pppuVar55,(longlong *)&local_5e0,*(uint *)(pppuVar53 + 0xd7)
|
|
,*(uint *)(local_658 + 0xd7));
|
|
pTVar52 = (TypeDescriptor *)0x0;
|
|
if (*plVar38 != 0) {
|
|
pTVar52 = (TypeDescriptor *)(*(longlong *)(*plVar38 + 8) + 1);
|
|
pppuVar45 = (undefined ***)*plVar38;
|
|
pppuVar45[1] = (undefined **)pTVar52;
|
|
pTVar44 = (TypeDescriptor *)*plVar38;
|
|
local_680.pVFTable = pTVar44;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
}
|
|
if (local_5e0 != (undefined ***)0x0) {
|
|
local_5e0[1] = (undefined **)((longlong)local_5e0[1] + -1);
|
|
pppuVar45 = (undefined ***)local_5e0[1];
|
|
pTVar44 = local_680.pVFTable;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (pppuVar45 == (undefined ***)0x0) {
|
|
pppuVar45 = local_5e0;
|
|
FUN_14004e450(local_5e0);
|
|
pTVar44 = local_680.pVFTable;
|
|
}
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
uVar43 = (ulonglong)*(uint *)(pppuVar28 + 0xd7);
|
|
SVar57 = (SIZE_T)*(uint *)(pppuVar53 + 0xd7);
|
|
plVar38 = FUN_140062690((longlong)pppuVar55,(longlong *)&local_5d8,
|
|
*(uint *)(pppuVar53 + 0xd7),*(uint *)(pppuVar28 + 0xd7),'\x01');
|
|
pTVar61 = (TypeDescriptor *)*plVar38;
|
|
if (pTVar61 != pTVar44) {
|
|
if (pTVar61 != (TypeDescriptor *)0x0) {
|
|
*(longlong *)(*plVar38 + 8) = (longlong)pTVar61->spare + 1;
|
|
pTVar44 = local_680.pVFTable;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
}
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
ppvVar50 = &pTVar44->spare;
|
|
*ppvVar50 = (void *)((longlong)*ppvVar50 + -1);
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (*ppvVar50 == (void *)0x0) {
|
|
pTVar61 = local_680.pVFTable;
|
|
}
|
|
}
|
|
pTVar44 = (TypeDescriptor *)*plVar38;
|
|
local_680.pVFTable = pTVar44;
|
|
if (pTVar61 != (TypeDescriptor *)0x0) {
|
|
FUN_14004e450(&pTVar61->pVFTable);
|
|
}
|
|
}
|
|
if ((local_5d8 != (undefined8 *)0x0) &&
|
|
(local_5d8[1] = local_5d8[1] + -1, pTVar44 = local_680.pVFTable, bVar12 = bVar13,
|
|
bVar14 = bVar15, bVar16 = bVar17, bVar18 = bVar19, bVar21 = bVar20, bVar23 = bVar22,
|
|
bVar25 = bVar24, local_5d8[1] == 0)) {
|
|
FUN_14004e450(local_5d8);
|
|
pTVar44 = local_680.pVFTable;
|
|
}
|
|
if (((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) ||
|
|
(DAT_14016f0e0 < (double)piVar63 - *(double *)((longlong)pTVar44->pVFTable + 400))) {
|
|
puVar39 = operator_new(0x1b0);
|
|
if (puVar39 == (undefined8 *)0x0) {
|
|
LAB_14006af3c:
|
|
local_610 = (TypeDescriptor *)0x0;
|
|
}
|
|
else {
|
|
SVar57 = CONCAT71((int7)(SVar57 >> 8),
|
|
*(int *)(pppuVar53 + 0xd7) == *(int *)(pppuVar28 + 0xd7));
|
|
puVar39 = FUN_14004d350(puVar39,local_668,
|
|
*(int *)(pppuVar53 + 0xd7) == *(int *)(pppuVar28 + 0xd7));
|
|
if (puVar39 == (undefined8 *)0x0) goto LAB_14006af3c;
|
|
local_610 = (TypeDescriptor *)FUN_14003e840(0x10);
|
|
local_610->spare = (void *)0x1;
|
|
local_610->pVFTable = puVar39;
|
|
}
|
|
pTVar61 = local_610;
|
|
if (local_610 != pTVar44) {
|
|
if (local_610 != (TypeDescriptor *)0x0) {
|
|
local_610->spare = (void *)((longlong)local_610->spare + 1);
|
|
pTVar44 = local_680.pVFTable;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
}
|
|
pTVar52 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
ppvVar50 = &pTVar44->spare;
|
|
*ppvVar50 = (void *)((longlong)*ppvVar50 + -1);
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (*ppvVar50 == (void *)0x0) {
|
|
pTVar52 = local_680.pVFTable;
|
|
}
|
|
}
|
|
pTVar44 = pTVar61;
|
|
local_680.pVFTable = local_610;
|
|
if (pTVar52 != (TypeDescriptor *)0x0) {
|
|
FUN_14004e450(&pTVar52->pVFTable);
|
|
}
|
|
}
|
|
if (pTVar61 != (TypeDescriptor *)0x0) {
|
|
ppvVar50 = &pTVar61->spare;
|
|
*ppvVar50 = (void *)((longlong)*ppvVar50 + -1);
|
|
pTVar44 = local_680.pVFTable;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (*ppvVar50 == (void *)0x0) {
|
|
FUN_14004e450(&local_610->pVFTable);
|
|
pTVar44 = local_680.pVFTable;
|
|
}
|
|
}
|
|
lVar47 = local_668;
|
|
uVar27 = DAT_14016f3d4;
|
|
uVar26 = DAT_14016f3d0;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
if (*(char *)&pTVar61->spare != '\x01') {
|
|
*(undefined4 *)&pTVar61[1].pVFTable = 0;
|
|
*(undefined4 *)&pTVar61[2].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[2].pVFTable + 4) = uVar27;
|
|
*(undefined4 *)&pTVar61[3].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[3].pVFTable + 4) = uVar27;
|
|
*(undefined1 *)&pTVar61[3].spare = 0;
|
|
uVar27 = DAT_14016f3d4;
|
|
uVar26 = DAT_14016f3d0;
|
|
local_350 = Proud::AddrPort::vftable;
|
|
local_340 = Proud::AddrPort::vftable;
|
|
local_358 = 0;
|
|
local_330 = 0;
|
|
local_348 = DAT_14016f3d0;
|
|
local_344 = DAT_14016f3d4;
|
|
local_338 = DAT_14016f3d0;
|
|
local_334 = DAT_14016f3d4;
|
|
*(undefined4 *)&pTVar61[4].pVFTable = 0;
|
|
*(undefined4 *)&pTVar61[5].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[5].pVFTable + 4) = uVar27;
|
|
*(undefined4 *)&pTVar61[6].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[6].pVFTable + 4) = uVar27;
|
|
*(undefined1 *)&pTVar61[6].spare = 0;
|
|
*(undefined1 *)&pTVar61->spare = 1;
|
|
}
|
|
if (*(char *)(local_668 + 0x24d) == '\0') {
|
|
local_4a8 = 0;
|
|
local_4a0 = 0;
|
|
local_498 = 0;
|
|
local_490 = 0;
|
|
local_4b0 = Proud::ByteArray::vftable;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
FUN_14004ed10((longlong)(pTVar61 + 0x12),(longlong)&local_4b0,SVar57);
|
|
FUN_140049e40(&local_4b0);
|
|
local_480 = 0;
|
|
local_478 = 0;
|
|
local_470 = 0;
|
|
local_468 = 0;
|
|
local_488 = Proud::ByteArray::vftable;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
FUN_14004ed10((longlong)&pTVar61[0x14].spare,(longlong)&local_488,SVar57);
|
|
FUN_140049e40(&local_488);
|
|
}
|
|
else {
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
FUN_140095cc0((longlong)(pTVar61 + 0x12),*(int *)(local_668 + 0x244),SVar57,uVar43);
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
FUN_140095cc0((longlong)&pTVar61[0x14].spare,*(int *)(lVar47 + 0x248),SVar57,uVar43);
|
|
}
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
iVar31 = FUN_140097a10(lVar47 + 0xcd0);
|
|
*(int *)&pTVar61[0x17].pVFTable = iVar31;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
puVar40 = FUN_1400487e0(lVar47 + 0xcd0,local_178);
|
|
*(undefined4 *)((longlong)&pTVar61[0x17].pVFTable + 4) = *puVar40;
|
|
*(undefined4 *)&pTVar61[0x17].spare = puVar40[1];
|
|
*(undefined4 *)((longlong)&pTVar61[0x17].spare + 4) = puVar40[2];
|
|
*(undefined4 *)&pTVar61[0x18].pVFTable = puVar40[3];
|
|
bVar10 = false;
|
|
pppuVar55 = local_660;
|
|
}
|
|
else {
|
|
bVar10 = true;
|
|
bVar11 = true;
|
|
pppuVar55 = pppuVar53;
|
|
}
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
*(undefined4 *)((longlong)&pTVar61[0x11].pVFTable + 4) = 1;
|
|
local_640 = (TypeDescriptor *)0x0;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar44->spare = (void *)((longlong)pTVar44->spare + 1);
|
|
local_640 = local_680.pVFTable;
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
}
|
|
pTVar44 = local_640;
|
|
FUN_140063fe0((char *)(local_668 + 0x2d8),(longlong)(pppuVar53 + -8),(longlong)pppuVar62,
|
|
(longlong *)&local_640);
|
|
uVar27 = DAT_14016f3d4;
|
|
uVar26 = DAT_14016f3d0;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
uVar4 = *(undefined4 *)(pppuVar28 + 0xd7);
|
|
uVar5 = *(undefined4 *)(pppuVar53 + 0xd7);
|
|
local_380 = Proud::AddrPort::vftable;
|
|
local_370 = Proud::AddrPort::vftable;
|
|
local_388 = 0;
|
|
local_360 = 0;
|
|
local_378 = DAT_14016f3d0;
|
|
local_374 = DAT_14016f3d4;
|
|
local_368 = DAT_14016f3d0;
|
|
local_364 = DAT_14016f3d4;
|
|
*(undefined4 *)&pTVar61[2].pVFTable = DAT_14016f3d0;
|
|
*(undefined2 *)((longlong)&pTVar61[2].pVFTable + 4) = uVar27;
|
|
*(undefined4 *)&pTVar61[3].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[3].pVFTable + 4) = uVar27;
|
|
*(undefined1 *)&pTVar61[3].spare = 0;
|
|
*(undefined1 *)&pTVar61[3].spare = 0;
|
|
*(undefined4 *)&pTVar61[1].pVFTable = uVar5;
|
|
uVar27 = DAT_14016f3d4;
|
|
uVar26 = DAT_14016f3d0;
|
|
local_3b0 = Proud::AddrPort::vftable;
|
|
local_3a0 = Proud::AddrPort::vftable;
|
|
local_3b8 = 0;
|
|
local_390 = 0;
|
|
local_3a8 = DAT_14016f3d0;
|
|
local_3a4 = DAT_14016f3d4;
|
|
local_398 = DAT_14016f3d0;
|
|
local_394 = DAT_14016f3d4;
|
|
*(undefined4 *)&pTVar61[5].pVFTable = DAT_14016f3d0;
|
|
*(undefined2 *)((longlong)&pTVar61[5].pVFTable + 4) = uVar27;
|
|
*(undefined4 *)&pTVar61[6].pVFTable = uVar26;
|
|
*(undefined2 *)((longlong)&pTVar61[6].pVFTable + 4) = uVar27;
|
|
*(undefined1 *)&pTVar61[6].spare = 0;
|
|
*(undefined1 *)&pTVar61[6].spare = 0;
|
|
*(undefined4 *)&pTVar61[4].pVFTable = uVar4;
|
|
*(undefined1 *)&pTVar61[0x1a].pVFTable = 1;
|
|
pTVar61 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar61 = pTVar44->pVFTable;
|
|
}
|
|
uVar43 = ((ulonglong)pTVar61 & 0xffffffff) % (ulonglong)*(uint *)(pppuVar53 + 0xd1);
|
|
if (pppuVar53[0xcd] != (undefined **)0x0) {
|
|
for (puVar39 = (undefined8 *)pppuVar53[0xcd][uVar43];
|
|
(puVar39 != (undefined8 *)0x0 &&
|
|
((uint)uVar43 == *(uint *)(puVar39 + 4) % *(uint *)(pppuVar53 + 0xd1)));
|
|
puVar39 = (undefined8 *)puVar39[2]) {
|
|
pTVar61 = pTVar51;
|
|
if ((undefined8 *)*puVar39 != (undefined8 *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)*puVar39;
|
|
}
|
|
pTVar52 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar52 = pTVar44->pVFTable;
|
|
}
|
|
if (pTVar61 == pTVar52) goto LAB_14006b492;
|
|
}
|
|
}
|
|
plVar38 = FUN_1400628c0((char *)(pppuVar53 + 0xcc),(longlong *)&local_680);
|
|
*(undefined1 *)plVar38 = 0;
|
|
LAB_14006b492:
|
|
pTVar52 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar52 = pTVar44->pVFTable;
|
|
}
|
|
pTVar61 = (TypeDescriptor *)(ulonglong)*(uint *)(pppuVar28 + 0xd1);
|
|
puVar37 = (uint *)(((ulonglong)pTVar52 & 0xffffffff) % (ulonglong)pTVar61);
|
|
if (pppuVar28[0xcd] != (undefined **)0x0) {
|
|
for (pppuVar45 = (undefined ***)pppuVar28[0xcd][(longlong)puVar37];
|
|
(pppuVar45 != (undefined ***)0x0 &&
|
|
((uint)puVar37 == *(uint *)(pppuVar45 + 4) % *(uint *)(pppuVar28 + 0xd1)));
|
|
pppuVar45 = (undefined ***)pppuVar45[2]) {
|
|
pTVar52 = pTVar51;
|
|
if (*pppuVar45 != (undefined **)0x0) {
|
|
pTVar52 = (TypeDescriptor *)**pppuVar45;
|
|
}
|
|
pTVar41 = pTVar51;
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
pTVar41 = pTVar44->pVFTable;
|
|
}
|
|
if (pTVar52 == pTVar41) goto LAB_14006b512;
|
|
}
|
|
}
|
|
pTVar52 = &local_680;
|
|
pppuVar45 = pppuVar28 + 0xcc;
|
|
plVar38 = FUN_1400628c0((char *)pppuVar45,(longlong *)pTVar52);
|
|
*(undefined1 *)plVar38 = 0;
|
|
LAB_14006b512:
|
|
param_1 = local_668;
|
|
pppuVar53 = pppuVar55;
|
|
if (*(longlong *)(local_668 + 0x17f0) != 0) {
|
|
FUN_14003e7c0(pppuVar45,pTVar52,puVar37,pTVar61);
|
|
local_5f8 = (uint *)PTR_DAT_14016f010;
|
|
uVar33 = (*(code *)**local_658)();
|
|
uVar32 = (*(code *)**pppuVar55)(pppuVar55);
|
|
pTVar61 = (TypeDescriptor *)(ulonglong)uVar33;
|
|
FUN_140029b80((longlong *)&local_5f8,L"%d와 %d간의 P2P 쌍 준비",(ulonglong)uVar32,
|
|
pTVar61);
|
|
puVar58 = local_5f8;
|
|
puVar37 = local_5f8;
|
|
if (local_5f8 == (uint *)0x0) {
|
|
puVar37 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
pTVar52 = (TypeDescriptor *)0x1;
|
|
pppuVar45 = *(undefined ****)(param_1 + 0x17f0);
|
|
FUN_1400843d0((longlong)pppuVar45,1,(short *)puVar37,pTVar61);
|
|
if (((puVar58 != (uint *)0x0) && (puVar58 != (uint *)PTR_DAT_14016f010)) &&
|
|
(puVar58 + -2 != (uint *)0x0)) {
|
|
pppuVar45 = (undefined ***)FUN_14003e7c0(pppuVar45,pTVar52,puVar37,pTVar61);
|
|
local_3e8 = pppuVar45;
|
|
FUN_14003d040((int *)pppuVar45);
|
|
local_3e0 = 1;
|
|
puVar1 = puVar58 + -1;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_14003e8b0(puVar58 + -2);
|
|
}
|
|
FUN_14003d0d0((longlong)pppuVar45);
|
|
local_3e0 = 0;
|
|
pppuVar53 = local_660;
|
|
}
|
|
local_5f8 = (uint *)PTR_DAT_14016f010;
|
|
bVar10 = bVar11;
|
|
}
|
|
}
|
|
else {
|
|
piVar3 = (int *)((longlong)pTVar44->pVFTable + 0x114);
|
|
*piVar3 = *piVar3 + 1;
|
|
param_1 = local_668;
|
|
bVar10 = bVar11;
|
|
}
|
|
}
|
|
if (pppuVar53 != (undefined ***)(param_1 + 0xb8)) {
|
|
if (((bVar10) && (pTVar44 != (TypeDescriptor *)0x0)) && (pTVar44->pVFTable != (void *)0x0)) {
|
|
pvVar6 = pTVar44->pVFTable;
|
|
uVar33 = (*(code *)**pppuVar53)(pppuVar53);
|
|
puVar37 = (uint *)(ulonglong)uVar33;
|
|
FUN_14004a3c0((longlong)pvVar6,local_318,uVar33);
|
|
}
|
|
if (*(char *)(param_1 + 0x24d) == '\0') {
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_1c8 = 0;
|
|
local_1c4 = 0;
|
|
local_1c0 = 0;
|
|
local_1bc = 0;
|
|
local_650 = (undefined ***)&local_1c8;
|
|
}
|
|
else {
|
|
local_650 = (undefined ***)((longlong)pTVar44->pVFTable + 0x174);
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_618 = 0;
|
|
}
|
|
else {
|
|
local_618 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170);
|
|
}
|
|
pTVar61 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pppuVar45 = (undefined ***)(param_1 + 0x4a8);
|
|
ppuVar7 = *pppuVar45;
|
|
uVar33 = (*(code *)**local_660)();
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)uVar33;
|
|
puVar37 = (uint *)&DAT_140177f90;
|
|
(*(code *)ppuVar7[8])();
|
|
pppuVar53 = local_660;
|
|
param_1 = local_668;
|
|
}
|
|
else {
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_1d8 = 0;
|
|
local_1d4 = 0;
|
|
local_1d0 = 0;
|
|
local_1cc = 0;
|
|
local_5c0 = &local_1d8;
|
|
}
|
|
else {
|
|
local_5c0 = (undefined4 *)((longlong)pTVar44->pVFTable + 0x174);
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_638 = 0;
|
|
}
|
|
else {
|
|
local_638 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170);
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) ||
|
|
(pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) {
|
|
local_408 = 0;
|
|
local_400 = 0;
|
|
local_3f8 = 0;
|
|
local_3f0 = 0;
|
|
local_410 = Proud::ByteArray::vftable;
|
|
local_608 = &local_410;
|
|
bVar18 = true;
|
|
}
|
|
else {
|
|
local_530 = Proud::CFastArray<unsigned_char,1>::vftable;
|
|
puVar58 = puVar37;
|
|
if (DAT_14016f8a0 != 5) {
|
|
FUN_140049d30();
|
|
puVar58 = puVar37;
|
|
}
|
|
local_528 = *(undefined8 *)((longlong)pvVar6 + 0x150);
|
|
local_50c = *(undefined4 *)((longlong)pvVar6 + 0x16c);
|
|
local_520 = (TypeDescriptor *)0x0;
|
|
local_518 = 0;
|
|
local_510 = 0;
|
|
iVar31 = *(int *)((longlong)pvVar6 + 0x160);
|
|
puVar37 = (uint *)(longlong)iVar31;
|
|
if (iVar31 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
FUN_14002a050((longlong)&local_530,iVar31,(SIZE_T)puVar58);
|
|
pTVar61 = pTVar51;
|
|
if (*(int *)((longlong)pvVar6 + 0x160) != 0) {
|
|
pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x158);
|
|
}
|
|
pTVar52 = local_520;
|
|
if ((int)local_518 == 0) {
|
|
pTVar52 = pTVar51;
|
|
}
|
|
FUN_140006fb0(&pTVar52->pVFTable,&pTVar61->pVFTable,(size_t)puVar37);
|
|
local_530 = Proud::ByteArray::vftable;
|
|
local_608 = &local_530;
|
|
bVar12 = true;
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) ||
|
|
(pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) {
|
|
local_458 = 0;
|
|
local_450 = 0;
|
|
local_448 = 0;
|
|
local_440 = 0;
|
|
local_460 = Proud::ByteArray::vftable;
|
|
local_650 = &local_460;
|
|
bVar14 = true;
|
|
}
|
|
else {
|
|
local_580 = Proud::CFastArray<unsigned_char,1>::vftable;
|
|
if (DAT_14016f8a0 != 5) {
|
|
FUN_140049d30();
|
|
}
|
|
local_578 = *(undefined8 *)((longlong)pvVar6 + 0x128);
|
|
local_55c = *(undefined4 *)((longlong)pvVar6 + 0x144);
|
|
local_570 = (TypeDescriptor *)0x0;
|
|
local_568 = 0;
|
|
local_560 = 0;
|
|
iVar31 = *(int *)((longlong)pvVar6 + 0x138);
|
|
if (iVar31 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
FUN_14002a050((longlong)&local_580,iVar31,(SIZE_T)puVar37);
|
|
pTVar61 = pTVar51;
|
|
if (*(int *)((longlong)pvVar6 + 0x138) != 0) {
|
|
pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x130);
|
|
}
|
|
pTVar52 = local_570;
|
|
if ((int)local_568 == 0) {
|
|
pTVar52 = pTVar51;
|
|
}
|
|
FUN_140006fb0(&pTVar52->pVFTable,&pTVar61->pVFTable,(longlong)iVar31);
|
|
local_580 = Proud::ByteArray::vftable;
|
|
local_650 = &local_580;
|
|
bVar16 = true;
|
|
}
|
|
pTVar61 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pppuVar45 = (undefined ***)(param_1 + 0x4a8);
|
|
ppuVar7 = *pppuVar45;
|
|
uVar33 = (*(code *)**local_660)();
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)uVar33;
|
|
puVar37 = (uint *)&DAT_140178050;
|
|
(*(code *)ppuVar7[6])();
|
|
if (bVar14) {
|
|
bVar14 = false;
|
|
pppuVar45 = &local_460;
|
|
FUN_140049e40(pppuVar45);
|
|
}
|
|
if (bVar16) {
|
|
bVar16 = false;
|
|
pppuVar45 = &local_580;
|
|
FUN_140049e40(pppuVar45);
|
|
}
|
|
if (bVar18) {
|
|
bVar18 = false;
|
|
pppuVar45 = &local_410;
|
|
FUN_140049e40(pppuVar45);
|
|
}
|
|
pppuVar53 = local_660;
|
|
param_1 = local_668;
|
|
bVar13 = bVar12;
|
|
bVar15 = bVar14;
|
|
bVar17 = bVar16;
|
|
bVar19 = bVar18;
|
|
bVar20 = bVar21;
|
|
bVar22 = bVar23;
|
|
bVar24 = bVar25;
|
|
if (bVar12) {
|
|
bVar12 = false;
|
|
pppuVar45 = &local_530;
|
|
FUN_140049e40(pppuVar45);
|
|
pppuVar53 = local_660;
|
|
param_1 = local_668;
|
|
bVar13 = bVar12;
|
|
}
|
|
}
|
|
}
|
|
if ((pppuVar53 != local_658) && (puVar37 = (uint *)(ulonglong)local_68c, local_68c != 1)) {
|
|
if ((bVar11) && ((pTVar44 != (TypeDescriptor *)0x0 && (pTVar44->pVFTable != (void *)0x0)))) {
|
|
FUN_14004a3c0((longlong)pTVar44->pVFTable,local_308,local_68c);
|
|
}
|
|
if (*(char *)(param_1 + 0x24d) == '\0') {
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_1e8 = 0;
|
|
local_1e4 = 0;
|
|
local_1e0 = 0;
|
|
local_1dc = 0;
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_628 = 0;
|
|
}
|
|
else {
|
|
local_628 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170);
|
|
}
|
|
local_5e8 = (*(code *)**pppuVar53)(pppuVar53);
|
|
pTVar61 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pppuVar45 = (undefined ***)(param_1 + 0x4a8);
|
|
puVar37 = (uint *)&DAT_140177f90;
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)local_68c;
|
|
(*(code *)(*pppuVar45)[8])();
|
|
}
|
|
else {
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_1b8 = 0;
|
|
local_1b4 = 0;
|
|
local_1b0 = 0;
|
|
local_1ac = 0;
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) || (pTVar44->pVFTable == (void *)0x0)) {
|
|
local_614 = 0;
|
|
}
|
|
else {
|
|
local_614 = *(undefined4 *)((longlong)pTVar44->pVFTable + 0x170);
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) ||
|
|
(pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) {
|
|
local_4d0 = 0;
|
|
local_4c8 = 0;
|
|
local_4c0 = 0;
|
|
local_4b8 = 0;
|
|
local_4d8 = Proud::ByteArray::vftable;
|
|
bVar22 = true;
|
|
bVar24 = bVar25;
|
|
}
|
|
else {
|
|
local_558 = Proud::CFastArray<unsigned_char,1>::vftable;
|
|
puVar58 = puVar37;
|
|
if (DAT_14016f8a0 != 5) {
|
|
FUN_140049d30();
|
|
puVar58 = puVar37;
|
|
}
|
|
local_550 = *(undefined8 *)((longlong)pvVar6 + 0x150);
|
|
local_534 = *(undefined4 *)((longlong)pvVar6 + 0x16c);
|
|
local_548 = (TypeDescriptor *)0x0;
|
|
local_540 = 0;
|
|
local_538 = 0;
|
|
iVar31 = *(int *)((longlong)pvVar6 + 0x160);
|
|
puVar37 = (uint *)(longlong)iVar31;
|
|
if (iVar31 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
FUN_14002a050((longlong)&local_558,iVar31,(SIZE_T)puVar58);
|
|
pTVar61 = pTVar51;
|
|
if (*(int *)((longlong)pvVar6 + 0x160) != 0) {
|
|
pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x158);
|
|
}
|
|
pTVar52 = local_548;
|
|
if ((int)local_540 == 0) {
|
|
pTVar52 = pTVar51;
|
|
}
|
|
FUN_140006fb0(&pTVar52->pVFTable,&pTVar61->pVFTable,(size_t)puVar37);
|
|
local_558 = Proud::ByteArray::vftable;
|
|
bVar22 = bVar23;
|
|
bVar24 = true;
|
|
}
|
|
if ((pTVar44 == (TypeDescriptor *)0x0) ||
|
|
(pvVar6 = pTVar44->pVFTable, pvVar6 == (void *)0x0)) {
|
|
local_430 = 0;
|
|
local_428 = 0;
|
|
local_420 = 0;
|
|
local_418 = 0;
|
|
local_438 = Proud::ByteArray::vftable;
|
|
bVar20 = bVar21;
|
|
}
|
|
else {
|
|
local_5a8 = Proud::CFastArray<unsigned_char,1>::vftable;
|
|
if (DAT_14016f8a0 != 5) {
|
|
FUN_140049d30();
|
|
}
|
|
local_5a0 = *(undefined8 *)((longlong)pvVar6 + 0x128);
|
|
local_584 = *(undefined4 *)((longlong)pvVar6 + 0x144);
|
|
local_598 = (TypeDescriptor *)0x0;
|
|
local_590 = 0;
|
|
local_588 = 0;
|
|
iVar31 = *(int *)((longlong)pvVar6 + 0x138);
|
|
if (iVar31 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
FUN_14002a050((longlong)&local_5a8,iVar31,(SIZE_T)puVar37);
|
|
pTVar61 = pTVar51;
|
|
if (*(int *)((longlong)pvVar6 + 0x138) != 0) {
|
|
pTVar61 = *(TypeDescriptor **)((longlong)pvVar6 + 0x130);
|
|
}
|
|
pTVar52 = local_598;
|
|
if ((int)local_590 == 0) {
|
|
pTVar52 = pTVar51;
|
|
}
|
|
FUN_140006fb0(&pTVar52->pVFTable,&pTVar61->pVFTable,(longlong)iVar31);
|
|
local_5a8 = Proud::ByteArray::vftable;
|
|
bVar20 = true;
|
|
}
|
|
local_5d0 = (*(code *)**local_660)();
|
|
pTVar61 = pTVar51;
|
|
if (local_688 != (uint *)0x0) {
|
|
pTVar61 = *(TypeDescriptor **)local_688;
|
|
}
|
|
pppuVar45 = (undefined ***)(local_668 + 0x4a8);
|
|
puVar37 = (uint *)&DAT_140178050;
|
|
pTVar52 = (TypeDescriptor *)(ulonglong)local_68c;
|
|
(*(code *)(*pppuVar45)[6])();
|
|
if (bVar20) {
|
|
bVar20 = false;
|
|
pppuVar45 = &local_5a8;
|
|
FUN_140049e40(pppuVar45);
|
|
}
|
|
if (bVar22) {
|
|
bVar22 = false;
|
|
pppuVar45 = &local_4d8;
|
|
FUN_140049e40(pppuVar45);
|
|
}
|
|
param_1 = local_668;
|
|
bVar13 = bVar12;
|
|
bVar15 = bVar14;
|
|
bVar17 = bVar16;
|
|
bVar19 = bVar18;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (bVar24) {
|
|
bVar24 = false;
|
|
pppuVar45 = &local_558;
|
|
FUN_140049e40(pppuVar45);
|
|
param_1 = local_668;
|
|
bVar25 = bVar24;
|
|
}
|
|
}
|
|
}
|
|
if (((*(longlong *)(param_1 + 0x17f0) != 0) && (pTVar44 != (TypeDescriptor *)0x0)) &&
|
|
(pTVar44->pVFTable != (void *)0x0)) {
|
|
FUN_14003e7c0(pppuVar45,pTVar52,puVar37,pTVar61);
|
|
local_5f0 = (short *)PTR_DAT_14016f010;
|
|
plVar38 = FUN_140045ec0((ulong *)((longlong)pTVar44->pVFTable + 0x174),(longlong *)&local_5c8,
|
|
puVar37,pTVar61);
|
|
puVar59 = (undefined *)*plVar38;
|
|
if ((undefined *)*plVar38 == (undefined *)0x0) {
|
|
puVar59 = PTR_DAT_14016f010;
|
|
}
|
|
ppsVar46 = &local_5f0;
|
|
FUN_140029b80((longlong *)ppsVar46,L"서버에서 발급한 magic number=%s\n",puVar59,pTVar61
|
|
);
|
|
puVar30 = local_5c8;
|
|
if (((local_5c8 != (undefined *)0x0) && (local_5c8 != PTR_DAT_14016f010)) &&
|
|
(puVar2 = local_5c8 + -8, puVar2 != (undefined *)0x0)) {
|
|
piVar42 = (int *)FUN_14003e7c0(ppsVar46,PTR_DAT_14016f010,puVar59,pTVar61);
|
|
local_3d8 = piVar42;
|
|
FUN_14003d040(piVar42);
|
|
local_3d0 = 1;
|
|
piVar3 = (int *)(puVar30 + -4);
|
|
*piVar3 = *piVar3 + -1;
|
|
if (*piVar3 == 0) {
|
|
FUN_14003e8b0(puVar2);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar42);
|
|
local_3d0 = 0;
|
|
}
|
|
psVar29 = local_5f0;
|
|
psVar60 = local_5f0;
|
|
if (local_5f0 == (short *)0x0) {
|
|
psVar60 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
uVar36 = 1;
|
|
lVar47 = *(longlong *)(param_1 + 0x17f0);
|
|
local_5c8 = PTR_DAT_14016f010;
|
|
FUN_1400843d0(lVar47,1,psVar60,pTVar61);
|
|
if (((psVar29 != (short *)0x0) && (psVar29 != (short *)PTR_DAT_14016f010)) &&
|
|
(psVar29 + -4 != (short *)0x0)) {
|
|
piVar42 = (int *)FUN_14003e7c0(lVar47,uVar36,psVar60,pTVar61);
|
|
local_508 = piVar42;
|
|
FUN_14003d040(piVar42);
|
|
local_500 = 1;
|
|
piVar3 = (int *)(psVar29 + -2);
|
|
*piVar3 = *piVar3 + -1;
|
|
if (*piVar3 == 0) {
|
|
FUN_14003e8b0(psVar29 + -4);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar42);
|
|
local_500 = 0;
|
|
}
|
|
local_5f0 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
if (pTVar44 != (TypeDescriptor *)0x0) {
|
|
ppvVar50 = &pTVar44->spare;
|
|
*ppvVar50 = (void *)((longlong)*ppvVar50 + -1);
|
|
bVar12 = bVar13;
|
|
bVar14 = bVar15;
|
|
bVar16 = bVar17;
|
|
bVar18 = bVar19;
|
|
bVar21 = bVar20;
|
|
bVar23 = bVar22;
|
|
bVar25 = bVar24;
|
|
if (*ppvVar50 == (void *)0x0) {
|
|
FUN_14004e450(local_680.pVFTable);
|
|
}
|
|
}
|
|
local_4f8 = pTVar51;
|
|
if (local_620 != (TypeDescriptor *)0x0) {
|
|
local_4f8 = local_620[1].spare;
|
|
}
|
|
} while( true );
|
|
}
|
|
|