Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Function Map

This appendix is a cross-subsystem index of important functions, grouped by primary subsystem. Cross-subsystem functions appear under the subsystem that owns their main control flow. Detailed decisions belong in the relevant subsystem chapter. An address remains the durable identifier when a name improves later.

Application lifecycle

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0041D390app_check_conflicting_softwareApplicationint __cdecl(void)Prompt for four process suffixes and two files before startup.Startup and Shutdown
Darkages.exe:0x0041D690win_top_level_window_existsWin32BOOL __cdecl(LPCSTR class_name, LPCSTR window_title)Test for a matching top-level window.Startup and Shutdown
Darkages.exe:0x0041D6C0app_check_runservices_entriesApplicationint __cdecl(void)Examine and optionally delete three RunServices values.Startup and Shutdown
Darkages.exe:0x0045B5F0app_win_mainApplication and Win32int __stdcall(HINSTANCE, HINSTANCE, LPSTR, int)Own class registration, checks, window creation, the message loop, and normal shutdown.Startup and Shutdown
Darkages.exe:0x0045B8F0app_shutdownApplicationvoid __cdecl(void)Delete the initialized subsystem graph in fixed order.Startup and Shutdown
Darkages.exe:0x0045C840app_set_working_directory_from_command_lineApplicationvoid __cdecl(void)Parse the executable directory from the raw command line and make it current.Startup and Shutdown
Darkages.exe:0x0045CCA0app_initializeApplicationvoid __cdecl(void)Construct resources, services, screen state, and event workers.Startup and Shutdown
Darkages.exe:0x00498430app_virus_check_module_callbackApplication and Win32int __cdecl(void *, void *, const char *, FILE *)Post the first virus-check module report to the main window.Input and Windows Events
Darkages.exe:0x00498780app_virus_check_threadApplicationvoid __cdecl(char *log_filename)Run the process and module virus checker on a worker thread.Input and Windows Events
Darkages.exe:0x0049D790ui_screen_pane_activateUI and Win32void __thiscall(void *screen_pane)Restore active screen and presentation state.Startup and Shutdown
Darkages.exe:0x004C62A5app_crt_entryApplication and CRTvoid __cdecl(void)Initialize the Microsoft C runtime and call app_win_main.Startup and Shutdown

