#ifndef FUNCTION_NAMES_H
#define FUNCTION_NAMES_H
// ============================================================================
// bit Generations: Orbital - Function Names Header
// Auto-generated decompilation naming for 468 functions
// ============================================================================

// ============================================================================
// SECTION 1: Object System (0x080001cc - 0x08000f68)
// Core game object management - planet bodies, gravity wells, collectibles
// ============================================================================

#define FUN_080001cc object_init_default          // Initialize object with default position (120,80) and screen bounds
#define FUN_08000210 object_cleanup_parents       // Clean up parent object references and optionally free
#define FUN_08000250 object_update_oam_positions   // Update OAM sprite positions from object world coordinates
#define FUN_08000440 object_set_render_size        // Set object render width and height
#define FUN_08000448 object_set_position_wrapped   // Set position with world wrapping/clamping
#define FUN_08000688 collision_aabb_test           // AABB collision test between object and rectangle
#define FUN_080008a4 object_conditional_free       // Conditionally free object memory
#define FUN_080008d0 value_lerp_toward             // Smoothly interpolate value toward target (spring)
#define FUN_08000934 sound_channel_update          // Update GBA sound channel tone/sweep registers
#define FUN_08000abc velocity_zero_init            // Zero-initialize velocity vector (6 fields)
#define FUN_08000acc object_conditional_free_2     // Conditionally free object memory (variant)
#define FUN_08000ae4 animation_frame_lookup        // Look up animation frame data by index
#define FUN_08000ba4 object_conditional_free_3     // Conditionally free object memory (variant 3)
#define FUN_08000e78 planet_object_init            // Initialize main planet/object with animation state
#define FUN_08000f68 planet_object_cleanup         // Cleanup planet object and set exit animation
#define FUN_08000f9c ui_tab_bar_update             // Update UI tab bar layout and positions

// ============================================================================
// SECTION 2: UI/HUD System (0x08001080 - 0x08001198)
// Score display, timer, number rendering
// ============================================================================

#define FUN_08001080 hud_render_number             // Render multi-digit number as OAM sprites
#define FUN_08001198 hud_score_display_update      // Update score/timer display with animations

// ============================================================================
// SECTION 3: Math/Physics Utilities (0x08001ddc - 0x080020e8)
// Vector math, distance calculations, collision primitives
// ============================================================================

#define FUN_08001ddc vector_distance_fixed12       // Calculate vector distance (fixed-point 12.20)
#define FUN_08001ed8 vector_subtract               // Vector subtraction (result = a - b)
#define FUN_08001fd0 point_in_rect_test            // Test if point is inside rectangle (with wrapping)

// ============================================================================
// SECTION 4: Animation System (0x080020e8 - 0x080025d8)
// Sprite animations, palette fades, effect channels
// ============================================================================

#define FUN_080020e8 animation_object_init         // Initialize animation object with channels
#define FUN_0800216c animation_object_cleanup      // Cleanup animation object
#define FUN_0800218c animation_system_init         // Initialize multi-layer animation system
#define FUN_080022b4 animation_palette_fade        // Animate palette color blending/fade
#define FUN_080023a0 animation_frame_advance       // Advance sprite animation frame
#define FUN_080023f4 animation_system_update       // Update all animation channels
#define FUN_08002510 animation_effect_start        // Start a new animation effect
#define FUN_08002558 animation_object_init_2       // Initialize animation object type 3

// ============================================================================
// SECTION 5: Object Type System (0x080025d8 - 0x08002ff0)
// Different object types - gravity wells, obstacles, collectibles
// ============================================================================

#define FUN_080025d8 animation_channels_cleanup    // Cleanup all animation channels on object
#define FUN_0800263c object_init_from_table        // Initialize object from level data table
#define FUN_080027ec object_gravity_well_update    // Handle object interaction with gravity well
#define FUN_08002958 level_progress_compare        // Compare level completion progress
#define FUN_080029bc gravity_acceleration_calc     // Calculate gravitational acceleration
#define FUN_08002abc orbital_motion_update         // Apply orbital motion with gravity
#define FUN_08002c34 orbital_path_update           // Update position along orbital path
#define FUN_08002d20 collision_boundary_detect     // Collision detection with world boundaries
#define FUN_08002ff0 object_store_prev_position    // Store previous position for interpolation

// ============================================================================
// SECTION 6: Object Rendering (0x080037ac - 0x08004718)
// VRAM updates, sprite rendering, size categories
// ============================================================================

#define FUN_080037ac sprite_vram_update            // Copy sprite data to VRAM for object
#define FUN_0800380c object_set_type               // Set object type / state machine transition
#define FUN_080039d4 object_size_category_update   // Update object size category from energy
#define FUN_08003ac4 orbital_params_set            // Set orbital parent, angle, and speed
#define FUN_08003bec orbital_detach                // Detach object from orbital parent
#define FUN_08003c38 orbital_velocity_calc         // Calculate orbital velocity from distance/angle
#define FUN_08003ce0 object_set_position_world     // Set position with world coordinate wrapping
#define FUN_08003e04 velocity_apply_damping        // Apply velocity damping/friction
#define FUN_08003fd0 player_input_handle           // Handle player input for object control
#define FUN_080041c4 object_render_palette_blend   // Render object with palette blending
#define FUN_0800431c goal_reached_check            // Check if object reached level goal/exit
#define FUN_08004494 direction_indicator_update    // Update direction indicator/compass
#define FUN_08004574 size_category_lookup          // Look up size category from energy value
#define FUN_08004718 object_is_moving_check        // Check if object has non-zero velocity

// ============================================================================
// SECTION 7: Object Update Dispatch (0x080049dc - 0x080050c8)
// Main per-frame update and rendering for different object types
// ============================================================================

