// File: /workspace/github_cpp_makefile_star2_O3/rpavlik[P]edid-decode/./edid-decode.h
// Function: edid_state::edid_state()
edid_state()
	{
		// Global state
		edid_size = num_blocks = block_nr = 0;
		max_hor_freq_hz = max_vert_freq_hz = max_pixclk_khz = 0;
		min_hor_freq_hz = 0xffffff;
		min_vert_freq_hz = 0xffffffff;
		dtd_max_vsize_mm = dtd_max_hsize_mm = 0;
		warnings = failures = 0;
		has_cta = has_dispid = false;
		hide_serial_numbers = false;

		// Base block state
		base.edid_minor = 0;
		base.has_name_descriptor = base.has_display_range_descriptor =
			base.has_serial_number = base.has_serial_string =
			base.supports_continuous_freq = base.supports_gtf =
			base.supports_cvt = base.seen_non_detailed_descriptor =
			base.has_640x480p60_est_timing = base.has_spwg =
			base.preferred_is_also_native = false;
		base.supports_sec_gtf = false;
		base.sec_gtf_start_freq = 0;
		base.C = base.M = base.K = base.J = 0;
		base.max_pos_neg_hor_freq_khz = 0;
		base.detailed_block_cnt = base.dtd_cnt = 0;

		base.min_display_hor_freq_hz = base.max_display_hor_freq_hz =
			base.min_display_vert_freq_hz = base.max_display_vert_freq_hz =
			base.max_display_pixclk_khz = base.max_display_width_mm =
			base.max_display_height_mm = 0;

		// CTA-861 block state
		cta.has_vic_1 = cta.first_svd_might_be_preferred = cta.has_sldb =
			cta.has_hdmi = cta.has_vcdb = cta.has_vfpdb = false;
		cta.last_block_was_hdmi_vsdb = cta.have_hf_vsdb = cta.have_hf_scdb = false;
		cta.first_block = cta.first_svd = true;
		cta.supported_hdmi_vic_codes = cta.supported_hdmi_vic_vsb_codes = 0;
		memset(cta.vics, 0, sizeof(cta.vics));
		memset(cta.preparsed_has_vic, 0, sizeof(cta.preparsed_has_vic));
		cta.preparsed_phys_addr = 0xffff;
		cta.preparsed_speaker_count = 0;
		cta.preparsed_sld = false;
		cta.preparsed_sld_has_coord = false;
		cta.preparsed_total_dtds = 0;
		cta.preparsed_total_vtdbs = 0;
		cta.preparsed_has_t8vtdb = false;

		// DisplayID block state
		dispid.version = 0;
		dispid.native_width = dispid.native_height = 0;
		dispid.preparsed_color_ids = dispid.preparsed_xfer_ids = 0;
		dispid.preparsed_displayid_blocks = 0;
		dispid.is_base_block = true;
		dispid.is_display = dispid.has_product_identification =
			dispid.has_display_parameters = dispid.has_type_1_7 =
			dispid.has_display_interface_features = false;

		// Block Map block state
		block_map.saw_block_1 = false;
		block_map.saw_block_128 = false;
	}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x20(%rdi), %rax