Events

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0040E4D0event_deferred_delete_queue_ctorEventsvoid *__thiscall(void *queue_object)Construct the deferred-deletion queue.Internal Event Routing
Darkages.exe:0x0040E5C0event_deferred_delete_queue_drainEventsvoid __thiscall(void *queue_object)Delete and remove every deferred object.Internal Event Routing
Darkages.exe:0x00430F84event_dispatcher_dtorEvents and timingvoid __thiscall(void *event_dispatcher_object)Release dispatcher containers and balance multimedia timing state.Internal Event Routing
Darkages.exe:0x00430FE0event_dispatcher_ctorEvents and timingvoid *__thiscall(void *event_dispatcher_object)Construct the dispatcher, timer list, and worker timing state.Internal Event Routing
Darkages.exe:0x00431150event_dispatcher_register_paneEventsvoid __thiscall(void *event_dispatcher_object, void *pane, int hierarchy, int position)Register a pane and hierarchy metadata.Internal Event Routing
Darkages.exe:0x004311B0event_dispatcher_unregister_paneEventsvoid __thiscall(void *event_dispatcher_object, void *pane)Remove a pane from dispatcher traversal.Internal Event Routing
Darkages.exe:0x00431200event_dispatcher_queue_event_copyEventsvoid __thiscall(void *event_dispatcher_object, const void *event)Shallow-copy one 0x24-byte Event and queue dispatcher work code 3.Hooks and Injection
Darkages.exe:0x00431320event_dispatcher_insert_timerEvents and timingvoid __thiscall(void *event_dispatcher_object, void *receiver, int callback_id, unsigned int delay_ms, int payload_0, int payload_1)Insert a timer into the absolute-deadline sorted list.Internal Event Routing
Darkages.exe:0x00431470event_dispatcher_remove_pane_timersEvents and timingvoid __thiscall(void *event_dispatcher_object, void *receiver)Cancel every timer for one pane.Internal Event Routing
Darkages.exe:0x004315B0event_dispatcher_tickEvents and timingvoid __thiscall(void *event_dispatcher_object)Drain deferred deletion and dispatch at most one due timer.Internal Event Routing
Darkages.exe:0x004316E0event_dispatcher_process_work_itemEventsvoid __thiscall(void *event_dispatcher_object, int code, void *data, int value)Execute dispatcher work codes, including timer insert and cancellation.Internal Event Routing
Darkages.exe:0x00431B84event_dispatchEventsint __thiscall(void *this, void *event)Dispatch one internal Event.Internal Event Routing
Darkages.exe:0x00431D54event_dispatch_hierarchyEventsint __thiscall(void *this, void *event, void *hierarchy)Walk panes and call the type-specific virtual handler.Internal Event Routing
Darkages.exe:0x00432514event_manager_dtorEvents and networkvoid __thiscall(void *event_manager_object)Destroy EventMan and its owned Socket and clear both static roots.Internal Event Routing
Darkages.exe:0x00432630event_manager_ctorEvents and networkvoid *__thiscall(void *event_manager_object)Construct and publish the EventMan singleton.Internal Event Routing
Darkages.exe:0x00432BD0event_queue_mouse_moveEvents and inputvoid __thiscall(void *, int, int, unsigned int)Queue copied mouse coordinates and message time as work code 4.Input and Windows Events
Darkages.exe:0x00432C50event_queue_left_button_downEvents and inputvoid __thiscall(void *, unsigned int)Set left-button state and queue work code 5.Input and Windows Events
Darkages.exe:0x00432C90event_queue_left_button_upEvents and inputvoid __thiscall(void *, unsigned int)Clear left-button state and queue work code 6.Input and Windows Events
Darkages.exe:0x00432CC0event_queue_right_button_downEvents and inputvoid __thiscall(void *, unsigned int)Set right-button state and queue work code 7.Input and Windows Events
Darkages.exe:0x00432D00event_queue_right_button_upEvents and inputvoid __thiscall(void *, unsigned int)Clear right-button state and queue work code 8.Input and Windows Events
Darkages.exe:0x00432D30event_queue_mouse_wheelEvents and inputvoid __thiscall(void *, int, unsigned int)Queue wheel delta and message time as work code 9.Input and Windows Events
Darkages.exe:0x00432D60event_queue_key_downEvents and inputvoid __thiscall(void *, unsigned char, unsigned int)Queue a physical key press as work code 0x0A.Input and Windows Events
Darkages.exe:0x00432D90event_queue_key_upEvents and inputvoid __thiscall(void *, unsigned char, unsigned int)Queue a physical key release as work code 0x0B.Input and Windows Events
Darkages.exe:0x00432E50event_post_socket_bytesEvents and networkvoid __thiscall(void *this, const uint8_t *packet, int length)Copy decoded packet bytes to work code 0x0E.Internal Event Routing
Darkages.exe:0x00432F10event_manager_queue_event_copyEventsvoid __thiscall(void *event_manager_object, const void *event)Shallow-copy one 0x24-byte Event and queue EventMan work code 0x0F.Hooks and Injection
Darkages.exe:0x00433060event_manager_get_instanceEventsvoid *__cdecl(void)Assert and return the EventMan singleton.Input and Windows Events
Darkages.exe:0x00433110event_process_work_itemEventsvoid __thiscall(void *this, int code, void *data, int value)Convert event-manager worker records to Event objects.Internal Event Routing
Darkages.exe:0x00433434event_dispatch_mouse_moveEvents and inputvoid __thiscall(void *, int, int, unsigned int)Dispatch mouse subtype 0.Input and Windows Events
Darkages.exe:0x00433504event_dispatch_left_button_downEvents and inputvoid __thiscall(void *, unsigned int)Dispatch left single- or double-button-down input.Input and Windows Events
Darkages.exe:0x004336C4event_dispatch_left_button_upEvents and inputvoid __thiscall(void *, unsigned int)Dispatch left-button release.Input and Windows Events
Darkages.exe:0x00433794event_dispatch_right_button_downEvents and inputvoid __thiscall(void *, unsigned int)Dispatch right single- or double-button-down input.Input and Windows Events
Darkages.exe:0x00433944event_dispatch_right_button_upEvents and inputvoid __thiscall(void *, unsigned int)Dispatch right-button release.Input and Windows Events
Darkages.exe:0x00433A14event_dispatch_mouse_wheelEvents and inputvoid __thiscall(void *, int, unsigned int)Divide the wheel delta by 120 and dispatch subtype 7.Input and Windows Events
Darkages.exe:0x00433AB4event_dispatch_key_downEvents and inputvoid __thiscall(void *, unsigned char, unsigned int)Update mapped key state and dispatch key subtype 8.Input and Windows Events
Darkages.exe:0x00433C34event_update_key_upEvents and inputvoid __thiscall(void *, unsigned char, unsigned int)Clear pressed and modifier state without pane dispatch.Input and Windows Events
Darkages.exe:0x00433DC4event_queue_socket_packetEvents and networkvoid __stdcall(uint8_t *packet, uint32_t size)Queue Event type 9 with packet ownership.Internal Event Routing
Darkages.exe:0x00434080event_manager_periodic_noopEventsvoid __thiscall(void *event_manager_object)Native no-op EventMan periodic worker callback.Event Proxy Architecture
Darkages.exe:0x00470DA0util_memory_manager_deleting_dtorCross-subsystem memoryestablished scalar deleting destructorClear the MemoryMan root and optionally delete the object.Data Map
Darkages.exe:0x00470E10util_memory_manager_ctorCross-subsystem memoryvoid *__thiscall(void *memory_manager)Construct MemoryMan and publish its static root.Data Map
Darkages.exe:0x00470F30util_memory_manager_dtorCross-subsystem memoryvoid __thiscall(void *memory_manager)Destroy MemoryMan and clear its static root.Data Map
Darkages.exe:0x00470F80util_memory_manager_get_instanceCross-subsystem memoryvoid *__cdecl(void)Return the client MemoryMan singleton.Hooks and Injection
Darkages.exe:0x00470FC0util_memory_manager_allocCross-subsystem memoryvoid *__thiscall(void *memory_manager, int size)Allocate through the executable’s CRT wrapper.Hooks and Injection
Darkages.exe:0x004710D0util_memory_manager_freeCross-subsystem memoryint __thiscall(void *memory_manager, void *block)Free through the executable’s CRT wrapper.Internal Event Routing
Darkages.exe:0x00497EB0util_ring_buffer_ctorCross-subsystem workervoid *__thiscall(void *ring_buffer, int element_size, int capacity)Construct the monitor-protected bounded ring.Data Map
Darkages.exe:0x00498080util_ring_buffer_push_waitCross-subsystem workervoid __thiscall(void *ring_buffer, const void *element)Wait for capacity and append one record under the queue monitor.Internal Event Routing
Darkages.exe:0x004981B0util_ring_buffer_pop_waitCross-subsystem workervoid __thiscall(void *ring_buffer, void *element_out)Wait for data and remove one record under the queue monitor.Internal Event Routing
Darkages.exe:0x004BE9B0util_thread_queue_ctorCross-subsystem workervoid *__thiscall(void *worker_object, int queue_capacity)Construct queue state and a suspended worker thread.Internal Event Routing
Darkages.exe:0x004BEC34util_thread_queue_add_wait_handleCross-subsystem workervoid __thiscall(void *worker_object, void *wait_handle)Add one handle to the worker’s 16-entry wait set.Internal Event Routing
Darkages.exe:0x004BECB0util_thread_queue_dtorCross-subsystem workervoid __thiscall(void *worker_object)Terminate the worker and release its handles and queues.Internal Event Routing
Darkages.exe:0x004BEDF0util_thread_queue_set_wait_timeoutCross-subsystem workervoid __thiscall(void *worker_object, unsigned int timeout_ms)Set the WaitForMultipleObjects timeout.Internal Event Routing
Darkages.exe:0x004BEE00util_thread_queue_startCross-subsystem workervoid __thiscall(void *worker_object)Create the derived wait object and resume the worker.Internal Event Routing
Darkages.exe:0x004BF250util_thread_queue_worker_loopCross-subsystem workervoid __thiscall(void *worker_object)Wait for work or timeout and invoke derived worker methods.Internal Event Routing
Darkages.exe:0x004BF440util_thread_queue_post_asyncCross-subsystem workervoid __thiscall(void *worker_object, int code, void *data, int value)Append an asynchronous record and release the queue semaphore; admission can block on a full ring.Internal Event Routing