#define FUN_080049dc object_main_update            // Main object update: physics + collision + render
#define FUN_08004c34 object_render_type_1          // Render type-1 object with screen offset
#define FUN_08004ca4 object_render_type_0          // Render type-0 object with screen offset
#define FUN_08004d18 object_render_type_4          // Render type-4 object with screen offset
#define FUN_08004d8c object_render_scaled_type_5   // Render type-5 object with scaling
#define FUN_08004e14 object_render_scaled_type_6   // Render type-6 object with scaling
#define FUN_08004e98 secondary_sprite_render       // Render secondary object sprite
#define FUN_08004f08 object_render_state_palette   // Render object with palette based on state
#define FUN_0800504c secondary_sprite_render_alt   // Render secondary sprite with offset

// ============================================================================
// SECTION 8: Collectible System (0x080050c8 - 0x08005ec4)
// Power-ups, orbs, items the player can collect
// ============================================================================

#define FUN_080050c8 collectible_init              // Initialize collectible/powerup object
#define FUN_0800513c collectible_cleanup           // Cleanup collectible object
#define FUN_0800515c collectible_set_type          // Set collectible type and initialize
#define FUN_08005214 collectible_set_event_handler // Set collectible event callback
#define FUN_0800528c gravity_well_init_type_0      // Initialize gravity well type 0
#define FUN_080052cc gravity_well_init_type_1      // Initialize gravity well type 1
#define FUN_08005314 gravity_well_init_type_2      // Initialize gravity well type 2
#define FUN_0800535c gravity_well_init_type_3      // Initialize gravity well type 3
#define FUN_080053a0 collectible_angle_calc        // Calculate angle/direction from velocity
#define FUN_080055b8 collectible_screen_test       // Test collectible collision with screen bounds
#define FUN_08005620 collectible_collect_event     // Handle collectible collection event
#define FUN_08005684 collectible_follow_player     // Update collectible position following player

// ============================================================================
// SECTION 9: Collectible Rendering (0x08005bd0 - 0x08005f84)
// Sprite rendering for collectibles and items
// ============================================================================

#define FUN_08005bd0 collectible_render_affine     // Render collectible sprite with affine transform
#define FUN_08005d10 collectible_render_simple     // Render collectible sprite (simple)
#define FUN_08005d98 collectible_render_rotated    // Render collectible with rotation/scale
#define FUN_08005eb8 get_min_object_count          // Returns 12 (minimum object count)
#define FUN_08005ebc get_max_object_count          // Returns 30 (maximum object count)
#define FUN_08005ec4 collectible_conditional_free  // Conditionally free collectible

// ============================================================================
// SECTION 10: Sound/Music Trigger (0x08005f08 - 0x08005f84)
// Music and sound effect management
// ============================================================================

#define FUN_08005f08 sound_process_triggers        // Process sound/music trigger events
#define FUN_08005f84 sound_check_track_playing     // Check if a music track is currently playing

// ============================================================================
// SECTION 11: Game State System (0x080071f8 - 0x08007be4)
// Main game state initialization, update loop, camera system
// ============================================================================

#define FUN_080071f8 game_state_init               // Initialize main game state structure
#define FUN_08007290 game_state_cleanup            // Cleanup main game state
#define FUN_08007330 game_level_init               // Initialize game level - load objects, set up physics
#define FUN_080077d8 screen_fade_set               // Set screen fade/transition effect
#define FUN_08007808 display_registers_config      // Configure GBA display registers for current mode
#define FUN_080078e0 game_main_loop_update         // Main game loop: process objects, physics, rendering
#define FUN_08007be4 camera_update_follow_player   // Update camera/viewport following player

// ============================================================================
// SECTION 12: Camera/Viewport (0x08007dc4 - 0x0800807c)
// Camera position, scrolling, viewport management
// ============================================================================

#define FUN_08007dc4 camera_target_calc            // Calculate camera target from player position
#define FUN_08007e5c camera_set_position           // Set camera/viewport position with wrapping
#define FUN_08007f68 object_sort_update            // Update object sort order for rendering

// ============================================================================
// SECTION 13: Level Loading (0x0800807c - 0x0800879c)
// Load level data, spawn objects, configure display
// ============================================================================

#define FUN_0800807c level_data_load               // Load level data and initialize objects
#define FUN_08008184 level_display_setup           // Set up display layers, load palette, configure BG
#define FUN_080083d8 level_spawn_objects           // Spawn objects from level data table
#define FUN_080085bc object_set_flags_all          // Set flags on all objects
#define FUN_080085fc object_clear_flags_all        // Clear flags on all objects

// ============================================================================
// SECTION 14: Game State Machine (0x0800879c - 0x08008d6c)
// Level select, menu, completion, AI pathfinding
// ============================================================================

#define FUN_0800879c game_state_machine            // Game state machine - level select / menu
#define FUN_080088c8 level_completion_process      // Process level completion / star rating
#define FUN_08008b68 camera_ai_pathfind            // Calculate AI pathfinding for camera/object
#define FUN_08008d6c debug_display_output          // Debug/development display output

// ============================================================================
// SECTION 15: Game Entry Points (0x08008ea0 - 0x08008f04)
// Top-level game initialization and lifecycle
// ============================================================================

#define FUN_08008ea0 game_init                     // Game initialization entry point
#define FUN_08008ec4 game_update                   // Game main loop update call
#define FUN_08008ed8 game_shutdown                  // Game cleanup and shutdown

// ============================================================================
// SECTION 16: Physics/Gravity Core (0x08008f04 - 0x0800a078)
// Object-to-object gravity, collision response, absorption
// ============================================================================