movq %rax, 0x10(%rdi)
xorl %r14d, %r14d
movq %r14, 0x18(%rdi)
movb %r14b, 0x20(%rdi)
leaq 0x40(%rdi), %rax
movq %rax, 0x30(%rdi)
movq %r14, 0x38(%rdi)
movb %r14b, 0x40(%rdi)
leaq 0x130(%rdi), %rax
movq %rax, 0x120(%rdi)
movq %r14, 0x128(%rdi)
movb %r14b, 0x130(%rdi)
leaq 0x150(%rdi), %rax
movq %rax, 0x140(%rdi)
movq %r14, 0x148(%rdi)
movb %r14b, 0x150(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0xc8(%rdi)
movups %xmm0, 0xd8(%rdi)
movups %xmm0, 0xe8(%rdi)
movups %xmm0, 0xf8(%rdi)
movups %xmm0, 0x108(%rdi)
movl %r14d, 0x118(%rdi)
movq %r14, 0x198(%rdi)
movups %xmm0, 0x188(%rdi)
leaq 0x1e8(%rdi), %rax
movl %r14d, 0x1e8(%rdi)
movq %r14, 0x1f0(%rdi)
movups %xmm0, 0x1a8(%rdi)
movups %xmm0, 0x1b8(%rdi)
movups %xmm0, 0x1c8(%rdi)
movq %rax, 0x1f8(%rdi)
movq %rax, 0x200(%rdi)
movq %r14, 0x208(%rdi)
leaq 0x278(%rdi), %rax
movq %rax, 0x268(%rdi)
movq %r14, 0x270(%rdi)
movb %r14b, 0x278(%rdi)
leaq 0x298(%rdi), %rax
movq %rax, 0x288(%rdi)
movq %r14, 0x290(%rdi)
movb %r14b, 0x298(%rdi)
movl %r14d, 0x260(%rdi)
movups %xmm0, 0x250(%rdi)
movups %xmm0, 0x240(%rdi)
movups %xmm0, 0x230(%rdi)
movups %xmm0, 0x220(%rdi)
movups %xmm0, 0x210(%rdi)
movq %r14, 0x2b8(%rdi)
movups %xmm0, 0x2a8(%rdi)
movups %xmm0, 0x900(%rdi)
movups %xmm0, 0x8f0(%rdi)
movups %xmm0, 0x8e0(%rdi)
movq %r14, 0x938(%rdi)
movups %xmm0, 0x928(%rdi)
leaq 0x950(%rdi), %rax
movl %r14d, 0x950(%rdi)
movq %r14, 0x958(%rdi)
movq %rax, 0x960(%rdi)
movq %rax, 0x968(%rdi)
movq %r14, 0x970(%rdi)
movl %r14d, 0x8(%rdi)
movq %r14, (%rdi)
movl %r14d, 0x70(%rdi)
movq $0xffffff, 0x54(%rdi)   # imm = 0xFFFFFF
movsd 0x17998(%rip), %xmm1    # 0x20008
movups %xmm1, 0x60(%rdi)
movb %r14b, 0x51(%rdi)
movb %r14b, 0x50(%rdi)
movb %r14b, 0x52(%rdi)
movb %r14b, 0x2c5(%rdi)
movb %r14b, 0x2c4(%rdi)
movb %r14b, 0x2c3(%rdi)
movb %r14b, 0x2ce(%rdi)
movb %r14b, 0x2c1(%rdi)
movb %r14b, 0x2c0(%rdi)
movups %xmm0, 0x74(%rdi)
movl %r14d, 0x8f(%rdi)
movq %r14, 0x88(%rdi)
movq %r14, 0xb2(%rdi)
movups %xmm0, 0xa4(%rdi)
movups %xmm0, 0x94(%rdi)
movl %r14d, 0xc3(%rdi)
movq %r14, 0xbc(%rdi)
movups %xmm0, 0x170(%rdi)
movups %xmm0, 0x160(%rdi)
movb $0x1, %bpl
movb %bpl, 0x2d6(%rdi)
movl $0x1000000, 0x2d2(%rdi) # imm = 0x1000000
addq $0x2d8, %rdi            # imm = 0x2D8
movl $0x608, %edx            # imm = 0x608
xorl %esi, %esi
callq 0x3150
movw $0xffff, 0x2d0(%rbx)    # imm = 0xFFFF
movl %r14d, 0x2c8(%rbx)
movw %r14w, 0x2cc(%rbx)
movl %r14d, 0x180(%rbx)
movl %r14d, 0x1a0(%rbx)
movb %r14b, 0x1d8(%rbx)
movb %r14b, 0x910(%rbx)
movq %r14, 0x940(%rbx)
movl %r14d, 0x912(%rbx)
movl %r14d, 0x918(%rbx)
movb %bpl, 0x91c(%rbx)
movw %r14w, 0x978(%rbx)
movl %r14d, 0x91d(%rbx)
movb %r14b, 0x921(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
nop