Networking

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0040A664net_c_build_portrait_responseNetwork and UIestablished __thiscall builderBuild client action 0x4F from the local portrait.Networking
Darkages.exe:0x0046CA54net_forward_embedded_client_packetNetworkestablished MapPane action handlerForward the client packet embedded in server action 0x4B.Client actions
Darkages.exe:0x004884E4net_c_send_moveNetwork, input, and timingvoid __thiscall(struct ui_local_user *, uint8_t)Queue CMove and start the local movement response timer.CMove
Darkages.exe:0x004A3294net_socket_dtorNetworkvoid __thiscall(void *socket_object)Close transports and tear down the Socket worker.Networking
Darkages.exe:0x004A32F0net_socket_ctorNetworkvoid *__thiscall(void *this, void *event_sink)Construct and initialize the Socket object.Networking
Darkages.exe:0x004A3570net_c_queue_sendNetworkvoid __thiscall(void *this, const uint8_t *packet, int16_t length)Copy, terminate, and queue a logical client packet.Networking
Darkages.exe:0x004A36C0net_queue_xor_keyNetworkvoid __thiscall(void *this, unsigned int key_length, const uint8_t *key)Copy and queue a negotiated XOR key.Sequence and XOR Transformation
Darkages.exe:0x004A3700net_queue_xor_table_functionNetworkvoid __thiscall(void *this, unsigned int function_index)Queue selection of table function 0 through 9.Sequence and XOR Transformation
Darkages.exe:0x004A39C0net_poll_receiveNetworkvoid __thiscall(void *socket_object)Poll receive state from the Socket periodic worker callback.Event Proxy Architecture
Darkages.exe:0x004A3A74net_s_receive_framesNetworkvoid __thiscall(void *this)Extract, decode, and post binary frames.Networking
Darkages.exe:0x004A44D4net_s_decode_packet_bodyNetworkint __stdcall(const uint8_t *src, int src_size, uint8_t *dest)Reverse the ordinary server-body XOR transformation.Sequence and XOR Transformation
Darkages.exe:0x004A4D34net_read_transport_byteNetworkint __thiscall(void *this, uint8_t *out_byte)Read a cached byte, refilling with recv or ReadFile.Networking
Darkages.exe:0x004A54D0net_process_work_itemNetworkvoid __thiscall(void *this, int code, void *data, int value)Execute queued Socket operations.Networking
Darkages.exe:0x004A59F4net_connect_configured_serverNetworkvoid __thiscall(void *this)Establish the configured socket and async notification.Networking
Darkages.exe:0x004A72B4net_c_send_packet_bodyNetworkvoid __thiscall(void *this, const uint8_t *packet, int16_t length)Transform, frame, and call send.Networking
Darkages.exe:0x004A79E4net_c_encode_packet_bodyNetworkint __stdcall(const uint8_t *src, int src_size, uint8_t *dest)Add sequence and apply ordinary client-body XOR passes.Sequence and XOR Transformation
Darkages.exe:0x004A8414net_set_xor_keyNetworkvoid __stdcall(int length, const uint8_t *key)Replace and repeat the runtime XOR key.Sequence and XOR Transformation
Darkages.exe:0x004A8590net_build_xor_tableNetworkvoid __stdcall(int function_index)Generate the 256-entry XOR table.Sequence and XOR Transformation