#define FUN_08008f04 physics_gravity_interaction   // Core physics: object-to-object gravity interaction
#define FUN_08009228 collision_response_resolve    // Handle object collision resolution
#define FUN_08009378 gravity_attraction_calc       // Calculate gravitational attraction between objects
#define FUN_080094b4 object_absorb_process         // Process object absorption/merger
#define FUN_0800950c collision_bounce_reflect      // Bounce/reflection collision response
#define FUN_080097d0 physics_multi_body_sim        // Complex gravity simulation with multiple bodies
#define FUN_08009c3c gravity_force_apply           // Detailed gravity force calculation and application
#define FUN_0800a078 collision_pair_init           // Initialize collision pair processing

// ============================================================================
// SECTION 17: Collision Sweep (0x0800a0fc)
// Main collision detection sweep
// ============================================================================

#define FUN_0800a0fc collision_sweep_main          // Main collision detection sweep pass

// ============================================================================
// SECTION 18: System/BIOS (0x0800e748 - 0x0800f4a4)
// Low-level system setup, DMA, timers, interrupts
// ============================================================================

#define FUN_0800e748 system_io_init                // Initialize I/O registers and system
#define FUN_0800e804 vblank_check                  // Check VBlank status flag
#define FUN_0800e81c dma_transfer_setup            // DMA transfer / memory block operations
#define FUN_0800f38c video_mode_set                // Set GBA video mode
#define FUN_0800f400 display_config                // Configure display control registers
#define FUN_0800f474 display_feature_toggle        // Enable/disable display features
#define FUN_0800f490 bg_mode_set                   // Set background tile mode
#define FUN_0800f4a4 affine_params_set             // Set up affine transformation parameters

// ============================================================================
// SECTION 19: Sprite Engine (0x0800f97c - 0x080100e0)
// OAM sprite management, rendering, affine transforms
// ============================================================================

#define FUN_0800f97c sprite_system_init            // Initialize sprite/OAM rendering system
#define FUN_0800f9dc sprite_set_position           // Set sprite screen position
#define FUN_0800fa0c sprite_render_oam             // Render sprite entries to OAM buffer
#define FUN_0800fb0c sprite_render_affine_complex // Complex sprite rendering with affine transforms

// ============================================================================
// SECTION 20: Animation Data (0x080100e0 - 0x080106a8)
// Animation playback, frame management, data loading
// ============================================================================

#define FUN_080100e0 animation_get_data            // Get animation data pointer
#define FUN_08010118 animation_check_state         // Check animation playback state
#define FUN_080101a0 animation_get_current_frame   // Get current animation frame index
#define FUN_080101d0 animation_get_flags           // Get animation flags
#define FUN_080101ec animation_set_flags           // Set animation flags
#define FUN_0801021c animation_play_init           // Initialize animation playback
#define FUN_08010260 animation_format_data         // Format animation data for playback
#define FUN_08010280 animation_copy_to_buffer      // Copy animation data to playback buffer
#define FUN_080102b0 animation_set_frame           // Set specific animation frame
#define FUN_080102cc animation_system_reset        // Reset animation system state

// ============================================================================
// SECTION 21: Sound Engine (0x080106a8 - 0x08010d04)
// Music playback, sound effects, channel management
// ============================================================================

#define FUN_080106a8 sound_system_init             // Initialize music/sound system
#define FUN_08010830 sound_bank_load               // Load sound bank data
#define FUN_08010898 data_decompress_load          // Load compressed data (LZ/ Huffman)
#define FUN_080108d0 data_decompress               // Decompress data in memory
#define FUN_08010914 sound_channels_setup          // Set up sound channels
#define FUN_08010960 sound_effects_process         // Process sound effects queue

// ============================================================================
// SECTION 22: Sound Mixer (0x08010d04 - 0x08011498)
// Sound mixing, waveform generation, DAC output
// ============================================================================

#define FUN_08010d04 sound_mixing_engine           // Sound mixing / playback engine

// ============================================================================
// SECTION 23: Display Engine (0x08011498 - 0x08011ef0)
// VRAM operations, palette, BG layers, effects
// ============================================================================

#define FUN_08011498 vram_tile_copy               // Copy tile data to VRAM
#define FUN_08011504 palette_data_copy             // Copy palette data to palette RAM
#define FUN_0801153c bg_layers_setup               // Set up BG layer configuration
#define FUN_080115a8 window_settings_config        // Configure window settings
#define FUN_080115c0 display_effects_setup         // Set up display effects (blend, brightness)
#define FUN_080117f8 vram_data_copy                // Copy data block to VRAM
#define FUN_08011824 vram_bank_set                 // Set VRAM bank configuration
#define FUN_0801184c color_effects_config          // Configure color special effects
#define FUN_08011864 blending_effects_init         // Initialize blending/alpha effects

// ============================================================================
// SECTION 24: DMA Channel Setup (0x08011bac - 0x08011d88)
// 8 DMA channels - each sets a specific bit in DMA control register
// ============================================================================

#define FUN_08011bac dma_channel_0_setup           // Setup DMA channel 0 (bit 0x02)
#define FUN_08011bf0 dma_channel_1_setup           // Setup DMA channel 1 (bit 0x04)
#define FUN_08011c34 dma_channel_2_setup           // Setup DMA channel 2 (bit 0x08)
#define FUN_08011c78 dma_channel_3_setup           // Setup DMA channel 3 (bit 0x10)
#define FUN_08011cbc dma_channel_4_setup           // Setup DMA channel 4 (bit 0x20)
#define FUN_08011d00 dma_channel_5_setup           // Setup DMA channel 5 (bit 0x40)
#define FUN_08011d44 dma_channel_6_setup           // Setup DMA channel 6 (bit 0x80)
#define FUN_08011d88 dma_channel_7_setup           // Setup DMA channel 7 (bit 0x100)

