/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14002b820 FUN_14002b820 * Pseudocode, not original source. */ void FUN_14002b820(longlong param_1) { char cVar1; int iVar2; ulonglong uVar3; longlong lVar4; longlong lVar5; longlong lVar6; longlong *plVar7; char *pcVar8; longlong *plVar9; char *pcVar10; char *pcVar11; bool bVar12; undefined **local_98 [5]; longlong *local_70; undefined8 *local_60; void *local_58; undefined8 *local_38; void *local_30; undefined8 local_18; local_18 = 0xfffffffffffffffe; pcVar8 = (char *)(param_1 + 0x18); if (0xf < *(ulonglong *)(param_1 + 0x30)) { pcVar8 = *(char **)pcVar8; } FUN_140012380(local_98,pcVar8); DAT_14015ad18 = 0; uVar3 = FUN_140012450((longlong *)local_98,(char *)(local_60 + 2)); if ((char)uVar3 == '\0') { local_98[0] = TiXmlDocument::vftable; if (local_38 != &DAT_140162cd0) { operator_delete__(local_30); } local_98[0] = TiXmlNode::vftable; while (local_70 != (longlong *)0x0) { plVar9 = (longlong *)local_70[10]; (**(code **)*local_70)(local_70,1); local_70 = plVar9; } if (local_60 != &DAT_140162cd0) { operator_delete__(local_58); return; } return; } plVar9 = local_70; if (local_70 != (longlong *)0x0) { do { bVar12 = (char *)(plVar9[7] + 0x10) == (char *)0x0; lVar4 = 4; pcVar8 = (char *)(plVar9[7] + 0x10); pcVar10 = "log"; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; bVar12 = *pcVar8 == *pcVar10; pcVar8 = pcVar8 + 1; pcVar10 = pcVar10 + 1; } while (bVar12); if (bVar12) goto LAB_14002b936; plVar9 = (longlong *)plVar9[10]; plVar7 = local_70; } while (plVar9 != (longlong *)0x0); goto joined_r0x00014002bbf3; } goto LAB_14002bffb; LAB_14002b936: while (lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9), lVar4 == 0) { do { plVar9 = (longlong *)plVar9[10]; plVar7 = local_70; if (plVar9 == (longlong *)0x0) goto joined_r0x00014002bbf3; bVar12 = (char *)(plVar9[7] + 0x10) == (char *)0x0; lVar4 = 4; pcVar8 = (char *)(plVar9[7] + 0x10); pcVar10 = "log"; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; bVar12 = *pcVar8 == *pcVar10; pcVar8 = pcVar8 + 1; pcVar10 = pcVar10 + 1; } while (bVar12); } while (!bVar12); } lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); plVar7 = local_70; if (lVar4 != 0) { for (plVar9 = *(longlong **)(lVar4 + 0x28); plVar7 = local_70, plVar9 != (longlong *)0x0; plVar9 = (longlong *)plVar9[10]) { lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); if (lVar4 != 0) { lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); goto joined_r0x00014002b9bb; } } } joined_r0x00014002bbf3: do { if (plVar7 == (longlong *)0x0) goto LAB_14002bffb; bVar12 = (char *)(plVar7[7] + 0x10) == (char *)0x0; lVar4 = 8; pcVar8 = (char *)(plVar7[7] + 0x10); pcVar10 = "connect"; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; bVar12 = *pcVar8 == *pcVar10; pcVar8 = pcVar8 + 1; pcVar10 = pcVar10 + 1; } while (bVar12); if (bVar12) goto LAB_14002bc26; plVar7 = (longlong *)plVar7[10]; } while( true ); joined_r0x00014002b9bb: plVar7 = local_70; if (lVar4 != 0) { pcVar8 = (char *)(*(longlong *)(lVar4 + 0x38) + 0x10); if (pcVar8 != (char *)0x0) { for (lVar5 = *(longlong *)(lVar4 + 0xa0); lVar5 != lVar4 + 0x58; lVar5 = *(longlong *)(lVar5 + 0x48)) { pcVar10 = (char *)(*(longlong *)(lVar5 + 0x20) + 0x10); bVar12 = pcVar10 == (char *)0x0; lVar6 = 6; pcVar11 = "print"; do { if (lVar6 == 0) break; lVar6 = lVar6 + -1; bVar12 = *pcVar10 == *pcVar11; pcVar10 = pcVar10 + 1; pcVar11 = pcVar11 + 1; } while (bVar12); if (bVar12) { pcVar10 = (char *)(*(longlong *)(lVar5 + 0x30) + 0x10); if (pcVar10 != (char *)0x0) { lVar5 = -1; pcVar11 = pcVar8; goto code_r0x00014002ba1d; } break; } } } goto LAB_14002bbb9; } goto joined_r0x00014002bbf3; while( true ) { lVar5 = lVar5 + -1; cVar1 = *pcVar11; pcVar11 = pcVar11 + 1; if (cVar1 == '\0') break; code_r0x00014002ba1d: if (lVar5 == 0) break; } if (lVar5 != -2) { iVar2 = _stricmp(pcVar8,"log_account"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x41) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_item"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x40) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_pet"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x42) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"log_loginout"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x43) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agentmanagers"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x44) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agent"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x45) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"api"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x46) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"pvp"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x47) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"serveroption"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x48) = iVar2 == 1; } } } } } } } } } } LAB_14002bbb9: plVar9 = *(longlong **)(lVar4 + 0x50); while( true ) { plVar7 = local_70; if (plVar9 == (longlong *)0x0) goto joined_r0x00014002bbf3; lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); if (lVar4 != 0) break; plVar9 = (longlong *)plVar9[10]; } lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); goto joined_r0x00014002b9bb; LAB_14002bc26: while (lVar4 = (**(code **)(*plVar7 + 0x30))(plVar7), lVar4 == 0) { do { plVar7 = (longlong *)plVar7[10]; if (plVar7 == (longlong *)0x0) goto LAB_14002bffb; bVar12 = (char *)(plVar7[7] + 0x10) == (char *)0x0; lVar4 = 8; pcVar8 = (char *)(plVar7[7] + 0x10); pcVar10 = "connect"; do { if (lVar4 == 0) break; lVar4 = lVar4 + -1; bVar12 = *pcVar8 == *pcVar10; pcVar8 = pcVar8 + 1; pcVar10 = pcVar10 + 1; } while (bVar12); } while (!bVar12); } lVar4 = (**(code **)(*plVar7 + 0x30))(plVar7); if (lVar4 != 0) { for (plVar9 = *(longlong **)(lVar4 + 0x28); plVar9 != (longlong *)0x0; plVar9 = (longlong *)plVar9[10]) { lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); if (lVar4 != 0) { lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); while (lVar4 != 0) { pcVar8 = (char *)(*(longlong *)(lVar4 + 0x38) + 0x10); if (pcVar8 != (char *)0x0) { for (lVar5 = *(longlong *)(lVar4 + 0xa0); lVar5 != lVar4 + 0x58; lVar5 = *(longlong *)(lVar5 + 0x48)) { pcVar10 = (char *)(*(longlong *)(lVar5 + 0x20) + 0x10); bVar12 = pcVar10 == (char *)0x0; lVar6 = 8; pcVar11 = "connect"; do { if (lVar6 == 0) break; lVar6 = lVar6 + -1; bVar12 = *pcVar10 == *pcVar11; pcVar10 = pcVar10 + 1; pcVar11 = pcVar11 + 1; } while (bVar12); if (bVar12) { pcVar10 = (char *)(*(longlong *)(lVar5 + 0x30) + 0x10); if (pcVar10 != (char *)0x0) { iVar2 = _stricmp(pcVar8,"dbc_game"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 8) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_log"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 9) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_chat"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 10) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dbc_emergency"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0xb) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"auction"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0xc) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"msg"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0xd) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"manager"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0xe) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"match"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0xf) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"gm"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x10) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"gate"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x11) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"lobby"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x12) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"dungeon"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x13) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"pvp"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x14) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"guild"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x15) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agent"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x16) = iVar2 == 1; } else { iVar2 = _stricmp(pcVar8,"agentmanager"); if (iVar2 == 0) { iVar2 = atoi(pcVar10); *(bool *)(param_1 + 0x17) = iVar2 == 1; } } } } } } } } } } } } } } } } } break; } } } plVar9 = *(longlong **)(lVar4 + 0x50); while( true ) { if (plVar9 == (longlong *)0x0) goto LAB_14002bffb; lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); if (lVar4 != 0) break; plVar9 = (longlong *)plVar9[10]; } lVar4 = (**(code **)(*plVar9 + 0x30))(plVar9); } break; } } } LAB_14002bffb: printf("//////////////////////////////////////////////////////////////////////////\n"); if (*(char *)(param_1 + 0x40) != '\0') { printf("LOGVIEWER Option [%d] - LogItem View.\n"); } if (*(char *)(param_1 + 0x41) != '\0') { printf("LOGVIEWER Option [%d] - LogAccount View.\n"); } if (*(char *)(param_1 + 0x44) != '\0') { printf("LOGVIEWER Option [%d] - LogAgentManagers View.\n"); } if (*(char *)(param_1 + 0x45) != '\0') { printf("LOGVIEWER Option [%d] - LogAgent View.\n"); } if (*(char *)(param_1 + 0x46) != '\0') { printf("LOGVIEWER Option [%d] - LogApi View.\n"); } if (*(char *)(param_1 + 0x47) != '\0') { printf("LOGVIEWER Option [%d] - LogPvp View.\n"); } if (*(char *)(param_1 + 0x48) != '\0') { printf("LOGVIEWER Option [%d] - LogServerOption View.\n"); } if (*(char *)(param_1 + 0x42) != '\0') { printf("LOGVIEWER Option [%d] - LogPet View.\n"); } if (*(char *)(param_1 + 8) != '\0') { printf("Connect Option [%d] - DBC_GAME. \n"); } if (*(char *)(param_1 + 9) != '\0') { printf("Connect Option [%d] - DBC_LOG. \n"); } if (*(char *)(param_1 + 0xc) != '\0') { printf("Connect Option [%d] - Auction. \n"); } if (*(char *)(param_1 + 0xd) != '\0') { printf("Connect Option [%d] - Msg. \n"); } if (*(char *)(param_1 + 0xe) != '\0') { printf("Connect Option [%d] - Manager. \n"); } if (*(char *)(param_1 + 0xf) != '\0') { printf("Connect Option [%d] - Match. \n"); } if (*(char *)(param_1 + 0x10) != '\0') { printf("Connect Option [%d] - Gm. \n"); } if (*(char *)(param_1 + 0x11) != '\0') { printf("Connect Option [%d] - Gate. \n"); } if (*(char *)(param_1 + 0x12) != '\0') { printf("Connect Option [%d] - Lobby. \n"); } if (*(char *)(param_1 + 0x13) != '\0') { printf("Connect Option [%d] - Dungeon. \n"); } if (*(char *)(param_1 + 0x14) != '\0') { printf("Connect Option [%d] - Pvp. \n"); } if (*(char *)(param_1 + 0x15) != '\0') { printf("Connect Option [%d] - Guild. \n"); } if (*(char *)(param_1 + 0x16) != '\0') { printf("Connect Option [%d] - Agent. \n"); } if (*(char *)(param_1 + 0x17) != '\0') { printf("Connect Option [%d] - AgentManager. \n"); } printf("//////////////////////////////////////////////////////////////////////////\n"); local_98[0] = TiXmlDocument::vftable; if (local_38 != &DAT_140162cd0) { operator_delete__(local_30); } local_98[0] = TiXmlNode::vftable; while (local_70 != (longlong *)0x0) { plVar9 = (longlong *)local_70[10]; (**(code **)*local_70)(local_70,1); local_70 = plVar9; } if (local_60 != &DAT_140162cd0) { operator_delete__(local_58); } return; }