UI panes and registries

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0040A0A0ui_dialog_default_socket_handlerUI and eventsint __thiscall(void *, void *)Decline an unhandled Dialog socket Event.UI Panes and Registries
Darkages.exe:0x0040A0B0ui_dialog_default_timer_handlerUI and timingint __thiscall(void *, int, int, int)Decline an unhandled Dialog timer callback.UI Panes and Registries
Darkages.exe:0x0040A5A0ui_pane_default_key_handlerUI and eventsestablished Pane virtual handlerDefault keyboard handler at vslot +0x3C.UI Panes and Registries
Darkages.exe:0x0040A5B0ui_background_pane_ctorUIestablished __thiscall constructorConstruct the in-game BackgroundPane.UI Panes and Registries
Darkages.exe:0x0040B460ui_pane_default_mouse_handlerUI and eventsestablished Pane virtual handlerDefault mouse handler at vslot +0x38.UI Panes and Registries
Darkages.exe:0x0040B470ui_pane_default_socket_handlerUI and eventsestablished Pane virtual handlerDefault socket Event handler at vslot +0x40.UI Panes and Registries
Darkages.exe:0x0040E660ui_bulletin_session_deleting_dtorUIestablished __thiscall deleting destructorDestroy BulletinSession, its child history, and both registry memberships.Runtime UI Memory Map
Darkages.exe:0x0040EA50ui_pane_default_timer_handlerUI and timingestablished Pane virtual handlerDefault timer callback at vslot +0x44.UI Panes and Registries
Darkages.exe:0x0040EB10ui_bulletin_session_ctorUI and networkestablished __thiscall constructorConstruct and publish BulletinSession.UI, Input, and Packet Flows
Darkages.exe:0x0040ED04ui_bulletin_session_process_packetUI and networkestablished __thiscall methodDispatch SBulletin subtype to a replaceable child dialog.UI, Input, and Packet Flows
Darkages.exe:0x00414130ui_bulletin_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process shared Bulletin-family keyboard actions.UI Panes and Registries
Darkages.exe:0x00414260ui_bulletin_dialog_handle_server_packetUI and eventsint __thiscall(void *, void *)Claim server action 0x31 for Bulletin-family dialogs.UI Panes and Registries
Darkages.exe:0x004142E0ui_bulletin_dialog_handle_mouse_eventUI and eventsint __thiscall(void *, void *)Add Bulletin-family mouse capture and release behavior.UI Panes and Registries
Darkages.exe:0x00414BD0ui_article_list_dialog_start_new_article_editingUIestablished __thiscall methodStart new-article editing from ArticleListDialog.Pane Virtual Table Inventory
Darkages.exe:0x00415A10ui_article_list_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process ArticleListDialog keyboard actions.UI Panes and Registries
Darkages.exe:0x00416B20ui_article_list_pane_draw_cellUIestablished DrawCell methodDraw one ArticleListPane cell.Pane Virtual Table Inventory
Darkages.exe:0x004181A0ui_new_article_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process NewArticleDialog editing keys.UI Panes and Registries
Darkages.exe:0x004184C0ui_mail_list_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process MailListDialog keyboard actions.UI Panes and Registries
Darkages.exe:0x00419FE0ui_mail_list_pane_handle_selected_cell_double_clickUIestablished __thiscall methodOpen the selected mail from a list-cell double-click.Pane Virtual Table Inventory
Darkages.exe:0x0041A080ui_mail_list_pane_draw_cellUIestablished DrawCell methodDraw one MailListPane cell.Pane Virtual Table Inventory
Darkages.exe:0x0041AE70ui_new_mail_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process NewMailDialog editing keys.UI Panes and Registries
Darkages.exe:0x0041C4D0ui_legend_dialog_pane_ctorUIestablished __thiscall constructorConstruct LegendDialogPane and its inner list control.Pane Virtual Table Inventory
Darkages.exe:0x0041C770ui_legend_dialog_pane_handle_mouse_eventUI and eventsint __thiscall(void *, void *)Add LegendDialogPane left- and right-button behavior.UI Panes and Registries
Darkages.exe:0x00423984ui_lag_indicator_pane_dtorUIvoid __thiscall(struct ui_lag_indicator_pane *)Destroy the persistent lag indicator and clear its root.Runtime UI Memory Map
Darkages.exe:0x004239C0ui_get_lag_indicator_paneUIstruct ui_lag_indicator_pane *__cdecl(void)Return the persistent lag indicator pointer.Runtime UI Memory Map
Darkages.exe:0x004239D0ui_lag_indicator_pane_ctorUIstruct ui_lag_indicator_pane *__thiscall(struct ui_lag_indicator_pane *, void *)Construct and publish the lag indicator.Runtime UI Memory Map
Darkages.exe:0x00423A44ui_lag_indicator_pane_attachUIvoid __thiscall(struct ui_lag_indicator_pane *, void *)Add and register the lag indicator below BackgroundPane.Runtime UI Memory Map
Darkages.exe:0x00423AA0ui_lag_indicator_pane_drawUI and renderingvoid __thiscall(struct ui_lag_indicator_pane *)Select the lag indicator frame from the smoothed value.Runtime UI Memory Map
Darkages.exe:0x00423B60ui_lag_indicator_update_from_local_userUI and timingvoid __thiscall(struct ui_lag_indicator_pane *)Average the newest movement response sample and invalidate the Pane.Runtime UI Memory Map
Darkages.exe:0x0042A190ui_dialog_handle_mouse_eventUI and eventsint __thiscall(void *, void *)Process generic Dialog mouse subtypes.UI Panes and Registries
Darkages.exe:0x0042AED0ui_dialog_handle_key_eventUI and eventsint __thiscall(void *, void *)Process generic Dialog keys and focused controls.UI Panes and Registries
Darkages.exe:0x0042E1A0ui_equip_pane_ctorUIestablished __thiscall constructorConstruct and publish the persistent User Equip pane.UI, Input, and Packet Flows
Darkages.exe:0x0042EAF0ui_equip_pane_handle_server_packetUI and networkint __thiscall(void *, void *)Dispatch SAddEquip, SRemoveEquip, and SSelfLook.UI, Input, and Packet Flows
Darkages.exe:0x0042EBA4ui_equip_pane_apply_self_lookUI and character stateestablished __thiscall parserApply SSelfLook without changing visibility.UI, Input, and Packet Flows
Darkages.exe:0x0043A5F0ui_game_buttons_pane_ctorUIvoid *__thiscall(void *, void *, void *)Construct GameButtonsPane and its persistent content graph.Runtime UI Memory Map
Darkages.exe:0x0043CF20ui_game_buttons_handle_key_eventUI and inputint __thiscall(void *, void *)Map A/S/D/F/G to persistent content panes.UI, Input, and Packet Flows
Darkages.exe:0x0043D164ui_game_buttons_select_contentUIvoid __thiscall(void *, int8_t)Dispatch selection of equipment, skills, spells, chat, or status.UI, Input, and Packet Flows
Darkages.exe:0x0043D3D4ui_game_buttons_select_inventoryUI and networkvoid __thiscall(void *)Select or toggle equipment and request self-look on hidden reopen.UI, Input, and Packet Flows
Darkages.exe:0x0043E1B4ui_window_buttons_selectUI and networkvoid __thiscall(void *, int8_t)Dispatch Q/W/E window-button actions.UI, Input, and Packet Flows
Darkages.exe:0x0043E2B4ui_window_buttons_show_option_paneUIvoid __thiscall(void *)Allocate and construct dynamic OptionPane.UI, Input, and Packet Flows
Darkages.exe:0x0043E384net_c_send_who_requestNetwork and UIvoid __cdecl(void)Send one-byte CWho for Users Dialog Pane.CWho
Darkages.exe:0x0043E700ui_users_dialog_showUI and timingestablished __thiscall wrapperEnter the shared show body for the populated users pane.SShowUsers
Darkages.exe:0x00442A34ui_skill_inventory_apply_add_packetUI and networkint __thiscall(void *, const uint8_t *)Parse SAddSkill and replace one of 36 slot children.SAddSkill
Darkages.exe:0x00442C04ui_skill_inventory_remove_slot_paneUIvoid __thiscall(void *, uint8_t)Remove, unregister, delete, and clear an indexed skill pane.Runtime UI Memory Map
Darkages.exe:0x00442D14ui_skill_inventory_create_slot_paneUIvoid __thiscall(void *, uint8_t, uint16_t, const char *)Allocate and register an indexed skill pane.Runtime UI Memory Map
Darkages.exe:0x00443BB4ui_spell_inventory_apply_add_packetUI and networkint __thiscall(void *, const uint8_t *)Parse SAddSpell and replace one of 36 slot children.SAddSpell
Darkages.exe:0x00443E14ui_spell_inventory_remove_slot_paneUIvoid __thiscall(void *, uint8_t)Remove, unregister, delete, and clear an indexed spell pane.Runtime UI Memory Map
Darkages.exe:0x00443F24ui_spell_inventory_create_slot_paneUIvoid __thiscall(void *, uint8_t, uint16_t, int8_t, const char *, const char *, uint8_t)Allocate and register an indexed spell pane.Runtime UI Memory Map
Darkages.exe:0x00446090ui_point_initUIvoid __cdecl(void *, int, int)Initialize a two-coordinate client point.Runtime UI Memory Map
Darkages.exe:0x004460B0ui_rect_initUIvoid __cdecl(void *, int, int, int, int)Initialize a client rectangle while preserving its non-Win32 field order.Runtime UI Memory Map
Darkages.exe:0x00454CA0ui_skill_slot_finish_cooldownUI and timingestablished __thiscall methodClear a skill slot’s cooldown-active state.Runtime UI Memory Map
Darkages.exe:0x00454CC0ui_skill_slot_start_cooldownUI and timingestablished __thiscall methodSet a skill slot’s cooldown-active state.Runtime UI Memory Map
Darkages.exe:0x004544B0ui_skill_slot_handle_mouse_eventUI and inputint __thiscall(void *, void *)Open skill details or activate a skill slot.UI, Input, and Packet Flows
Darkages.exe:0x00455040ui_spell_slot_handle_mouse_eventUI and inputint __thiscall(void *, void *)Open spell details or enter a spell cast path.UI, Input, and Packet Flows
Darkages.exe:0x00455684ui_spell_slot_begin_castUI and networkvoid __thiscall(void *)Build the confirmed two-byte CUseSpell form.CUseSpell
Darkages.exe:0x004556F4ui_spell_delay_beginUI, network, and timingestablished __thiscall methodHold or immediately submit a built spell packet.UI, Input, and Packet Flows
Darkages.exe:0x00456220ui_spell_slot_finish_cooldownUI and timingestablished __thiscall methodClear a spell slot’s cooldown-active state.Runtime UI Memory Map
Darkages.exe:0x00456240ui_spell_slot_start_cooldownUI and timingestablished __thiscall methodSet a spell slot’s cooldown-active state.Runtime UI Memory Map
Darkages.exe:0x00456940ui_spell_delay_handle_timerUI, network, and timingint __thiscall(void *, int, int, int)Emit delay phrases and submit the held spell on the final tick.UI, Input, and Packet Flows
Darkages.exe:0x00456B90ui_skill_slot_pane_ctorUIvoid *__thiscall(void *, uint8_t, uint16_t, const char *)Initialize a persistent skill slot child.Runtime UI Memory Map
Darkages.exe:0x00456C70ui_spell_slot_pane_ctorUIvoid *__thiscall(void *, uint8_t, uint16_t, int8_t, const char *, const char *, uint8_t)Initialize a persistent spell slot child.Runtime UI Memory Map
Darkages.exe:0x0044E4D0ui_hierarchy_list_ctorUI and eventsvoid *__thiscall(void *, int)Construct a packed hierarchy list.UI Panes and Registries
Darkages.exe:0x004594A0ui_hierarchy_get_nodeUI and eventsvoid *__thiscall(void *, int)Return a checked packed-node address.UI Panes and Registries
Darkages.exe:0x0045D930ui_main_menu_pane_ctorUIestablished __thiscall constructorConstruct and publish MainMenuPane.UI Panes and Registries
Darkages.exe:0x0045FA44ui_main_menu_create_game_panesUIestablished __thiscall transition methodBuild and publish the in-game pane graph.UI Panes and Registries
Darkages.exe:0x004658C0ui_map_pane_ctorUIestablished __thiscall constructorConstruct the 0xF38-byte MapPane.UI Panes and Registries
Darkages.exe:0x00467320ui_map_handle_key_eventUI and eventsestablished Pane virtual handlerHandle MapPane keyboard Events.UI Panes and Registries
Darkages.exe:0x00467360ui_map_handle_mouse_eventUI and eventsestablished Pane virtual handlerHandle MapPane mouse Events.UI Panes and Registries
Darkages.exe:0x00469474ui_map_handle_screen_menuUI and networkestablished MapPane action handlerAllocate and construct an SScreenMenu pane.SScreenMenu
Darkages.exe:0x0046C004ui_map_handle_pursuit_menuUI and networkestablished MapPane action handlerAllocate one of seven SPursuitMenu dialog variants.SPursuitMenu
Darkages.exe:0x0046C3F4ui_map_handle_show_paperUI and networkestablished MapPane action handlerAllocate Paper in server-show mode.SShowPaper
Darkages.exe:0x0046C464ui_map_handle_show_usersUI and networkestablished MapPane action handlerPopulate and show Users Dialog Pane.SShowUsers
Darkages.exe:0x0046CAB4ui_map_handle_bulletinUI and networkestablished MapPane action handlerCreate a server-opened BulletinSession when allowed.SBulletin
Darkages.exe:0x00471D10ui_screen_menu_pane_ctorUI and networkestablished __thiscall constructorAdd, register, and parse a full-screen server menu.SScreenMenu
Darkages.exe:0x0047DBA0ui_question_message_dialog_handle_mouse_eventUI and eventsint __thiscall(void *, void *)Add drag behavior for the question-dialog family.UI Panes and Registries
Darkages.exe:0x0047EFC0ui_question_message_dialog_ctorUI and networkestablished __thiscall constructorConstruct SPursuitMenu subtype 2 question dialog.SPursuitMenu
Darkages.exe:0x0047F9C0ui_question_message_dialog_send_answerUI and networkestablished __thiscall methodSend the selected answer from QuestionMessageDialog.Pane Virtual Table Inventory
Darkages.exe:0x004805E0ui_question_message_face_dialog_send_answerUI and networkestablished __thiscall methodSend the selected answer from QuestionMessageFaceDialog.Pane Virtual Table Inventory
Darkages.exe:0x004862E0ui_monster_pane2_start_moveUI and world stateestablished __thiscall methodStart a MonsterPane2 movement transition.Pane Virtual Table Inventory
Darkages.exe:0x004876C4ui_local_user_dtorUI and world statevoid __thiscall(struct ui_local_user *)Destroy the local-user Pane and clear its class-level alias.Runtime UI Memory Map
Darkages.exe:0x00487700ui_local_user_ctorUI and world statestruct ui_local_user *__thiscall(struct ui_local_user *, void *)Construct and publish the active local-user Pane.Runtime UI Memory Map
Darkages.exe:0x00487860ui_get_local_userUI and world statestruct ui_local_user *__cdecl(void)Return the active local-user pointer.Runtime UI Memory Map
Darkages.exe:0x0048D2E0ui_effect_object_pane_handle_timerUI and timingestablished Pane timer handlerProcess EffectObjectPane timer callbacks.Pane Virtual Table Inventory
Darkages.exe:0x0048F600ui_option_pane_ctorUIvoid *__thiscall(void *)Build, add, and register dynamic OptionPane.UI, Input, and Packet Flows
Darkages.exe:0x004909E0ui_option_pane_handle_server_packetUI and networkint __thiscall(void *, void *)Claim SSelfSaveOk and create a confirmation dialog.SSelfSaveOk
Darkages.exe:0x00490A80ui_option_pane_handle_mouse_eventUI and inputint __thiscall(void *, void *)Handle OptionPane mouse state.Pane Virtual Table Inventory
Darkages.exe:0x00490D70ui_option_pane_handle_timerUI and timingint __thiscall(void *, int, int, int)Advance OptionPane timer state.Pane Virtual Table Inventory
Darkages.exe:0x00490FE0ui_option_pane_handle_key_eventUI and inputint __thiscall(void *, void *)Handle OptionPane keyboard shortcuts.Pane Virtual Table Inventory
Darkages.exe:0x00491AA4net_c_send_user_settingNetwork and UIvoid __thiscall(void *, uint8_t)Send CUserSetting from an option control.CUserSetting
Darkages.exe:0x00492A90ui_pane_dtorUIvoid __thiscall(void *)Cancel timers and destroy the Pane base.UI Panes and Registries
Darkages.exe:0x00492AD0ui_pane_ctorUIvoid *__thiscall(void *, unsigned char, unsigned char)Construct common Pane fields and install the base vtable.UI Panes and Registries
Darkages.exe:0x00492C10ui_pane_is_visibleUIint __thiscall(void *)Query common pane visible state.UI, Input, and Packet Flows
Darkages.exe:0x00492C40ui_pane_showUIvoid __thiscall(void *)Set visible state and invalidate the pane.UI Panes and Registries
Darkages.exe:0x00492D50ui_pane_hideUIvoid __thiscall(void *)Clear visible state and invalidate the exposed region.UI Panes and Registries
Darkages.exe:0x00493240ui_pane_get_bound_rectUIvoid __thiscall(void *, int32_t *)Translate a Pane’s local bounds by its relative origin.Runtime UI Memory Map
Darkages.exe:0x004932B0ui_pane_set_bound_rectUIvoid __thiscall(void *, const int32_t *)Split Pane bounds into relative origin and local rectangle.Runtime UI Memory Map
Darkages.exe:0x004933C0ui_pane_add_to_screenUIvoid __thiscall(void *, const int32_t *, void *, void *)Add a Pane to Screen composition using a client-order rectangle.UI Panes and Registries
Darkages.exe:0x00493480ui_pane_remove_from_screenUIvoid __thiscall(void *)Remove a Pane from Screen composition.UI Panes and Registries
Darkages.exe:0x00493530ui_pane_register_eventsUI and eventsvoid __thiscall(void *, void *, int)Register a Pane in event traversal.UI Panes and Registries
Darkages.exe:0x004935D0ui_pane_unregister_eventsUI and eventsvoid __thiscall(void *)Remove a Pane from event traversal.UI Panes and Registries
Darkages.exe:0x004939C0ui_paper_dialog_ctorUI and networkestablished __thiscall constructorParse and construct Paper in mode 0 or 1.UI, Input, and Packet Flows
Darkages.exe:0x00493B60ui_paper_dialog_handle_completionUI and networkint __thiscall(void *, int, int)Optionally submit Paper content, then close the dialog.CExitEditingMode
Darkages.exe:0x00494100net_c_send_exit_editing_modeNetwork and UIvoid __thiscall(void *)Serialize current Paper content as action 0x23.CExitEditingMode
Darkages.exe:0x00498F20ui_screen_registry_ctorUIvoid *__thiscall(void *)Construct the Screen composition hierarchy.UI Panes and Registries
Darkages.exe:0x00498F40ui_screen_add_paneUIestablished __thiscall methodValidate and insert a Screen node.UI Panes and Registries
Darkages.exe:0x004993C4ui_screen_find_pane_nodeUIestablished recursive __thiscall searchFind a pane’s packed Screen node.UI Panes and Registries
Darkages.exe:0x00499530ui_screen_remove_paneUIestablished __thiscall methodRemove a Screen node and child hierarchy.UI Panes and Registries
Darkages.exe:0x00499ED0ui_screen_get_pane_originUIestablished __thiscall queryAccumulate a pane’s screen-space origin.UI Panes and Registries
Darkages.exe:0x004A1680ui_scrollable_pane_handle_mouse_eventUI and eventsint __thiscall(void *, void *)Route mouse input through scroll bars and list content.UI Panes and Registries
Darkages.exe:0x004A1900ui_scrollable_pane_handle_key_eventUI and eventsint __thiscall(void *, void *)Route keyboard input through scroll bars and list content.UI Panes and Registries
Darkages.exe:0x004A1B04ui_server_select_dialog_pane_dtorUIestablished __thiscall destructorUnregister and remove ServerSelectDialogPane.UI Panes and Registries
Darkages.exe:0x004A2740ui_server_select_dialog_pane_ctorUIestablished __thiscall constructorConstruct, add, and register ServerSelectDialogPane.UI Panes and Registries
Darkages.exe:0x004AC944ui_terminal_pane_dtorUIestablished __thiscall destructorClear the terminal root and destroy derived state.UI Panes and Registries
Darkages.exe:0x004ACA00ui_terminal_pane_ctorUIestablished __thiscall constructorConstruct, publish, add, and register TerminalPane.UI Panes and Registries
Darkages.exe:0x004AD130ui_get_terminal_paneUIvoid *__cdecl(void)Return the static TerminalPane pointer.UI Panes and Registries
Darkages.exe:0x004BE6F4ui_text_edit_handle_key_eventUI and eventsestablished Pane virtual handlerComplete or cancel a temporary TextEdit pane.UI Panes and Registries
Darkages.exe:0x004C2D90ui_weather_pane_drawUI and renderingestablished Draw methodDraw WeatherPane cloud and weather state.Pane Virtual Table Inventory