// ============================================================================
// SECTION 25: VBlank/Display Update (0x08011dd0 - 0x08011efc)
// Display refresh, OAM update, window management
// ============================================================================

#define FUN_08011dd0 display_update_mode_a         // Update display mode A
#define FUN_08011e18 display_update_mode_b         // Update display mode B
#define FUN_08011e60 display_update_mode_c         // Update display mode C
#define FUN_08011ea8 display_update_mode_d         // Update display mode D
#define FUN_08011ef0 display_reg_get               // Simple display register getter
#define FUN_08011efc vblank_update_display         // Update display registers during VBlank

// ============================================================================
// SECTION 26: Debug/Text System (0x08012084 - 0x08012b54)
// Debug text output, random numbers
// ============================================================================

#define FUN_08012084 debug_text_print              // Print debug text to screen
#define FUN_080128ec random_seed_init              // Initialize random number generator seed
#define FUN_08012974 random_number_generate        // Generate pseudo-random number (LCG)
#define FUN_08012b54 random_number_get             // Get random number (simple wrapper)

// ============================================================================
// SECTION 27: Math Utilities (0x08012fa4 - 0x0801308c)
// Basic math operations, memory helpers
// ============================================================================

#define FUN_08012fa4 math_compare_values           // Compare two values
#define FUN_08012fc4 memory_fill_loop              // Memory fill with pattern (loop)
#define FUN_08012ffc memory_copy_loop              // Memory copy (word-aligned loop)
#define FUN_08013014 identity_return               // Identity function - returns input unchanged
#define FUN_08013016 identity_return_2             // Identity function - returns input unchanged
#define FUN_08013030 counter_increment             // Increment counter at offset+0x40
#define FUN_08013032 counter_set                   // Set counter at offset+0x40 to value+1
#define FUN_0801308c music_playback_control        // Music playback control system

// ============================================================================
// SECTION 28: Sound Channel Control (0x0801342c - 0x08013ae4)
// Individual channel management, envelopes, note processing
// ============================================================================

#define FUN_0801342c sound_channel_init            // Initialize sound channel
#define FUN_0801343c sound_channel_setup           // Configure sound channel parameters
#define FUN_08013488 sound_effect_trigger          // Trigger a sound effect
#define FUN_080134b8 music_player_update           // Music player sequencer update
#define FUN_08013704 sound_status_check            // Check sound system status
#define FUN_08013720 sound_channel_stop            // Stop sound channel
#define FUN_08013754 sound_volume_set              // Set sound volume
#define FUN_080137bc sound_mute_check              // Check if sound is muted
#define FUN_080137dc sound_unmute_check            // Check if sound is unmuted
#define FUN_08013800 sound_system_update           // Sound system main update

// ============================================================================
// SECTION 29: Sound Effect System (0x08013884 - 0x08013ae4)
// Sound effect start, stop, management
// ============================================================================

#define FUN_08013884 sfx_start                     // Start playing a sound effect
#define FUN_08013950 sfx_stop                      // Stop playing a sound effect
#define FUN_080139b8 sound_engine_update           // Sound engine main update tick

// ============================================================================
// SECTION 30: Music Sequencer (0x08013ae4 - 0x08014400)
// Music track loading, sequencing, instrument processing
// ============================================================================

#define FUN_08013ae4 music_track_load              // Load music track data
#define FUN_08013c00 music_volume_set              // Set music master volume
#define FUN_08013c14 music_tempo_set               // Set music tempo/speed
#define FUN_08013c28 music_sequencer_process       // Music sequencer - process events
#define FUN_08013d20 music_channel_init            // Initialize music channel
#define FUN_08013d8c music_event_process           // Process music events
#define FUN_08013e20 music_note_process            // Process music note on/off
#define FUN_08013e74 music_instrument_setup        // Set up music instrument
#define FUN_08013ef4 music_envelope_process        // Process volume envelope
#define FUN_08013f6c music_pitch_calc              // Calculate note pitch
#define FUN_08013fec music_waveform_gen            // Generate waveform data
#define FUN_08014064 music_mixer                   // Music audio mixer

// ============================================================================
// SECTION 31: Channel Volume/Pitch (0x08014148 - 0x080148e8)
// Per-channel volume, pitch, duty cycle control
// ============================================================================

#define FUN_08014148 channel_volume_set            // Set channel volume level
#define FUN_08014188 channel_envelope_update       // Update channel envelope
#define FUN_08014250 channel_pitch_set             // Set channel pitch/frequency
#define FUN_080143ac channel_duty_set              // Set channel duty cycle
#define FUN_08014400 channel_waveform_process      // Channel waveform processing

// ============================================================================
// SECTION 32: DMA/Timer Engine (0x080148e8 - 0x08014b5c)
// Low-level DMA transfers, timer management
// ============================================================================

#define FUN_080148e8 dma_source_set                // Set DMA source address
#define FUN_0801490c dma_transfer_loop             // Execute DMA transfer (loop)
#define FUN_08014974 dma_fill                      // DMA fill memory block
#define FUN_080149e8 dma_copy                      // DMA copy memory block
#define FUN_08014a50 dma_init                      // Initialize DMA controller
#define FUN_08014a74 timer_setup                   // Set up hardware timer
#define FUN_08014ae8 timer_interrupt               // Timer interrupt handler
#define FUN_08014b5c input_system_init             // Initialize input/button system

// ============================================================================
// SECTION 33: Input System (0x08014cb4 - 0x08014ed0)
// Button reading, key repeat, input buffering
// ============================================================================

#define FUN_08014cb4 input_key_state_get           // Get current key state
#define FUN_08014cd4 input_key_repeat_get          // Get key repeat state
#define FUN_08014ce8 input_state_update            // Update input state from hardware
#define FUN_08014dd8 input_buffer_process          // Process input buffer / repeat logic
#define FUN_08014e60 input_init                    // Initialize input system

