Word Unperfect
public
Read
Owner: themaster
Branch: main
Commits: 0
Git CLI clone URL
git clone https://www.xt-emporium.com/git/word-unperfect.git
Fullscreen desktop URL
Code
Commits
History
Branches
Bug Reports
Discussions
Compare
Settings
word-unperfect
/
rev
/
wp_parser_replay.c
File editor
#include "wp_parser_replay.h" #include "wp_record_stream.h" #include "wp_layout_state.h" #include "wp_span_metrics.h" #include <stdint.h> #ifndef POPCOUNT #define POPCOUNT(x) ((((x)>>0)&1)+(((x)>>1)&1)+(((x)>>2)&1)+(((x)>>3)&1)+(((x)>>4)&1)+(((x)>>5)&1)+(((x)>>6)&1)+(((x)>>7)&1)) #endif /* Ghidra stack placeholders for flag packing in parse_next_command_or_word. */ static unsigned char wp_ghidra_stack_base; static unsigned char wp_ghidra_stack_slot; static int8_t __cdecl16near parser_replay_secondary_probe_and_copy_words(WpLayoutGlobals *wl); static uint16_t __cdecl16near layout_recompute_cursor_window_from_measure(WpLayoutGlobals *wl); extern void __cdecl16near layout_record_wide_temp_lo_hi_route_stage_3(WpLayoutGlobals *wl); extern void __cdecl16near layout_render_dirty_or_flags(WpLayoutGlobals *wl); extern uint8_t __cdecl16near consume_and_prepend_byte_input(WpLayoutGlobals *wl); extern uint8_t __cdecl16near layout_scan_memory_stride_3_for_char(WpLayoutGlobals *wl); extern void __cdecl16near layout_reconcile_line_build_span_words(WpLayoutGlobals *wl); extern uint16_t __cdecl16near consume_and_prepend_word_secondary(WpLayoutGlobals *wl); extern uint32_t __cdecl16near layout_merge_secondary_into_primary_cursor(WpLayoutGlobals *wl); extern void __cdecl16near layout_position_gate_advance_helper(WpLayoutGlobals *wl); extern void __cdecl16near find_matching_char_in_sequence(WpLayoutGlobals *wl); extern void __cdecl16near set_mode_or_status_bits(WpLayoutGlobals *wl); extern uint16_t __cdecl16near layout_cursor_metric_fold(WpLayoutGlobals *wl); extern void __cdecl16near layout_abort_if_heap_flag_1(WpLayoutGlobals *wl); extern uint32_t layout_compact_init(WpLayoutGlobals *wl); extern int __cdecl16near layout_get_active_span_total_width(WpLayoutGlobals *wl); extern void layout_passthrough_state_flags(WpLayoutGlobals *wl); extern void __cdecl16near layout_byte_classify_proxy(WpLayoutGlobals *wl); extern uint8_t __cdecl16near layout_variant_balance_check(WpLayoutGlobals *wl); extern uint32_t __cdecl16near layout_scale_span_width_q8(WpLayoutGlobals *wl); extern void __cdecl16near layout_postprocess_word_copy(WpLayoutGlobals *wl); extern void route_far_jump_shell_segment_proxy(WpLayoutGlobals *wl); extern void shell_shift_primary_record_window_by_2kb_carry_gated(WpLayoutGlobals *wl, uint16_t ax); extern int16_t __cdecl16near layout_line_start_align(WpLayoutGlobals *wl); extern void __cdecl16near layout_reset_cursor_and_record_aux(WpLayoutGlobals *wl); extern uint16_t __cdecl16near layout_restore_flag_state(WpLayoutGlobals *wl); extern uint32_t __cdecl16near layout_add_metrics_line_accum_to_variant_anchor_and_total(WpLayoutGlobals *wl); extern uint32_t __cdecl16near layout_add_ax_to_variant_anchor_and_total(WpLayoutGlobals *wl); extern void shell_adjust_byte_at_di_plus2_by_dh(WpLayoutGlobals *wl); extern uint16_t __cdecl16near layout_clear_measured_span_emit_state(WpLayoutGlobals *wl); extern void __cdecl16near call_2377_if_layout_state_gate_passes(WpLayoutGlobals *wl); extern uint32_t wp_pending_pair_le_5208(WpLayoutGlobals *wl); extern void store_layout_state_snapshot(WpLayoutGlobals *wl); extern void restore_layout_state_record(WpLayoutGlobals *wl, uint8_t al); extern void append_layout_state_record(WpLayoutGlobals *wl, uint8_t al); /* Function: validate_or_adjust_parser_state @ 1000:464d */ uint16_t __cdecl16near validate_or_adjust_parser_state(WpLayoutGlobals *wl, uint8_t in_CF) { uint8_t uVar1; uint8_t uVar2; uint8_t bVar3; uint8_t uVar4; uint8_t uVar5; uint16_t uVar6; uint16_t uVar7; uint16_t uVar8; uint16_t uVar9; uint16_t uVar10; uint16_t uVar11; uint16_t uVar12; uint16_t uVar13; uint16_t uVar14; uint16_t uVar15; int8_t cVar16; uint8_t bVar17; uint16_t uVar18; uint8_t in_CL; uint16_t uVar19; uint16_t extraout_DX; uint16_t extraout_DX_00; uint16_t extraout_DX_01; uint16_t extraout_DX_02; uint16_t extraout_DX_03; uint16_t extraout_DX_04; uint16_t extraout_DX_05; uint16_t uVar20; uint16_t unaff_SI = 0; uint8_t uVar21; bool bVar22; int8_t cVar23; uint32_t uVar24; layout_record_wide_temp_lo_hi_route_stage_3(wl); uVar18 = (uint16_t)0; if ((((!(bool)in_CF) || ((wl->parser_reentry_guard & 2) != 0)) || ((wl->emit_flags & 2) != 0)) || ((wl->record_replay_depth & 0x8f) != 0)) { return uVar18; } wl->record_replay_depth = (int8_t)0x80; uVar18 = *(uint16_t *)&wl->cursor; uVar6 = (uint16_t)wl->record_aux_4b34; uVar7 = wl->measured_span_cursor; uVar8 = wl->measured_span_a; uVar9 = wl->measured_span_b; uVar10 = wl->span_aux_word_53f6; uVar11 = wl->line_build_word_51f1; uVar12 = wl->line_build_word_51f3; uVar13 = wl->line_build_word_51f5; uVar14 = wl->line_build_word_51f7; uVar1 = wl->measured_span_flags; uVar4 = wl->record_extension_needs_flush; uVar2 = wl->measured_span_total_flags; uVar5 = wl->measured_span_dirty_flags; bVar3 = wl->emit_flags; record_append_byte_under_position_gate_value(wl, (uint8_t)((uint16_t)wl->postprocess_mode << 8 | (uint16_t)wl->runtime_flags)); if ((int)wl->cursor != (int)wl->line_start) { bVar17 = (uint8_t)parser_consume_next_input_byte(wl); layout_render_dirty_or_flags(wl); record_append_byte_under_position_gate(wl, bVar17); uVar21 = 0; uVar19 = 0; do { consume_and_prepend_byte_input(wl); uVar20 = extraout_DX; if ((bool)uVar21) goto LAB_1000_46ef; cVar16 = parser_replay_secondary_probe_and_copy_words(wl); in_CL = (uint8_t)uVar19; } while (!(bool)uVar21); uVar20 = extraout_DX_00; if (cVar16 == -0x66) { uVar19 = uVar19 | 1; } else if (cVar16 == ' ') goto LAB_1000_4788; LAB_1000_46ef: wl->emit_flags = wl->emit_flags & 0xf7; LAB_1000_46f4: do { do { if (wl->postprocess_mode != '\0') { layout_reconcile_line_build_span_words(wl); uVar20 = extraout_DX_01; } uVar15 = wl->measure_extent_50c8; bVar22 = wl->cursor < uVar15; if (uVar15 < wl->cursor) goto LAB_1000_4795; bVar17 = consume_and_prepend_byte_input(wl); in_CL = (uint8_t)uVar19; if (bVar22) goto LAB_1000_4788; uVar21 = (uint8_t)(bVar17 < 0x20); cVar23 = (int8_t)(bVar17 < 0x20); /* Approximation of SBORROW */ cVar16 = (int8_t)((int8_t)bVar17 - 0x20 < 0); bVar22 = bVar17 == 0x20; if ((int8_t)bVar17 < '!') { if (bVar22) goto LAB_1000_4788; if ((bool)uVar21) { layout_scan_memory_stride_3_for_char(wl); in_CL = (uint8_t)uVar19; if (bVar22 || cVar23 != cVar16) goto LAB_1000_4788; } else { uVar21 = (uint8_t)(bVar17 < 0xc0); cVar23 = (int8_t)(bVar17 < 0xc0); cVar16 = (int8_t)((int8_t)bVar17 + 0x40 < 0); bVar22 = bVar17 == 0xc0; if (!bVar22) { if (bVar17 < 0xc1) { if (bVar17 == 0x8c) goto LAB_1000_4788; uVar21 = (uint8_t)(bVar17 < 0x93); if (!(bool)uVar21) { if (bVar17 < 0x96) goto LAB_1000_4788; uVar21 = (uint8_t)(bVar17 < 0xa9); if (!(bool)uVar21) { if (bVar17 < 0xaf) { layout_render_dirty_or_flags(wl); in_CL = (uint8_t)uVar19; uVar20 = extraout_DX_05; if (uVar15 < wl->cursor) goto LAB_1000_4795; goto LAB_1000_4788; } uVar21 = (uint8_t)(bVar17 < 0xb0); if (bVar17 < 0xb1) goto LAB_1000_4788; } } } else { layout_scan_memory_stride_3_for_char(wl); in_CL = (uint8_t)uVar19; if (bVar22 || cVar23 != cVar16) goto LAB_1000_4788; bVar17 = (uint8_t)consume_and_prepend_word_secondary(wl); uVar21 = (uint8_t)(bVar17 < 0xc2); if ((bVar17 < 0xc3) && (uVar21 = (uint8_t)(wl->cursor < wl->emit_record_line_extent), uVar20 = extraout_DX_04, !(bool)uVar21)) { LAB_1000_4795: in_CL = (uint8_t)uVar19; if (((((wl->line_parse_gate_flags_4b52 & 1) != 0) && ((uVar19 & 1) == 0)) && (uVar20 < wl->measure_extent_bound_50c6))) goto LAB_1000_4788; uVar19 = uVar19 & 0xff; goto LAB_1000_47a9; } } } } } else { /* LOCK/UNLOCK omitted as they are likely no-ops or handled by host */ uVar24 = layout_merge_secondary_into_primary_cursor(wl); uVar20 = (uint16_t)(uVar24 >> 0x10); uVar21 = (uint8_t)((uint16_t)uVar24 < (uint16_t)wl->secondary_record_used_bytes); if ((uint16_t)uVar24 != (uint16_t)wl->secondary_record_used_bytes) goto LAB_1000_46f4; } parser_replay_secondary_probe_and_copy_words(wl); uVar20 = extraout_DX_02; } while (!(bool)uVar21); parser_consume_next_input_byte(wl); parser_process_token_stream(wl); in_CL = (uint8_t)uVar19; if ((wl->record_replay_depth & 0x40) != 0) goto LAB_1000_4788; uVar20 = extraout_DX_03; } while ((wl->emit_flags & 8) == 0); in_CL = in_CL | 2; } LAB_1000_4788: uVar19 = (uint16_t)((uint16_t)1 << 8 | (uint16_t)in_CL); LAB_1000_47a9: while( true ) { layout_position_gate_advance_helper(wl); bVar17 = consume_byte_from_buffer_with_position_gate(wl); bVar22 = bVar17 < 0x89; if (bVar17 == 0x89) break; find_matching_char_in_sequence(wl); if (bVar22) { parser_classify_or_handle_token(wl, bVar17); } else { if ((uint16_t)wl->record_used_bytes < 4) { invoke_overlay_consume_record_stream(wl); } layout_normalize_if_ctrl_byte_below_d0_path_a(wl, bVar17); record_append_byte_under_position_gate(wl, bVar17); record_transfer_primary_to_secondary_reverse(wl, 1); } } if ((uVar19 & 2) != 0) { set_mode_or_status_bits(wl); } wl->runtime_flags = wl->runtime_flags | 8; wl->emit_flags = bVar3; wl->postprocess_mode = (int8_t)uVar5; wl->measured_span_total_flags = (uint8_t)uVar1; wl->measured_span_dirty_flags = (uint8_t)uVar4; wl->measured_span_flags = (uint8_t)uVar14; wl->record_extension_needs_flush = (int8_t)((uint16_t)uVar14 >> 8); wl->line_build_word_51f7 = uVar13; wl->line_build_word_51f5 = uVar12; wl->line_build_word_51f3 = uVar11; wl->line_build_word_51f1 = uVar10; wl->span_aux_word_53f6 = uVar9; wl->measured_span_b = uVar8; wl->measured_span_a = uVar7; wl->measured_span_cursor = uVar6; wl->record_aux_4b34 = (int16_t)uVar18; *(uint16_t *)&wl->cursor = unaff_SI; wl->record_replay_depth = 0; return (uint16_t)(uintptr_t)wl; } /* Function: parser_replay_secondary_probe_and_copy_words @ 1000:4839 */ static int8_t __cdecl16near parser_replay_secondary_probe_and_copy_words(WpLayoutGlobals *wl) { uint8_t uVar1; uVar1 = (uint8_t)((uint16_t)wl->secondary_record_used_bytes < 4); if (((bool)uVar1) && (invoke_overlay_probe_secondary_record(wl), (bool)uVar1)) { return '\0'; } find_matching_char_in_sequence(wl); if (!(bool)uVar1) { layout_normalize_if_ctrl_byte_below_d0_path_b(wl, *wl->secondary_record.as_secondary_p); copy_words_between_pointers(wl, 4); } return '\0'; } /* Function: layout_recompute_cursor_window_from_measure @ 1000:485e */ static uint16_t __cdecl16near layout_recompute_cursor_window_from_measure(WpLayoutGlobals *wl) { uint16_t in_AX = 0; uint16_t uVar1; int iVar2; if ((wl->emit_flags & 2) == 0) { uVar1 = layout_cursor_metric_fold(wl); iVar2 = ((int)wl->measure_extent_50c8 - (int)wl->cursor) - uVar1; if (uVar1 <= (uint16_t)((int)wl->measure_extent_50c8 - (int)wl->cursor)) goto LAB_1000_4879; } iVar2 = 0; LAB_1000_4879: wl->cursor_window = (uint16_t)iVar2; in_AX = (uint16_t)iVar2; return in_AX; } /* Function: parse_next_command_or_word @ 1000:48b3 */ uint16_t __cdecl16near parse_next_command_or_word(WpLayoutGlobals *wl, uint8_t in_CF, uint16_t in_BX) { int8_t cVar1; uint16_t uVar2; uint16_t uVar3; int16_t iVar4; int16_t iVar5; int unaff_DI = 0; bool bVar6; uint8_t uVar7 = 0; uint8_t bVar8; bool bVar9; uint8_t in_AF = 0; bool bVar10; bool bVar11; uint8_t bVar12; uint8_t in_TF = 0; uint8_t in_IF = 0; bool bVar13; bool bVar14; uint8_t in_NT = 0; uint16_t uVar15; int8_t local_2; int8_t local_1; bVar13 = false; uVar2 = 0x1000; layout_abort_if_heap_flag_1(wl); if ((bool)in_CF) { if ((wl->machine_flags_bios_9a1 & 2) == 0) { uVar2 = (uint16_t)layout_compact_init(wl); return uVar2; } wl->machine_flags_bios_9a1 = (uint8_t)(wl->machine_flags_bios_9a1 | 4); /* Legacy carry-path: original 16-bit decompiler uses AL as implicit token input for classification, but this path has no explicit source in the recovered caller context. Preserve historical behavior with an explicit zero-token sentinel. */ uVar2 = parser_classify_or_handle_token(wl, 0); return uVar2; } uVar3 = layout_recompute_cursor_window_from_measure(wl); LAB_1000_48e5: do { local_1 = (int8_t)((uint16_t)uVar3 >> 8); if (local_1 == '\0') { call_2377_if_layout_state_gate_passes(wl); } process_layout_state_records_main(wl); layout_get_active_span_total_width(wl); local_2 = (int8_t)uVar3; if (local_2 == -0x23) { layout_passthrough_state_flags(wl); } if ((((wl->state_flags & 1) == 0) && (wl->record_extension_needs_flush == '\0')) && (*(int16_t *)&wl->pending_level.word == 0)) { /* Adapter marker for parser state entry ordering (legacy no-op hookpoint). */ parser_layout_state_entry_eval_order_no_op(wl); iVar4 = 0; uVar15 = (uint16_t)wp_pending_pair_le_5208(wl) + (uint16_t)iVar4; uVar7 = (uint8_t)(uVar15 < in_BX); if (in_BX < uVar15) { layout_byte_classify_proxy(wl); goto LAB_1000_4a37; } if (local_2 == -0x23) { layout_variant_balance_check(wl); if (*(int8_t *)(unaff_DI + -3) != '\x02') { uVar15 = uVar15 + *(int16_t *)((*(uint8_t *)(unaff_DI + 3) & 0x7f) + unaff_DI + 5); goto LAB_1000_4998; } } else { if (local_2 == -0x50) { layout_byte_classify_proxy(wl); iVar4 = 0; iVar5 = (int16_t)layout_scale_span_width_q8(wl); iVar4 = iVar4 + iVar5; iVar5 = layout_get_active_span_total_width(wl); iVar4 = iVar4 - iVar5; } else { iVar4 = (int16_t)layout_scale_span_width_q8(wl); iVar4 = iVar4 + wl->carry_width; } uVar15 = (uint16_t)wp_pending_pair_le_5208(wl) + (uint16_t)iVar4; } if (wl->explicit_span_total == 0) { uVar15 = uVar15 + (uint16_t)wp_span_word_as_int(wl->default_span_a) + (uint16_t)wp_span_word_as_int(wl->default_span_b); } else { uVar15 = uVar15 + (uint16_t)wl->explicit_span_total; } LAB_1000_4998: if (in_BX < uVar15) goto LAB_1000_4a15; if (local_2 != -0x50) { wl->carry_width = iVar4; layout_add_metrics_line_accum_to_variant_anchor_and_total(wl); bVar8 = 1; goto LAB_1000_49b1; } /* WARNING: Subroutine does not return */ route_far_jump_shell_segment_proxy(wl); } layout_byte_classify_proxy(wl); LAB_1000_4a60: do { if (wl->heap_chain_checkpoint_4bec == -1) { if (((wl->heap_control_flags_4bf1 & 1) != 0) && (local_2 != -0x23)) { /* WARNING: Subroutine does not return */ route_far_jump_shell_segment_proxy(wl); } } else { bVar8 = false; bVar12 = (uint8_t)(wl->variant_checkpoint < 0); if (wl->variant_checkpoint == 0) { LAB_1000_4aa3: layout_postprocess_word_copy(wl); bVar8 = 1; } else { in_BX = 0xffff; parser_main_record_loop_with_reentry_guard(wl); if ((bool)bVar8) goto LAB_1000_4aa3; } uVar15 = (uint16_t)(in_NT & 1) * 0x4000 | (uint16_t)bVar13 * 0x400 | (uint16_t)(in_IF & 1) * 0x200 | (uint16_t)(in_TF & 1) * 0x100 | (uint16_t)(bVar12 & 1) * 0x80 | (uint16_t)(in_AF & 1) * 0x10 | (uint16_t)(bVar8 & 1); process_layout_state_records_main(wl); in_NT = (uint8_t)((uVar15 & 0x4000) != 0); bVar13 = (uVar15 & 0x400) != 0; in_IF = (uint8_t)((uVar15 & 0x200) != 0); in_TF = (uint8_t)((uVar15 & 0x100) != 0); in_AF = (uint8_t)((uVar15 & 0x10) != 0); if ((uVar15 & 1) == 0) goto LAB_1000_48e5; } if (wl->variant_count != '\0') { if (local_2 == -0x50) { /* WARNING: Subroutine does not return */ route_far_jump_shell_segment_proxy(wl); } if ((wl->variant_flags & 0xc0) == 0) { /* WARNING: Subroutine does not return */ route_far_jump_shell_segment_proxy(wl); } } if (*(int16_t *)&wl->pending_level.word != 0) { in_BX = (uint16_t)wl->secondary_limit; if (((wl->running_wrap_total + wl->pending_compact_counter_520a) & 1U) != 0) { in_BX = (uint16_t)wl->primary_limit; } if (in_BX < (uint16_t)(wp_span_word_as_int(wl->default_span_a) + wp_span_word_as_int(wl->default_span_b) + wp_pending_pair_le_5208(wl))) { wl->pending_compact_counter_520a = wl->pending_compact_counter_520a + 1; wl->pending_offset = 0; } } if ((wl->restore_mode == '\x01') && ((wl->restore_control_flags & 8) != 0)) { wl->carry_width = wl->carry_width + wp_span_word_as_int(wl->default_span_a) + wp_span_word_as_int(wl->default_span_b); } append_layout_state_record(wl, (uint8_t)local_2); /* LOCK/UNLOCK omitted */ iVar4 = (int16_t)wl->pending_compact_counter_520a; wl->pending_compact_counter_520a = 0; wl->running_wrap_total = wl->running_wrap_total + iVar4; wl->wrap_value = (uint16_t)((int16_t)wl->wrap_value + iVar4); if (iVar4 == 0) { wl->pending_offset = 0; wl->running_wrap_total = wl->running_wrap_total + 1; wl->wrap_value = (uint16_t)((int16_t)wl->wrap_value + 1); } shell_shift_primary_record_window_by_2kb_carry_gated(wl, uVar2); uVar2 = (uint16_t)layout_line_start_align(wl); wl->carry_width = (int16_t)uVar2; wl->state_flags = 0; if ((wl->restore_control_flags & 4) != 0) { wl->record_extra_byte = 0; } if ((wl->record_mode_flags != 0) && (wl->record_mode_flags = (uint8_t)(wl->record_mode_flags ^ 0x80), (wl->record_mode_flags & 0x80) != 0)) { wl->record_mode_flags = 0; wl->restore_flags = (uint8_t)(wl->restore_flags | 1); } layout_reset_cursor_and_record_aux(wl); layout_restore_flag_state(wl); wl->record_mode_flags_2 = 0; layout_add_metrics_line_accum_to_variant_anchor_and_total(wl); layout_add_ax_to_variant_anchor_and_total(wl); if ((wl->variant_flags & 0xc0) == 0) { wl->variant_live_limit = wl->variant_anchor; store_layout_state_snapshot(wl); } bVar8 = 0; LAB_1000_49b1: uVar15 = (uint16_t)(in_NT & 1) * 0x4000 | (uint16_t)bVar13 * 0x400 | (uint16_t)(in_IF & 1) * 0x200 | (uint16_t)(in_TF & 1) * 0x100 | (uint16_t)((intptr_t)&wp_ghidra_stack_slot < 0) * 0x80 | (uint16_t)(&wp_ghidra_stack_base == (uint8_t *)0xa) * 0x40 | (uint16_t)(in_AF & 1) * 0x10 | (uint16_t)((POPCOUNT((uintptr_t)&wp_ghidra_stack_slot & 0xff) & 1U) == 0) * 4 | (uint16_t)bVar8; wl->status_dirty_flags = (uint8_t)(wl->status_dirty_flags | 2); wl->render_dirty_flags = (uint8_t)(wl->render_dirty_flags | 1); layout_reset_cursor_and_record_aux(wl); layout_clear_measured_span_emit_state(wl); wl->state_flags = (uint8_t)local_1; uVar2 = 0x3adb; shell_adjust_byte_at_di_plus2_by_dh(wl); wl->emit_flags = (uint8_t)(wl->emit_flags | 0xc); in_NT = (uint8_t)((uVar15 & 0x4000) != 0); bVar14 = (uVar15 & 0x800) != 0; bVar13 = (uVar15 & 0x400) != 0; in_IF = (uint8_t)((uVar15 & 0x200) != 0); in_TF = (uint8_t)((uVar15 & 0x100) != 0); bVar11 = (uVar15 & 0x80) != 0; bVar10 = (uVar15 & 0x40) != 0; in_AF = (uint8_t)((uVar15 & 0x10) != 0); bVar9 = (uVar15 & 4) != 0; bVar6 = (uVar15 & 1) != 0; if (!bVar6) goto LAB_1000_49e2; if (wl->record_extension_needs_flush == '\0') { bVar14 = false; bVar11 = (intptr_t)&wp_ghidra_stack_slot < 0; bVar10 = &wp_ghidra_stack_base == (uint8_t *)0xa; bVar9 = (POPCOUNT((uintptr_t)&wp_ghidra_stack_slot & 0xff) & 1U) == 0; bVar6 = true; goto LAB_1000_49e2; } parser_classify_or_handle_token(wl, (uint8_t)local_2); parser_consume_next_input_byte(wl); if (local_2 == -0x50) { layout_add_metrics_line_accum_to_variant_anchor_and_total(wl); restore_layout_state_record(wl, (uint8_t)local_2); } wl->runtime_flags = (uint8_t)(wl->runtime_flags & 0xfe); LAB_1000_4a15: ; } while (((wl->restore_mode != '\x01') || (uVar7 = 0, (wl->restore_control_flags & 8) == 0)) && (((wl->state_flags & 2) != 0 || ((local_1 == '\0' || (uVar7 = 0, wl->feature_enabled == '\0')))))); LAB_1000_4a37: in_BX = (uint16_t)wl->line_start; iVar4 = (int16_t)wl->emit_record_line_extent; /* Preserve layout no-op return-path marker for parser/render bookkeeping. */ cVar1 = (int8_t)layout_no_op_return(wl); if ((bool)uVar7) { process_layout_state_records_main(wl); goto LAB_1000_4a60; } if ((local_1 != '\0') && (((uint16_t)in_BX != (uint16_t)wl->line_start || (iVar4 != (int16_t)wl->emit_record_line_extent)))) { bVar6 = false; bVar14 = (int8_t)cVar1 < 0; /* SBORROW approximation */ bVar11 = false; bVar10 = true; bVar9 = true; LAB_1000_49e2: wl->record_extension_needs_flush = 0; wl->parser_runtime_flags = (uint8_t)(wl->parser_runtime_flags & 0xfd); wl->runtime_flags = (uint8_t)(wl->runtime_flags & 0xbf); layout_variant_balance_check(wl); return uVar3; } } while( true ); }
Commit message
This repository is read-only for this account.
Repository snapshot
Current branch
main
Visibility
public
Your access
Read
Remote
None
File activity
View file history