UI protocol dispatch

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0040B3A0ui_handle_server_request_portraitNetwork and UIint __thiscall(void *this, void *event)Handle server action 0x49.Server actions
Darkages.exe:0x0045F780ui_main_menu_handle_server_packetNetwork and UIint __thiscall(void *this, void *event)Handle initial main-menu server packets.Server actions
Darkages.exe:0x00468A90ui_map_dispatch_server_packetNetwork and UIint __thiscall(void *this, void *event)Dispatch 31 in-game server actions.Server actions
Darkages.exe:0x0046B574ui_map_handle_object_directionNetwork and UIint __thiscall(void *this, const uint8_t *packet)Apply server action 0x11 to a map object’s direction.SChangeDirection
Darkages.exe:0x004889F0ui_local_user_handle_server_packetNetwork, UI, and world stateint __thiscall(struct ui_local_user *, void *)Dispatch the server actions owned by the local-user Pane.SMove
Darkages.exe:0x004897C4ui_local_user_handle_smoveNetwork, UI, and timingint __thiscall(struct ui_local_user *, const uint8_t *)Apply SMove and update movement response timing.SMove
Darkages.exe:0x004921F0ui_exit_wait_handle_server_packetNetwork and UIint __thiscall(void *this, void *event)Complete the subtype-one safe-exit exchange for server action 0x4C.SReconnect
Darkages.exe:0x00492310ui_exit_wait_pane_ctorUI and networkestablished __thiscall constructorCreate the exit-wait pane and send CQuit subtype 0x01.SReconnect
Darkages.exe:0x004A2ED0ui_server_select_handle_server_packetNetwork and UIint __thiscall(void *this, void *event)Deserialize the action 0x56 server table.Server actions

Input and Windows integration

AddressCurrent IDA nameSubsystemPrototypePurposeDetailed page
Darkages.exe:0x0045BDC0win_main_window_procWin32, UI, input, and networkLRESULT __stdcall(HWND, UINT, WPARAM, LPARAM)Route the 15 explicit DAClass messages and delegate all others.Input and Windows Events
Darkages.exe:0x0049DA30render_screen_pane_load_paletteRendering and Win32void __thiscall(void *, const char *)Load and apply the 256-entry screen palette.Input and Windows Events
Darkages.exe:0x0049E820ui_screen_pane_set_cursor_positionUI and inputvoid __thiscall(void *, int, int)Update the 32 by 32 software-cursor rectangle.Input and Windows Events

Entry requirements

Add a function when it is useful outside its immediate subsystem context. Record the calling convention and types established by the code, and link to the detailed subsystem explanation.