// ============================================================================
// SECTION 34: BIOS Software Interrupts (0x08014ed0 - 0x08014fa0)
// GBA BIOS SWI wrappers - math, compression, rotation
// ============================================================================

#define FUN_08014ed0 bios_div_mod                  // BIOS divide/modulo (SWI 0x06)
#define FUN_08014f34 bios_div_mod_extended         // BIOS divide/modulo extended
#define FUN_08014f6c bios_cpuset                   // BIOS CpuSet (SWI 0x0A)
#define FUN_08014f70 bios_cpuset_fast              // BIOS CpuSet fast (SWI 0x0C)
#define FUN_08014f74 bios_cpumemfill               // BIOS CpuSet fill (SWI 0x0B)
#define FUN_08014f78 bios_sqrt                     // BIOS square root (SWI 0x06)
#define FUN_08014f7c bios_sqrt_extended            // BIOS square root extended (SWI 0x06)
#define FUN_08014f84 bios_sincos                   // BIOS CalcSine (SWI 0x13)
#define FUN_08014f98 bios_atan2                    // BIOS CalcArcTan (SWI 0x12)
#define FUN_08014f9c bios_roten_scale              // BIOS RotMultiAffineSet (SWI 0x0F)
#define FUN_08014fa0 bios_bkg_affine               // BIOS BgAffineSet (SWI 0x15)

// ============================================================================
// SECTION 35: Math Library (0x08014fac - 0x0801550c)
// Fixed-point math, trigonometry, vector operations
// ============================================================================

#define FUN_08014fac math_matrix_transform         // Matrix transform operations
#define FUN_08015438 iwram_call_thunk_0            // IWRAM indirect call (jump table entry 0)
#define FUN_0801543c iwram_call_thunk_1            // IWRAM indirect call with 1 param
#define FUN_08015440 iwram_call_thunk_2            // IWRAM indirect call with 2 params
#define FUN_08015444 fixed16_sqrt                  // Fixed-point 16-bit square root
#define FUN_08015448 fixed16_vector_normalize      // Normalize fixed-point 16-bit vector
#define FUN_0801544c fixed16_dot_product           // Fixed-point 16-bit dot product
#define FUN_08015450 fixed16_cross_product         // Fixed-point 16-bit cross product
#define FUN_08015454 fixed16_matrix_multiply       // Fixed-point 16-bit matrix multiply
#define FUN_08015458 fixed16_vector_ops            // Fixed-point 16-bit vector operations
#define FUN_08015474 fixed32_divide                // Fixed-point 32-bit signed divide
#define FUN_08015508 div_zero_handler              // Division by zero handler (returns 0)

// ============================================================================
// SECTION 36: Memory Allocator (0x0801550c - 0x08015780)
// Heap management, allocation, deallocation
// ============================================================================

#define FUN_0801550c memory_allocate               // Allocate memory from heap
#define FUN_080156a4 memory_free                   // Free allocated memory
#define FUN_08015780 memory_heap_init              // Initialize memory heap system

// ============================================================================
// SECTION 37: Memory Stats/Debug (0x08015a94 - 0x08015b50)
// Memory usage queries
// ============================================================================

#define FUN_08015a94 memory_free_get               // Get amount of free memory
#define FUN_08015aa4 memory_check                  // Check memory allocation status
#define FUN_08015ae4 memory_block_size_get         // Get memory block size
#define FUN_08015af4 memory_defragment             // Defragment memory heap
#define FUN_08015b08 memory_stats_get              // Get memory usage statistics
#define FUN_08015b20 memory_debug_info             // Get memory debug information
#define FUN_08015b50 memory_alloc_from_pool        // Allocate from memory pool

// ============================================================================
// SECTION 38: Data Structure Library (0x08015b64 - 0x08015ef8)
// Linked lists, queues, sorting
// ============================================================================

#define FUN_08015b64 linked_list_init              // Initialize linked list structure
#define FUN_08015c74 linked_list_insert            // Insert element into linked list
#define FUN_08015d68 linked_list_remove            // Remove element from linked list
#define FUN_08015da0 linked_list_find              // Find element in linked list
#define FUN_08015dbc linked_list_count             // Count elements in linked list
#define FUN_08015dc8 linked_list_clear             // Clear all elements from linked list
#define FUN_08015ddc linked_list_iterate           // Iterate through linked list
#define FUN_08015dec linked_list_head              // Get head of linked list
#define FUN_08015df4 queue_init                    // Initialize queue structure
#define FUN_08015e28 queue_push                    // Push element to queue
#define FUN_08015e70 queue_pop                     // Pop element from queue
#define FUN_08015ee0 queue_peek                    // Peek at queue front element
#define FUN_08015ef8 sort_main                     // Main sort algorithm (quicksort-like)

// ============================================================================
// SECTION 39: UI Button System (0x08016640 - 0x08016f04)
// Button handling, menu system, dialog boxes
// ============================================================================

#define FUN_08016640 button_state_set              // Set button state
#define FUN_08016650 button_state_get              // Get button state
#define FUN_0801666c button_handler_setup          // Set up button press handler
#define FUN_08016710 menu_system_init              // Initialize menu system
#define FUN_08016818 dialog_box_setup              // Set up dialog box display
#define FUN_080168e8 dialog_text_render            // Render dialog text
#define FUN_080169bc value_compare                 // Compare values
#define FUN_080169d8 value_compare_alt             // Compare values (alternate)
#define FUN_080169f4 menu_item_render              // Render menu item
#define FUN_08016bc0 level_select_screen           // Level select screen handler
#define FUN_08016d80 options_screen                // Options/settings screen
#define FUN_08016eb0 settings_state_check          // Check settings state
#define FUN_08016ec8 settings_update               // Update settings values
#define FUN_08016f04 settings_save_load            // Save/load settings to SRAM

