+# If the trace is complete, we can infer addresses using the return value from
+# newwin, etc. But if it is incomplete, we can still check for special cases
+# such as SCREEN* and WINDOW* parameters. In this table, the type for the
+# first parameter is encoded, relying upon an ncurses programming convention:
+our %known_p1 = (
+ TransformLine => $tSCREEN,
+ _nc_console_read => $tSCREEN,
+ _nc_freewin => $tWINDOW,
+ _nc_initscr => $tSCREEN,
+ _nc_makenew => $tSCREEN,
+ _nc_mingw_console_read => $tSCREEN,
+ _nc_reset_colors => $tSCREEN,
+ _nc_scroll_optimize => $tSCREEN,
+ _nc_tinfo => $tSCREEN,
+ _nc_tinfo_mvcur => $tSCREEN,
+ _nc_wgetch => $tWINDOW,
+ adjust_window => $tWINDOW,
+ assume_default_colors => $tSCREEN,
+ attr_get => $tWINDOW,
+ baudrate => $tSCREEN,
+ beep => $tSCREEN,
+ border_set => $tWINDOW,
+ bottom_panel => $tPANEL,
+ bottom_panel => $tPANEL,
+ box => $tWINDOW,
+ box_set => $tWINDOW,
+ can_change_color => $tSCREEN,
+ cbreak => $tSCREEN,
+ ceiling_panel => $tSCREEN,
+ clearok => $tWINDOW,
+ color_content => $tSCREEN,
+ copywin => $tWINDOW,
+ current_item => $tMENU,
+ curs_set => $tSCREEN,
+ decrease_size => $tSCREEN,
+ def_prog_mode => $tSCREEN,
+ def_shell_mode => $tSCREEN,
+ define_key => $tSCREEN,
+ del_curterm => $tSCREEN,
+ del_panel => $tPANEL,
+ del_panel => $tPANEL,
+ delay_output => $tSCREEN,
+ delscreen => $tSCREEN,
+ delwin => $tWINDOW,
+ derwin => $tWINDOW,
+ doupdate => $tSCREEN,
+ dup_field => $tFIELD,
+ dupwin => $tWINDOW,
+ echo => $tSCREEN,
+ endwin => $tSCREEN,
+ erasechar => $tSCREEN,
+ field_opts_off => $tFIELD,
+ field_opts_on => $tFIELD,
+ filter => $tSCREEN,
+ flash => $tSCREEN,
+ flushinp => $tSCREEN,
+ form_driver => $tFORM,
+ form_driver_w => $tFORM,
+ form_opts_off => $tFORM,
+ form_opts_on => $tFORM,
+ free_field => $tFIELD,
+ free_form => $tFORM,
+ free_item => $tITEM,
+ free_menu => $tMENU,
+ getattrs => $tWINDOW,
+ getbegx => $tWINDOW,
+ getbegy => $tWINDOW,
+ getbkgd => $tWINDOW,
+ getcurx => $tWINDOW,
+ getcury => $tWINDOW,
+ getmaxx => $tWINDOW,
+ getmaxy => $tWINDOW,
+ getmouse => $tSCREEN,
+ getparx => $tWINDOW,
+ getpary => $tWINDOW,
+ ground_panel => $tSCREEN,
+ halfdelay => $tSCREEN,
+ has_ic => $tSCREEN,
+ has_il => $tSCREEN,
+ has_key => $tSCREEN,
+ hide_panel => $tPANEL,
+ hide_panel => $tPANEL,
+ idcok => $tWINDOW,
+ idlok => $tWINDOW,
+ immedok => $tWINDOW,
+ increase_size => $tSCREEN,
+ init_color => $tSCREEN,
+ init_pair => $tSCREEN,
+ intrflush => $tSCREEN,
+ is_cleared => $tWINDOW,
+ is_idcok => $tWINDOW,
+ is_idlok => $tWINDOW,
+ is_immedok => $tWINDOW,
+ is_keypad => $tWINDOW,
+ is_leaveok => $tWINDOW,
+ is_linetouched => $tWINDOW,
+ is_nodelay => $tWINDOW,
+ is_notimeout => $tWINDOW,
+ is_pad => $tWINDOW,
+ is_scrollok => $tWINDOW,
+ is_subwin => $tWINDOW,
+ is_syncok => $tWINDOW,
+ is_term_resized => $tSCREEN,
+ is_wintouched => $tWINDOW,
+ item_count => $tMENU,
+ item_description => $tITEM,
+ item_index => $tITEM,
+ item_init => $tMENU,
+ item_name => $tITEM,
+ item_opts => $tITEM,
+ item_opts_off => $tITEM,
+ item_opts_on => $tITEM,
+ item_term => $tMENU,
+ item_userptr => $tITEM,
+ item_value => $tITEM,
+ item_visible => $tITEM,
+ key_defined => $tSCREEN,
+ keybound => $tSCREEN,
+ keyok => $tSCREEN,
+ keypad => $tWINDOW,
+ killchar => $tSCREEN,
+ leaveok => $tWINDOW,
+ link_field => $tFIELD,
+ longname => $tSCREEN,
+ menu_back => $tMENU,
+ menu_driver => $tMENU,
+ menu_fore => $tMENU,
+ menu_format => $tMENU,
+ menu_grey => $tMENU,
+ menu_init => $tMENU,
+ menu_items => $tMENU,
+ menu_mark => $tMENU,
+ menu_opts => $tMENU,
+ menu_opts_off => $tMENU,
+ menu_opts_on => $tMENU,
+ menu_pad => $tMENU,
+ menu_pattern => $tMENU,
+ menu_spacing => $tMENU,
+ menu_sub => $tMENU,
+ menu_term => $tMENU,
+ menu_userptr => $tMENU,
+ menu_win => $tMENU,
+ meta => $tWINDOW,
+ mouseinterval => $tSCREEN,
+ mousemask => $tSCREEN,
+ move_field => $tFIELD,
+ move_panel => $tPANEL,
+ move_panel => $tPANEL,
+ mvcur => $tSCREEN,
+ mvderwin => $tWINDOW,
+ mvwadd_wch => $tWINDOW,
+ mvwadd_wchnstr => $tWINDOW,
+ mvwadd_wchstr => $tWINDOW,
+ mvwaddch => $tWINDOW,
+ mvwaddchnstr => $tWINDOW,
+ mvwaddchstr => $tWINDOW,
+ mvwaddnstr => $tWINDOW,
+ mvwaddnwstr => $tWINDOW,
+ mvwaddstr => $tWINDOW,
+ mvwaddwstr => $tWINDOW,
+ mvwchgat => $tWINDOW,
+ mvwdelch => $tWINDOW,
+ mvwget_wch => $tWINDOW,
+ mvwget_wstr => $tWINDOW,
+ mvwgetch => $tWINDOW,
+ mvwgetn_wstr => $tWINDOW,
+ mvwgetnstr => $tWINDOW,
+ mvwgetstr => $tWINDOW,
+ mvwhline => $tWINDOW,
+ mvwhline_set => $tWINDOW,
+ mvwin => $tWINDOW,
+ mvwin_wch => $tWINDOW,
+ mvwin_wchnstr => $tWINDOW,
+ mvwin_wchstr => $tWINDOW,
+ mvwinch => $tWINDOW,
+ mvwinchnstr => $tWINDOW,
+ mvwinchstr => $tWINDOW,
+ mvwins_nwstr => $tWINDOW,
+ mvwins_wch => $tWINDOW,
+ mvwins_wstr => $tWINDOW,
+ mvwinsch => $tWINDOW,
+ mvwinsnstr => $tWINDOW,
+ mvwinsstr => $tWINDOW,
+ mvwinstr => $tWINDOW,
+ mvwinwstr => $tWINDOW,
+ mvwvline => $tWINDOW,
+ mvwvline_set => $tWINDOW,
+ new_panel => $tWINDOW,
+ new_panel => $tWINDOW,
+ newpad => $tSCREEN,
+ newterm => $tSCREEN,
+ newwin => $tSCREEN,
+ nl => $tSCREEN,
+ nocbreak => $tSCREEN,
+ nodelay => $tWINDOW,
+ noecho => $tSCREEN,
+ nofilter => $tSCREEN,
+ nonl => $tSCREEN,
+ noqiflush => $tSCREEN,
+ noraw => $tSCREEN,
+ notimeout => $tWINDOW,
+ overlap => $tWINDOW,
+ overlay => $tWINDOW,
+ overwrite => $tWINDOW,
+ pair_content => $tSCREEN,
+ panel_above => $tPANEL,
+ panel_above => $tPANEL,
+ panel_below => $tPANEL,
+ panel_below => $tPANEL,
+ panel_hidden => $tPANEL,
+ panel_hidden => $tPANEL,
+ panel_userptr => $tPANEL,
+ panel_userptr => $tPANEL,
+ panel_window => $tPANEL,
+ panel_window => $tPANEL,
+ pecho_wchar => $tWINDOW,
+ pechochar => $tWINDOW,
+ pnoutrefresh => $tWINDOW,
+ pos_form_cursor => $tFORM,
+ pos_menu_cursor => $tMENU,
+ post_form => $tFORM,
+ post_menu => $tMENU,
+ putwin => $tWINDOW,
+ qiflush => $tSCREEN,
+ raw => $tSCREEN,
+ redrawwin => $tWINDOW,
+ replace_panel => $tPANEL,
+ replace_panel => $tPANEL,
+ reset_prog_mode => $tSCREEN,
+ reset_shell_mode => $tSCREEN,
+ resetty => $tSCREEN,
+ resize_term => $tSCREEN,
+ resizeterm => $tSCREEN,
+ restartterm => $tSCREEN,
+ ripoffline => $tSCREEN,
+ savetty => $tSCREEN,
+ scale_menu => $tMENU,
+ scr_init => $tSCREEN,
+ scr_restore => $tSCREEN,
+ scr_set => $tSCREEN,
+ scroll => $tWINDOW,
+ scrollok => $tWINDOW,
+ set_current_field => $tFORM,
+ set_current_item => $tMENU,
+ set_curterm => $tTERMINAL,
+ set_field_back => $tFIELD,
+ set_field_buffer => $tFIELD,
+ set_field_fore => $tFIELD,
+ set_field_init => $tFORM,
+ set_field_just => $tFIELD,
+ set_field_opts => $tFIELD,
+ set_field_pad => $tFIELD,
+ set_field_status => $tFIELD,
+ set_field_term => $tFORM,
+ set_field_type => $tFIELD,
+ set_field_userptr => $tFIELD,
+ set_form_fields => $tFORM,
+ set_form_init => $tFORM,
+ set_form_opts => $tFORM,
+ set_form_page => $tFORM,
+ set_form_sub => $tFORM,
+ set_form_term => $tFORM,
+ set_form_userptr => $tFORM,
+ set_form_win => $tFORM,
+ set_item_init => $tMENU,
+ set_item_opts => $tITEM,
+ set_item_term => $tMENU,
+ set_item_userptr => $tITEM,
+ set_item_value => $tITEM,
+ set_menu_back => $tMENU,
+ set_menu_fore => $tMENU,
+ set_menu_format => $tMENU,
+ set_menu_grey => $tMENU,
+ set_menu_init => $tMENU,
+ set_menu_items => $tMENU,
+ set_menu_mark => $tMENU,
+ set_menu_opts => $tMENU,
+ set_menu_pad => $tMENU,
+ set_menu_pattern => $tMENU,
+ set_menu_spacing => $tMENU,
+ set_menu_sub => $tMENU,
+ set_menu_term => $tMENU,
+ set_menu_userptr => $tMENU,
+ set_menu_win => $tMENU,
+ set_new_page => $tFIELD,
+ set_panel_userptr => $tPANEL,
+ set_panel_userptr => $tPANEL,
+ set_term => $tSCREEN,
+ set_top_row => $tMENU,
+ show_panel => $tPANEL,
+ show_panel => $tPANEL,
+ slk_attr => $tSCREEN,
+ slk_attr_set => $tSCREEN,
+ slk_attroff => $tSCREEN,
+ slk_attron => $tSCREEN,
+ slk_attrset => $tSCREEN,
+ slk_clear => $tSCREEN,
+ slk_color => $tSCREEN,
+ slk_init => $tSCREEN,
+ slk_label => $tSCREEN,
+ slk_noutrefresh => $tSCREEN,
+ slk_refresh => $tSCREEN,
+ slk_restore => $tSCREEN,
+ slk_set => $tSCREEN,
+ slk_touch => $tSCREEN,
+ start_color => $tSCREEN,
+ subwin => $tWINDOW,
+ syncok => $tWINDOW,
+ termattrs => $tSCREEN,
+ termname => $tSCREEN,
+ tgetflag => $tSCREEN,
+ tgetnum => $tSCREEN,
+ tigetflag => $tSCREEN,
+ tigetnum => $tSCREEN,
+ tigetstr => $tSCREEN,
+ tinfo => $tSCREEN,
+ top_panel => $tPANEL,
+ top_panel => $tPANEL,
+ top_row => $tMENU,
+ touchline => $tWINDOW,
+ touchwin => $tWINDOW,
+ typeahead => $tSCREEN,
+ unfocus_current_field => $tFORM,
+ unget_wch => $tSCREEN,
+ ungetch => $tSCREEN,
+ ungetmouse => $tSCREEN,
+ unpost_form => $tFORM,
+ unpost_menu => $tMENU,
+ untouchwin => $tWINDOW,
+ update_panels_sp => $tSCREEN,
+ use_default_colors => $tSCREEN,
+ use_env => $tSCREEN,
+ use_legacy_coding => $tSCREEN,
+ use_screen => $tSCREEN,
+ use_tioctl => $tSCREEN,
+ use_window => $tWINDOW,
+ vidattr => $tSCREEN,
+ vidputs => $tSCREEN,
+ vw_printw => $tWINDOW,
+ vwprintw => $tWINDOW,
+ wadd_wch => $tWINDOW,
+ wadd_wchnstr => $tWINDOW,
+ wadd_wchstr => $tWINDOW,
+ waddch => $tWINDOW,
+ waddchnstr => $tWINDOW,
+ waddchstr => $tWINDOW,
+ waddnstr => $tWINDOW,
+ waddnwstr => $tWINDOW,
+ waddstr => $tWINDOW,
+ waddwstr => $tWINDOW,
+ wattr_get => $tWINDOW,
+ wattr_off => $tWINDOW,
+ wattr_on => $tWINDOW,
+ wattr_set => $tWINDOW,
+ wattroff => $tWINDOW,
+ wattron => $tWINDOW,
+ wattrset => $tWINDOW,
+ wbkgd => $tWINDOW,
+ wbkgdset => $tWINDOW,
+ wborder => $tWINDOW,
+ wborder_set => $tWINDOW,
+ wchgat => $tWINDOW,
+ wclear => $tWINDOW,
+ wclrtobot => $tWINDOW,
+ wclrtoeol => $tWINDOW,
+ wcolor_set => $tWINDOW,
+ wcursyncup => $tWINDOW,
+ wdelch => $tWINDOW,
+ wdeleteln => $tWINDOW,
+ wechochar => $tWINDOW,
+ wenclose => $tWINDOW,
+ werase => $tWINDOW,
+ wget_wch => $tWINDOW,
+ wget_wstr => $tWINDOW,
+ wgetbkgrnd => $tWINDOW,
+ wgetch => $tWINDOW,
+ wgetch_events => $tWINDOW,
+ wgetdelay => $tWINDOW,
+ wgetn_wstr => $tWINDOW,
+ wgetnstr => $tWINDOW,
+ wgetparent => $tWINDOW,
+ wgetscrreg => $tWINDOW,
+ wgetstr => $tWINDOW,
+ whline => $tWINDOW,
+ whline_set => $tWINDOW,
+ win_wch => $tWINDOW,
+ win_wchnstr => $tWINDOW,
+ win_wchstr => $tWINDOW,
+ winch => $tWINDOW,
+ winchnstr => $tWINDOW,
+ winchstr => $tWINDOW,
+ winnstr => $tWINDOW,
+ winnwstr => $tWINDOW,
+ wins_nwstr => $tWINDOW,
+ wins_wch => $tWINDOW,
+ wins_wstr => $tWINDOW,
+ winsch => $tWINDOW,
+ winsdelln => $tWINDOW,
+ winsertln => $tWINDOW,
+ winsnstr => $tWINDOW,
+ winsstr => $tWINDOW,
+ winstr => $tWINDOW,
+ winwstr => $tWINDOW,
+ wmouse_trafo => $tWINDOW,
+ wmove => $tWINDOW,
+ wnoutrefresh => $tWINDOW,
+ wprintw => $tWINDOW,
+ wredrawln => $tWINDOW,
+ wrefresh => $tWINDOW,
+ wresize => $tWINDOW,
+ wscrl => $tWINDOW,
+ wsetscrreg => $tWINDOW,
+ wstandend => $tWINDOW,
+ wstandout => $tWINDOW,
+ wsyncdown => $tWINDOW,
+ wsyncup => $tWINDOW,
+ wtimeout => $tWINDOW,
+ wtouchln => $tWINDOW,
+ wvline => $tWINDOW,
+);
+
+our $fld_nums = 0;
+our $frm_nums = 0;
+our $itm_nums = 0;
+our $mnu_nums = 0;
+our $pan_nums = 0;