// File: /workspace/github_cpp_makefile_star2_O2/rpavlik[P]edid-decode/parse-base-block.cpp
// Function: edid_state::detailed_timings(char const*, unsigned char const*, bool)
void edid_state::detailed_timings(const char *prefix, const unsigned char *x,
				  bool base_or_cta)
{
	struct timings t = {};
	unsigned hbl, vbl;
	std::string s_sync, s_flags;

	// Only count DTDs in base block 0 or CTA-861 extension blocks
	if (base_or_cta)
		base.dtd_cnt++;
	data_block = "Detailed Timing Descriptor #" + std::to_string(base.dtd_cnt);
	t.pixclk_khz = (x[0] + (x[1] << 8)) * 10;
	if (t.pixclk_khz < 10000) {
		printf("%sDetailed mode: ", prefix);
		hex_block("", x, 18, true, 18);
		if (!t.pixclk_khz)
			fail("First two bytes are 0, invalid data.\n");
		else
			fail("Pixelclock < 10 MHz, assuming invalid data 0x%02x 0x%02x.\n",
			     x[0], x[1]);
		return;
	}

	/*
	 * If the borders are non-zero, then it is unclear how to interpret
	 * the DTD blanking parameters.
	 *
	 * According to EDID 1.3 (3.12) the Hor/Vert Blanking includes the
	 * borders, and so does the Hor/Vert Sync Offset.
	 *
	 * According to EDID 1.4 (3.12) the Hor/Vert Blanking excludes the
	 * borders, and they are also excluded from the Hor/Vert Front Porch.
	 *
	 * But looking at what is really done in EDIDs is that the Hor/Vert
	 * Blanking follows EDID 1.3, but the Hor/Vert Front Porch does not
	 * include the border.
	 *
	 * So hbl/vbl includes the borders, so those need to be subtracted,
	 * but hfp/vfp is used as-is.
	 *
	 * In practice you really shouldn't use non-zero borders in DTDs
	 * since clearly nobody knows how to interpret the timing.
	 */
	t.hact = (x[2] + ((x[4] & 0xf0) << 4));
	t.hborder = x[15];
	hbl = (x[3] + ((x[4] & 0x0f) << 8)) - t.hborder * 2;
	t.hfp = (x[8] + ((x[11] & 0xc0) << 2));
	t.hsync = (x[9] + ((x[11] & 0x30) << 4));
	t.hbp = hbl - t.hsync - t.hfp;
	t.vact = (x[5] + ((x[7] & 0xf0) << 4));
	t.vborder = x[16];
	vbl = (x[6] + ((x[7] & 0x0f) << 8)) - t.vborder * 2;
	t.vfp = ((x[10] >> 4) + ((x[11] & 0x0c) << 2));
	t.vsync = ((x[10] & 0x0f) + ((x[11] & 0x03) << 4));
	t.vbp = vbl - t.vsync - t.vfp;

	unsigned char flags = x[17];

	if (base.has_spwg && base.detailed_block_cnt == 2)
		flags = *(x - 1);

	switch ((flags & 0x18) >> 3) {
	case 0x00:
		s_flags = "analog composite";
		/* fall-through */
	case 0x01:
		if (s_flags.empty())
			s_flags = "bipolar analog composite";
		switch ((flags & 0x06) >> 1) {
		case 0x00:
			add_str(s_flags, "sync-on-green");
			break;
		case 0x01:
			break;
		case 0x02:
			add_str(s_flags, "serrate, sync-on-green");
			break;
		case 0x03:
			add_str(s_flags, "serrate");
			break;
		}
		break;
	case 0x02:
		if (flags & (1 << 1))
			t.pos_pol_hsync = true;
		t.no_pol_vsync = true;
		s_flags = "digital composite";
		if (flags & (1 << 2))
		    add_str(s_flags, "serrate");
		break;
	case 0x03:
		if (flags & (1 << 1))
			t.pos_pol_hsync = true;
		if (flags & (1 << 2))
			t.pos_pol_vsync = true;
		s_sync = t.pos_pol_hsync ? "+hsync " : "-hsync ";
		s_sync += t.pos_pol_vsync ? "+vsync " : "-vsync ";
		if (base.has_spwg && (flags & 0x01))
			s_flags = "DE timing only";
		break;
	}
	if (flags & 0x80) {
		t.interlaced = true;
		t.vact *= 2;
		/*
		 * Check if this DTD matches VIC code 39 with special
		 * interlaced timings.
		 */
		if (t.hact == 1920 && t.vact == 1080 && t.pixclk_khz == 72000 &&
		    t.hfp == 32 && t.hsync == 168 && t.hbp == 184 && !t.hborder &&
		    t.vfp == 23 && t.vsync == 5 && t.vbp == 57 && !t.vborder &&
		    !base.has_spwg && cta.preparsed_has_vic[0][39] && (flags & 0x1e) == 0x1a)
			t.even_vtotal = true;
	}
	switch (flags & 0x61) {
	case 0x20:
		add_str(s_flags, "field sequential L/R");
		break;
	case 0x40:
		add_str(s_flags, "field sequential R/L");
		break;
	case 0x21:
		add_str(s_flags, "interleaved right even");
		break;
	case 0x41:
		add_str(s_flags, "interleaved left even");
		break;
	case 0x60:
		add_str(s_flags, "four way interleaved");
		break;
	case 0x61:
		add_str(s_flags, "side by side interleaved");
		break;
	default:
		break;
	}

	t.hsize_mm = x[12] + ((x[14] & 0xf0) << 4);
	t.vsize_mm = x[13] + ((x[14] & 0x0f) << 8);

	calc_ratio(&t);

	std::string s_type = base_or_cta ? dtd_type() : "DTD";
	bool ok = print_timings(prefix, &t, s_type.c_str(), s_flags.c_str(), true);
	timings_ext te(t, s_type, s_flags);

	if (block_nr == 0 && base.dtd_cnt == 1) {
		te.type = "DTD   1";
		base.preferred_timing = te;
		if (has_cta) {
			cta.preferred_timings.push_back(te);
			cta.native_timings.push_back(te);
		}
	}
	if (base_or_cta)
		cta.vec_dtds.push_back(te);

	if (t.hborder || t.vborder)
		warn("The use of non-zero borders in a DTD is not recommended.\n");
	if ((base.max_display_width_mm && !t.hsize_mm) ||
	    (base.max_display_height_mm && !t.vsize_mm)) {
		fail("Mismatch of image size vs display size: image size is not set, but display size is.\n");
	}
	if (base.has_spwg && base.detailed_block_cnt == 2)
		printf("%sSPWG Module Revision: %hhu\n", prefix, x[17]);
	if (!ok) {
		std::string s = prefix;

		s += "               ";
		hex_block(s.c_str(), x, 18, true, 18);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x180, %rsp            # imm = 0x180
movl %ecx, %ebp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
pxor %xmm0, %xmm0
movdqa %xmm0, 0x90(%rsp)
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm0, 0x70(%rsp)
andl $0x0, 0xa0(%rsp)
leaq 0x170(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movdqa %xmm0, 0x60(%rsp)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movdqa %xmm0, 0x50(%rsp)
movb %cl, (%rax)
movl 0xc0(%rdi), %esi
testl %ebp, %ebp
je 0x9772
incl %esi
movl %esi, 0xc0(%r15)
leaq 0x10(%rsp), %rdi
callq 0x7675
leaq 0x15ac6(%rip), %rsi     # 0x1f249
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xbafb
leaq 0x30(%r15), %rdi
leaq 0xa8(%rsp), %r12
movq %r12, %rsi
callq 0x32f0
movq %r12, %rdi
callq 0x3130
leaq 0x10(%rsp), %rdi
callq 0x3130
movzwl (%rbx), %eax
imull $0xa, %eax, %ecx
movl %ecx, 0x60(%rsp)
cmpl $0x3e7, %eax            # imm = 0x3E7
ja 0x981c
leaq 0x15a93(%rip), %rdi     # 0x1f266
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
leaq 0x114a5(%rip), %rdi     # 0x1ac89
pushq $0x1
popq %rcx
pushq $0x12
popq %rdx
movq %rbx, %rsi
movl %edx, %r8d
callq 0x4fc1
cmpl $0x0, 0x60(%rsp)
je 0x999e
movzbl (%rbx), %edx
movzbl 0x1(%rbx), %ecx
leaq 0x15a90(%rip), %rsi     # 0x1f29e
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x9f68
movzbl 0x2(%rbx), %eax
movzbl 0x4(%rbx), %ecx
movl %ecx, %edx
andl $-0x10, %edx
shll $0x4, %edx
orl %eax, %edx
movl %edx, 0x50(%rsp)
movzbl 0xf(%rbx), %edx
movl %edx, 0x8c(%rsp)
movzbl 0x3(%rbx), %eax
andl $0xf, %ecx
shll $0x8, %ecx
orl %eax, %ecx
movzbl 0x8(%rbx), %esi
movzbl 0xb(%rbx), %eax
movl %eax, %edi
andl $-0x40, %edi
leal (%rsi,%rdi,4), %esi
movl %esi, 0x6c(%rsp)
movzbl 0x9(%rbx), %edi
movl %eax, %r8d
andl $0x30, %r8d
shll $0x4, %r8d
orl %edi, %r8d
movl %r8d, 0x70(%rsp)
leal (%r8,%rdx,2), %edx
addl %esi, %edx
subl %edx, %ecx
movl %ecx, 0x74(%rsp)
movzbl 0x5(%rbx), %edx
movzbl 0x7(%rbx), %ecx
movl %ecx, %esi
andl $-0x10, %esi
shll $0x4, %esi
orl %edx, %esi
movl %esi, 0x54(%rsp)
movzbl 0x10(%rbx), %edx
movl %edx, 0x90(%rsp)
movzbl 0x6(%rbx), %esi
andl $0xf, %ecx
shll $0x8, %ecx
orl %esi, %ecx
movb 0xa(%rbx), %sil
movl %esi, %edi
shrb $0x4, %dil
leal (,%rax,4), %r8d
andb $0x30, %r8b
orb %dil, %r8b
movzbl %r8b, %edi
movl %edi, 0x7c(%rsp)
andb $0xf, %sil
shlb $0x4, %al
andb $0x30, %al
orb %sil, %al
movzbl %al, %eax
movl %eax, 0x80(%rsp)
leal (%rax,%rdx,2), %eax
addl %edi, %eax
subl %eax, %ecx
movl %ecx, 0x84(%rsp)
cmpl $0x2, 0xbc(%r15)
sete %al
andb 0xb9(%r15), %al
movzbl %al, %eax
negq %rax
orq $0x11, %rax
movzbl (%rbx,%rax), %r12d
movl %r12d, %eax
shrl $0x3, %eax
andl $0x3, %eax
leaq 0x12bd9(%rip), %rcx     # 0x1c4fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x159ae(%rip), %rsi     # 0x1f2e1
leaq 0x30(%rsp), %rdi
callq 0x3460
cmpq $0x0, 0x38(%rsp)
jne 0x9956
leaq 0x1598d(%rip), %rsi     # 0x1f2d9
leaq 0x30(%rsp), %rdi
callq 0x3460
movl %r12d, %eax
shrl %eax
andl $0x3, %eax
leaq 0x12ba7(%rip), %rcx     # 0x1c50c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x15986(%rip), %rsi     # 0x1f2fb
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9af4
leaq 0x158d3(%rip), %rsi     # 0x1f278
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x9f68
testb $0x2, %r12b
je 0x99be
movb $0x1, 0x78(%rsp)
movb $0x1, 0x95(%rsp)
leaq 0x15944(%rip), %rsi     # 0x1f311
leaq 0x30(%rsp), %rdi
callq 0x3460
testb $0x4, %r12b
je 0x9b01
leaq 0x15921(%rip), %rsi     # 0x1f309
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9af4
testb $0x2, %r12b
je 0x9a1c
movb $0x1, 0x78(%rsp)
testb $0x4, %r12b
je 0x9a2a
movb $0x1, 0x88(%rsp)
leaq 0x158f2(%rip), %rax     # 0x1f323
leaq 0x158f3(%rip), %rsi     # 0x1f32b
cmpb $0x0, 0x78(%rsp)
cmovneq %rax, %rsi
leaq 0x160(%rsp), %rdi
callq 0x3460
leaq 0x158de(%rip), %rax     # 0x1f333
leaq 0x158df(%rip), %rsi     # 0x1f33b
cmpb $0x0, 0x88(%rsp)
cmovneq %rax, %rsi
leaq 0x160(%rsp), %rdi
callq 0x3450
testb $0x1, %r12b
je 0x9b01
cmpb $0x0, 0xb9(%r15)
je 0x9b01
leaq 0x158b3(%rip), %rsi     # 0x1f343
leaq 0x30(%rsp), %rdi
callq 0x3460
jmp 0x9b01
leaq 0x1584f(%rip), %rsi     # 0x1f2f2
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9af4
leaq 0x15839(%rip), %rsi     # 0x1f309
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
leaq 0xa8(%rsp), %rdi
callq 0x3130
testb %r12b, %r12b
js 0x9b76
andl $0x61, %r12d
cmpl $0x61, %r12d
je 0x9d0a
cmpl $0x21, %r12d
je 0x9cdd
cmpl $0x40, %r12d
je 0x9c50
cmpl $0x41, %r12d
je 0x9cb0
cmpl $0x60, %r12d
je 0x9c80
cmpl $0x20, %r12d
jne 0x9d42
leaq 0x15805(%rip), %rsi     # 0x1f352
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9d35
movb $0x1, 0x68(%rsp)
movl 0x50(%rsp), %ecx
movl 0x54(%rsp), %eax
addl %eax, %eax
movl %eax, 0x54(%rsp)
cmpl $0x780, %ecx            # imm = 0x780
jne 0x9b06
cmpl $0x438, %eax            # imm = 0x438
jne 0x9b06
cmpl $0x11940, 0x60(%rsp)    # imm = 0x11940
jne 0x9b06
cmpl $0x20, 0x6c(%rsp)
jne 0x9b06
cmpl $0xa8, 0x70(%rsp)
jne 0x9b06
cmpl $0xb8, 0x74(%rsp)
jne 0x9b06
cmpl $0x0, 0x8c(%rsp)
jne 0x9b06
cmpl $0x17, 0x7c(%rsp)
jne 0x9b06
cmpl $0x5, 0x80(%rsp)
jne 0x9b06
cmpl $0x39, 0x84(%rsp)
jne 0x9b06
cmpl $0x0, 0x90(%rsp)
jne 0x9b06
cmpb $0x0, 0xb9(%r15)
jne 0x9b06
movl %r12d, %eax
andl $0x1e, %eax
cmpl $0x1a, %eax
jne 0x9b06
cmpb $0x0, 0x707(%r15)
je 0x9b06
movb $0x1, 0x94(%rsp)
jmp 0x9b06
leaq 0x15710(%rip), %rsi     # 0x1f367
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9d35
leaq 0x15722(%rip), %rsi     # 0x1f3a9
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9d35
leaq 0x156dc(%rip), %rsi     # 0x1f393
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9d35
leaq 0x15698(%rip), %rsi     # 0x1f37c
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
jmp 0x9d35
leaq 0x156ad(%rip), %rsi     # 0x1f3be
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x75c4
leaq 0x30(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x8340
leaq 0xa8(%rsp), %rdi
callq 0x3130
movzwl 0xc(%rbx), %eax
movd %eax, %xmm0
pxor %xmm1, %xmm1
movzbl 0xe(%rbx), %eax
movd %eax, %xmm2
punpcklbw %xmm2, %xmm2    # xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
pand 0x1497e(%rip), %xmm2    # 0x1e6e0
punpcklbw %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
punpcklbw %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
pmullw 0x1497e(%rip), %xmm2    # 0x1e6f0
por %xmm0, %xmm2
punpcklwd %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
leaq 0x50(%rsp), %rdi
movq %xmm2, 0x48(%rdi)
callq 0x38fe
testb %bpl, %bpl
je 0x9d9d
leaq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0xbb20
jmp 0x9db6
leaq 0x10519(%rip), %rsi     # 0x1a2bd
leaq 0x10(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x75c4
movq 0x10(%rsp), %rcx
movq 0x30(%rsp), %r8
movl $0x1, (%rsp)
leaq 0x50(%rsp), %rdx
pushq $0x1
popq %r9
movq %r15, %rdi
movq %r14, %rsi
callq 0x3af0
movl %eax, %r12d
leaq 0xa8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0xbb34
cmpl $0x0, 0x8(%r15)
jne 0x9e62
cmpl $0x1, 0xc0(%r15)
jne 0x9e62
leaq 0x100(%rsp), %rdi
leaq 0x155bd(%rip), %rsi     # 0x1f3d7
callq 0x3460
leaq 0xc8(%r15), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xbbac
cmpb $0x1, 0x50(%r15)
jne 0x9e62
leaq 0x1c0(%r15), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xbbe4
leaq 0x2a8(%r15), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xbbe4
testb %bpl, %bpl
je 0x9e7b
leaq 0x188(%r15), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xbbe4
movl 0x90(%rsp), %eax
orl 0x8c(%rsp), %eax
je 0x9e9c
leaq 0x1554d(%rip), %rsi     # 0x1f3df
pushq $0x1
popq %rdi
xorl %eax, %eax
callq 0x362c
cmpl $0x0, 0x174(%r15)
je 0x9eb0
cmpl $0x0, 0x98(%rsp)
je 0x9ec4
cmpl $0x0, 0x178(%r15)
je 0x9ed4
cmpl $0x0, 0x9c(%rsp)
jne 0x9ed4
leaq 0x1554e(%rip), %rsi     # 0x1f419
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
cmpb $0x1, 0xb9(%r15)
jne 0x9efd
cmpl $0x2, 0xbc(%r15)
jne 0x9efd
movzbl 0x11(%rbx), %edx
leaq 0x1557b(%rip), %rdi     # 0x1f46e
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
testb %r12b, %r12b
jne 0x9f51
leaq 0x140(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x75c4
leaq 0x1556e(%rip), %rsi     # 0x1f48c
leaq 0x140(%rsp), %rdi
callq 0x3450
movq 0x140(%rsp), %rdi
pushq $0x1
popq %rcx
pushq $0x12
popq %rdx
movq %rbx, %rsi
movl %edx, %r8d
callq 0x4fc1
leaq 0x140(%rsp), %rdi
callq 0x3130
leaq 0xa8(%rsp), %rdi
callq 0x78cc
leaq 0x10(%rsp), %rdi
callq 0x3130
leaq 0x30(%rsp), %rdi
callq 0x3130
leaq 0x160(%rsp), %rdi
callq 0x3130
addq $0x180, %rsp            # imm = 0x180
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fa9
jmp 0x9fa9
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
jmp 0xa001
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fe7
jmp 0x9fec
jmp 0x9fe7
jmp 0x9fe7
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x3130
jmp 0x9fef
jmp 0x9fe0
jmp 0x9fe0
jmp 0x9fe7
movq %rax, %rbx
jmp 0x9ffc
jmp 0x9fe7
movq %rax, %rbx
jmp 0xa006
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x78cc
leaq 0x10(%rsp), %rdi
callq 0x3130
leaq 0x30(%rsp), %rdi
callq 0x3130
leaq 0x160(%rsp), %rdi
callq 0x3130
movq %rbx, %rdi
callq 0x3430
nop