// ============================================================================
// SECTION 40: Save System (0x08017008 - 0x08017284)
// SRAM save/load, file I/O
// ============================================================================

#define FUN_08017008 save_game_data                // Save game data to SRAM
#define FUN_08017148 load_game_data                // Load game data from SRAM
#define FUN_08017284 file_io_operations            // File I/O operations

// ============================================================================
// SECTION 41: Utility Functions (0x08017338 - 0x080174e4)
// Small utility/helper functions
// ============================================================================

#define FUN_08017338 utility_set_flag              // Set a flag/boolean
#define FUN_08017354 utility_clear_flag            // Clear a flag/boolean
#define FUN_080173f8 utility_check_flag            // Check a flag/boolean
#define FUN_08017414 utility_set_value             // Set a value
#define FUN_080174b8 utility_noop                  // No-operation placeholder
#define FUN_080174e4 level_data_process            // Process level data structures

// ============================================================================
// SECTION 42: State Machine Handlers (0x08017830 - 0x080179a4)
// Game state transitions
// ============================================================================

#define FUN_08017830 state_handler_check           // Check state handler conditions
#define FUN_0801786c state_handler_transition      // State machine transition

// ============================================================================
// SECTION 43: Level Object Handlers (0x080179a4 - 0x08019574)
// 23 similar functions handling different level object types
// ============================================================================

#define FUN_080179a4 level_object_handler_0        // Level object type handler 0
#define FUN_08017ae4 level_object_handler_1        // Level object type handler 1
#define FUN_08017c14 level_object_handler_2        // Level object type handler 2
#define FUN_08017d44 level_object_handler_3        // Level object type handler 3
#define FUN_08017e74 level_object_handler_4        // Level object type handler 4
#define FUN_08017fa4 level_object_handler_init     // Initialize level object handlers
#define FUN_08017ff0 level_load_handler_0          // Level load handler variant 0
#define FUN_08018134 level_load_handler_1          // Level load handler variant 1
#define FUN_08018278 level_load_handler_2          // Level load handler variant 2
#define FUN_080183bc level_load_handler_3          // Level load handler variant 3
#define FUN_08018500 level_load_handler_4          // Level load handler variant 4
#define FUN_08018644 level_load_handler_5          // Level load handler variant 5
#define FUN_08018788 level_load_handler_6          // Level load handler variant 6
#define FUN_080188cc level_load_handler_7          // Level load handler variant 7
#define FUN_08018a10 level_load_handler_8          // Level load handler variant 8
#define FUN_08018b54 level_load_handler_9          // Level load handler variant 9
#define FUN_08018c98 level_load_handler_a          // Level load handler variant A
#define FUN_08018ddc level_load_handler_b          // Level load handler variant B
#define FUN_08018f20 level_load_handler_c          // Level load handler variant C
#define FUN_08019064 level_load_handler_d          // Level load handler variant D
#define FUN_080191a8 level_load_handler_e          // Level load handler variant E
#define FUN_080192ec level_load_handler_f          // Level load handler variant F
#define FUN_08019430 level_load_handler_10         // Level load handler variant 10

// ============================================================================
// SECTION 44: Utility Trivial Functions (0x08019574 - 0x08019c68)
// Simple getters, setters, identity functions
// ============================================================================

#define FUN_08019574 utility_get_offset            // Get value at offset
#define FUN_08019594 utility_set_offset            // Set value at offset
#define FUN_0801959c utility_get_indirect          // Get indirect value
#define FUN_080195b0 utility_set_indirect          // Set indirect value
#define FUN_080195c4 physics_system_update         // Physics system main update
#define FUN_08019720 level_object_spawn_all        // Spawn all objects for level

// ============================================================================
// SECTION 45: Object Spawn/Init Loop (0x08019ae0 - 0x08019c6c)
// Object creation and initialization loops
// ============================================================================

#define FUN_08019ae0 object_spawn_loop             // Loop through and spawn objects
#define FUN_08019b28 object_init_loop              // Initialize spawned objects
#define FUN_08019b88 object_setup_loop             // Set up object properties
#define FUN_08019c10 object_config_loop            // Configure object parameters
#define FUN_08019c64 noop_return                   // No-operation return
#define FUN_08019c68 noop_return_2                 // No-operation return

// ============================================================================
// SECTION 46: Object State Loop (0x08019c6c - 0x08019e14)
// Object state management loops
// ============================================================================

#define FUN_08019c6c object_state_check            // Check object state conditions
#define FUN_08019c98 object_state_loop_a           // Object state processing loop A
#define FUN_08019cf4 object_state_loop_b           // Object state processing loop B
#define FUN_08019d38 object_state_loop_c           // Object state processing loop C
#define FUN_08019d58 object_state_conditional      // Object state conditional update
#define FUN_08019da4 object_state_iterate          // Iterate object states

// ============================================================================
// SECTION 47: Object Utility (0x08019e14 - 0x08019f74)
// Object helpers, score, completion
// ============================================================================

#define FUN_08019e14 object_util_0                 // Object utility function 0
#define FUN_08019e28 object_util_1                 // Object utility function 1
#define FUN_08019e3c object_util_2                 // Object utility conditional
#define FUN_08019e54 object_util_3                 // Object utility function 3
#define FUN_08019e78 level_completion_check        // Check level completion conditions
#define FUN_08019ec0 score_calculation             // Calculate level score

// ============================================================================
// SECTION 48: Score/Level Select (0x08019f44 - 0x0801a1d0)
// Score handling, level selection logic
// ============================================================================

#define FUN_08019f44 score_update                  // Update score value
#define FUN_08019f50 score_display                 // Display score
#define FUN_08019f74 level_select_logic            // Level select screen logic
#define FUN_08019fc0 level_load_logic              // Level loading logic
#define FUN_0801a074 level_util_0                  // Level utility function 0
#define FUN_0801a0a8 level_util_1                  // Level utility function 1
#define FUN_0801a0f8 level_util_2                  // Level utility function 2
#define FUN_0801a134 level_util_3                  // Level utility function 3
#define FUN_0801a14c level_util_4                  // Level utility conditional
#define FUN_0801a178 level_util_5                  // Level utility function 5
#define FUN_0801a19c level_util_6                  // Level utility function 6
#define FUN_0801a1d0 level_util_7                  // Level utility function 7

// ============================================================================
// SECTION 49: Particle/Effects System (0x0801a1dc - 0x0801a504)
// Visual effects, particles, transitions
// ============================================================================

#define FUN_0801a1dc effects_system_update         // Effects/particle system update
#define FUN_0801a39c effects_render                // Render effects/particles
#define FUN_0801a45c effects_util_0                // Effects utility function 0
#define FUN_0801a47c effects_util_1                // Effects utility function 1
#define FUN_0801a4f0 effects_util_2                // Effects utility function 2

// ============================================================================
// SECTION 50: Major Game Systems (0x0801a504 - 0x0801c4ba)
// Large system functions - rendering pipeline, physics pipeline
// ============================================================================

#define FUN_0801a504 rendering_pipeline_main       // Main rendering pipeline (596 lines)
#define FUN_0801a5bc physics_pipeline_main         // Main physics/collision pipeline (502 lines)

// ============================================================================
// SECTION 51: Rendering Utilities (0x0801b374 - 0x0801b7d0)
// Rendering helper functions
// ============================================================================

#define FUN_0801b374 render_util_0                 // Rendering utility function 0
#define FUN_0801b428 render_util_1                 // Rendering utility function 1
#define FUN_0801b440 render_util_2                 // Rendering utility function 2
#define FUN_0801b454 render_util_3                 // Rendering utility function 3
#define FUN_0801b464 render_util_4                 // Rendering utility function 4
#define FUN_0801b558 render_sincos_util            // Rendering sin/cos utility
#define FUN_0801b570 render_sincos_util_2          // Rendering sin/cos utility 2
#define FUN_0801b5c8 render_state_init             // Initialize render state
#define FUN_0801b674 render_object_loop            // Render objects in loop

// ============================================================================
// SECTION 52: Main Render/Physics (0x0801b7d0)
// The largest function - core game processing
// ============================================================================

#define FUN_0801b7d0 main_game_processing          // Main game processing (701 lines) - render+physics

// ============================================================================
// SECTION 53: Post-Processing (0x0801c4ba - 0x0801c990)
// Post-render processing, effects application
// ============================================================================

#define FUN_0801c4ba post_render_return            // Post-render return
#define FUN_0801c4c8 post_render_sqrt_util         // Post-render square root utility
#define FUN_0801c55c post_render_util_0            // Post-render utility 0
#define FUN_0801c594 post_render_util_1            // Post-render utility 1
#define FUN_0801c5c4 post_render_loop              // Post-render processing loop
#define FUN_0801c638 post_render_util_2            // Post-render utility 2
#define FUN_0801c648 post_render_util_3            // Post-render utility 3
#define FUN_0801c658 post_render_util_4            // Post-render utility 4
#define FUN_0801c6b8 post_render_complex           // Post-render complex processing
#define FUN_0801c8e4 post_render_loop_2            // Post-render processing loop 2
#define FUN_0801c924 post_render_util_5            // Post-render utility 5
#define FUN_0801c960 post_render_return_2          // Post-render return
#define FUN_0801c968 post_render_util_6            // Post-render utility 6
#define FUN_0801c980 post_render_util_7            // Post-render utility 7
#define FUN_0801c990 post_render_state_init        // Initialize post-render state

// ============================================================================
// SECTION 54: Buffer Processing (0x0801ca6c - 0x0801cf98)
// Data buffer processing and transformation
// ============================================================================

#define FUN_0801ca6c buffer_util_0                 // Buffer utility 0
#define FUN_0801ca98 buffer_process_loop           // Buffer processing loop
#define FUN_0801cb18 buffer_transform              // Buffer data transformation
#define FUN_0801cb70 buffer_util_1                 // Buffer utility 1
#define FUN_0801cb88 buffer_copy_loop              // Buffer copy loop
#define FUN_0801cc20 buffer_sincos_transform       // Buffer sin/cos transformation
#define FUN_0801cca4 buffer_util_2                 // Buffer utility 2
#define FUN_0801ccfc buffer_util_3                 // Buffer utility 3
#define FUN_0801cd80 buffer_util_4                 // Buffer utility 4
#define FUN_0801cd94 buffer_process_large          // Large buffer processing
#define FUN_0801cf00 buffer_util_5                 // Buffer utility 5
#define FUN_0801cf98 buffer_transform_loop         // Buffer transformation loop

// ============================================================================
// SECTION 55: Data Processing (0x0801d038 - 0x0801d8c8)
// Data format conversion and processing
// ============================================================================

#define FUN_0801d038 data_process_loop_a           // Data processing loop A
#define FUN_0801d078 data_process_loop_b           // Data processing loop B
#define FUN_0801d168 data_util_0                   // Data utility 0
#define FUN_0801d1b4 data_util_1                   // Data utility 1
#define FUN_0801d270 data_util_2                   // Data utility 2
#define FUN_0801d358 data_util_3                   // Data utility 3
#define FUN_0801d3a8 data_loop                     // Data processing loop
#define FUN_0801d460 data_util_4                   // Data utility 4
#define FUN_0801d4a0 data_util_5                   // Data utility 5
#define FUN_0801d4f0 data_util_6                   // Data utility 6
#define FUN_0801d520 data_util_7                   // Data utility 7
#define FUN_0801d578 data_util_8                   // Data utility 8
#define FUN_0801d5a4 data_util_9                   // Data utility 9
#define FUN_0801d5d0 data_util_a                   // Data utility A
#define FUN_0801d600 data_util_b                   // Data utility B
#define FUN_0801d630 data_util_c                   // Data utility C
#define FUN_0801d6a8 data_util_d                   // Data utility D
#define FUN_0801d7f0 data_util_e                   // Data utility E
#define FUN_0801d8c8 data_process_large_loop       // Large data processing loop

// ============================================================================
// SECTION 56: Object Processing (0x0801db34 - 0x0801dfcc)
// Object data processing and transformation
// ============================================================================

#define FUN_0801db34 object_process_0              // Object processing function 0
#define FUN_0801db64 object_process_1              // Object processing function 1
#define FUN_0801db9c object_process_main           // Object processing main function
#define FUN_0801de44 object_process_loop           // Object processing loop
#define FUN_0801dfcc object_util_final             // Object final utility

// ============================================================================
// SECTION 57: Object Type Handlers (0x0801e0cc - 0x0801ec60)
// Specific object type initialization and behavior
// ============================================================================

#define FUN_0801e0cc object_type_init_0            // Object type initialization 0
#define FUN_0801e0f8 object_type_behavior_0        // Object type behavior handler 0
#define FUN_0801e144 object_type_behavior_1        // Object type behavior handler 1
#define FUN_0801e190 object_type_behavior_2        // Object type behavior handler 2
#define FUN_0801e1dc object_type_behavior_3        // Object type behavior handler 3
#define FUN_0801e228 object_type_behavior_4        // Object type behavior handler 4
#define FUN_0801e274 object_type_behavior_5        // Object type behavior handler 5
#define FUN_0801e2c0 object_type_update_loop       // Object type update loop
#define FUN_0801e33c object_type_util              // Object type utility
#define FUN_0801e3b0 object_type_util_2            // Object type utility 2
#define FUN_0801e3d8 object_type_util_3            // Object type utility 3
#define FUN_0801e444 object_render_process         // Object rendering process
#define FUN_0801e4fc object_render_loop            // Object rendering loop
#define FUN_0801e578 object_render_complex         // Object complex rendering

// ============================================================================
// SECTION 58: Object State Utilities (0x0801e6f4 - 0x0801ec18)
// Object state management helpers
// ============================================================================

#define FUN_0801e6f4 object_state_util_0           // Object state utility 0
#define FUN_0801e720 object_state_util_1           // Object state utility 1
#define FUN_0801e754 object_state_complex          // Object state complex processing
#define FUN_0801e8b8 object_state_loop             // Object state processing loop
#define FUN_0801e9a4 object_state_util_2           // Object state utility 2
#define FUN_0801ea88 object_type_init_1            // Object type initialization 1
#define FUN_0801eab0 object_type_init_2            // Object type initialization 2
#define FUN_0801eaf8 object_type_init_3            // Object type initialization 3
#define FUN_0801eb40 object_type_init_4            // Object type initialization 4
#define FUN_0801eb88 object_type_init_5            // Object type initialization 5
#define FUN_0801ebd0 object_type_init_6            // Object type initialization 6
#define FUN_0801ec18 object_type_init_7            // Object type initialization 7

// ============================================================================
// SECTION 59: Object Update Loops (0x0801ec60 - 0x0801ed64)
// Object per-frame update loops
// ============================================================================

#define FUN_0801ec60 object_update_loop_a          // Object update loop A
#define FUN_0801ecc0 object_update_loop_b          // Object update loop B
#define FUN_0801ed28 object_update_util_0          // Object update utility 0
#define FUN_0801ed4c object_update_util_1          // Object update utility 1
#define FUN_0801ed64 object_update_util_2          // Object update utility 2

// ============================================================================
// SECTION 60: Math Utility Functions (0x0801ed90 - 0x0801ee64)
// Simple math and linked list operations
// ============================================================================

#define FUN_0801ed90 math_util_0                   // Math utility function 0
#define FUN_0801edc4 math_util_1                   // Math utility function 1
#define FUN_0801ee34 math_util_2                   // Math utility function 2
#define FUN_0801ee4c linked_list_head_init         // Initialize linked list with head sentinel
#define FUN_0801ee64 linked_list_conditional_free  // Conditionally free linked list node

// ============================================================================
// SECTION 61: Node/List Operations (0x0801ef70 - 0x0801f19c)
// Linked list node operations, simple utilities
// ============================================================================

#define FUN_0801ef70 node_util_0                   // Node utility 0
#define FUN_0801ef90 node_util_1                   // Node utility 1
#define FUN_0801efb8 node_swap                     // Swap two node pointers
#define FUN_0801efdc node_set_next                 // Set node next pointer
#define FUN_0801efe8 node_set_prev                 // Set node previous pointer
#define FUN_0801eff4 node_util_2                   // Node utility 2
#define FUN_0801f014 node_init                     // Initialize node with value
#define FUN_0801f030 node_util_3                   // Node utility 3
#define FUN_0801f058 node_util_4                   // Node utility 4
#define FUN_0801f078 node_util_5                   // Node utility 5
#define FUN_0801f0a0 node_util_6                   // Node utility 6
#define FUN_0801f0bc node_util_7                   // Node utility 7
#define FUN_0801f11c node_util_8                   // Node utility 8
#define FUN_0801f19c node_util_9                   // Node utility 9
#define FUN_0801f1bc node_util_a                   // Node utility A

#endif // FUNCTION_NAMES_H
