// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/psd.c
// Function: do_tagged_block
static int do_tagged_block(deark *c, lctx *d, zztype *zz, int tbnamespace)
{
	i64 blklen;
	i64 blklen_len = 4; // Length of the block length field
	struct de_fourcc blk4cc;
	u32 sig;
	zztype czz;

	if(zz_avail(zz)<12) return 0;

	sig = (u32)psd_getu32zz(zz);
	if(sig!=CODE_8BIM && sig!=CODE_8B64) {
		de_warn(c, "Expected tagged block signature not found at %d", (int)zz->pos);
		return 0;
	}

	psd_read_fourcc_zz(c, d, zz, &blk4cc);

	// Some blocks types have an 8-byte length in PSD format
	if(d->intsize_4or8==8) {
		switch(blk4cc.id) {
		case CODE_LMsk: case CODE_Lr16: case CODE_Lr32:	case CODE_Layr:
		case CODE_Mt16: case CODE_Mt32: case CODE_Mtrn: case CODE_Alph:
		case CODE_FMsk: case CODE_lnk2: case CODE_FEid: case CODE_FXid:
		case CODE_PxSD:
			blklen_len = 8;
		}
	}

	if(blklen_len==8) {
		blklen = psd_geti64zz(zz);
		de_sanitize_length(&blklen);
	}
	else {
		blklen = psd_getu32zz(zz);
	}

	zz_init_with_len(&czz, zz, blklen);

	de_dbg(c, "tagged block '%s' at %d, dpos=%d, dlen=%d", blk4cc.id_dbgstr,
		(int)zz->startpos, (int)czz.startpos, (int)blklen);

	de_dbg_indent(c, 1);
	switch(blk4cc.id) {
	case CODE_clbl:
		do_boolean_block(c, d, &czz, &blk4cc, "blend clipped elements");
		break;
	case CODE_infx:
		do_boolean_block(c, d, &czz, &blk4cc, "blend interior elements");
		break;
	case CODE_knko:
		do_boolean_block(c, d, &czz, &blk4cc, "knockout");
		break;
	case CODE_lyid:
		do_uint32_block(c, d, &czz, &blk4cc, "layer ID");
		break;
	case CODE_lnsr:
		do_fourcc_block(c, d, &czz, &blk4cc, "layer name ID");
		break;
	case CODE_Layr:
	case CODE_Lr16:
		do_Layr_block(c, d, &czz, &blk4cc);
		break;
	case CODE_lnkD:
	case CODE_lnk2:
	case CODE_lnk3:
		do_lnk2_block(c, d, &czz, &blk4cc);
		break;
	case CODE_Patt:
	case CODE_Pat2:
	case CODE_Pat3:
		do_Patt_block(c, d, &czz, &blk4cc);
		break;
	case CODE_lrFX:
		do_lrFX_block(c, d, &czz, &blk4cc);
		break;
	case CODE_luni:
		do_unicodestring_block(c, d, &czz, &blk4cc, "Unicode layer name");
		break;
	case CODE_GdFl:
		do_descriptor_block(c, d, &czz, &blk4cc, "Gradient fill setting");
		break;
	case CODE_PtFl:
		do_descriptor_block(c, d, &czz, &blk4cc, "Pattern fill setting");
		break;
	case CODE_SoCo:
		do_descriptor_block(c, d, &czz, &blk4cc, "Solid color sheet setting");
		break;
	case CODE_vstk:
		do_descriptor_block(c, d, &czz, &blk4cc, "Vector Stroke Data");
		break;
	case CODE_blwh:
		do_descriptor_block(c, d, &czz, &blk4cc, "Black and White");
		break;
	case CODE_CgEd:
		do_descriptor_block(c, d, &czz, &blk4cc, "Content Generator Extra Data");
		break;
	case CODE_vibA:
		do_descriptor_block(c, d, &czz, &blk4cc, "Vibrance");
		break;
	case CODE_pths:
		do_descriptor_block(c, d, &czz, &blk4cc, "Unicode Path Name");
		break;
	case CODE_anFX:
		do_descriptor_block(c, d, &czz, &blk4cc, "Animation Effects");
		break;
	case CODE_PxSc:
		do_descriptor_block(c, d, &czz, &blk4cc, "Pixel Source Data");
		break;
	case CODE_artb:
	case CODE_artd:
	case CODE_abdd:
		do_descriptor_block(c, d, &czz, &blk4cc, "Artboard Data");
		break;
	case CODE_vmsk:
	case CODE_vsms:
		do_vmsk_block(c, d, &czz);
		break;
	case CODE_vscg:
		do_vscg_block(c, d, &czz);
		break;
	case CODE_vogk:
		do_vogk_block(c, d, &czz);
		break;
	case CODE_fxrp:
		do_fxrp_block(c, d, &czz);
		break;
	case CODE_lsct:
		do_lsct_block(c, d, &czz);
		break;
	case CODE_lspf:
		do_lspf_block(c, d, &czz);
		break;
	case CODE_lfx2:
		do_lfx2_block(c, d, &czz, &blk4cc);
		break;
	case CODE_Txt2:
		do_text_engine_data(c, d, czz.startpos, blklen);
		break;
	case CODE_TySh:
	case CODE_tySh:
		do_TySh_block(c, d, &czz, &blk4cc);
		break;
	case CODE_SoLd:
		do_SoLd_block(c, d, &czz);
		break;
	case CODE_FEid:
	case CODE_FXid:
		do_FXid_block(c, d, &czz, &blk4cc);
		break;
	case CODE_shmd:
		do_shmd_block(c, d, &czz);
		break;
	case CODE_AnDs: // Observed in Plug-in Resources/'mani'/'IRFR'
		if(tbnamespace==1) {
			do_descriptor_block(c, d, &czz, &blk4cc, "");
		}
		break;
	case CODE_desc:
		if(tbnamespace==2) { // Observed in ABR (brush) files
			do_descriptor_block(c, d, &czz, &blk4cc, "");
		}
		break;
	case CODE_patt:
		if(tbnamespace==2) {
			do_Patt_block(c, d, &czz, &blk4cc);
		}
		break;
	case CODE_samp:
		if(tbnamespace==2) {
			do_samp_block(c, d, &czz);
		}
		break;
	default:
		if(blklen>0) {
			if(c->debug_level>=2) {
				de_dbg_hexdump(c, c->infile, czz.startpos, blklen, 256, NULL, 0x1);
			}
			else {
				de_dbg(c, "[%d bytes of tagged block data at %d]", (int)blklen, (int)czz.startpos);
			}
		}
	}
	de_dbg_indent(c, -1);

	// Apparently, the data is padded to the next multiple of 4 bytes.
	// (This is not what the PSD spec says.)
	zz->pos += de_pad_to_4(blklen);
	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq $0x4, -0x38(%rbp)
movq -0x20(%rbp), %rdi
callq 0xf40b0
cmpq $0xc, %rax
jge 0xf7e0d
movl $0x0, -0x4(%rbp)
jmp 0xf8884
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
callq 0xf3330
movl %eax, -0x6c(%rbp)
cmpl $0x3842494d, -0x6c(%rbp) # imm = 0x3842494D
je 0xf7e61
cmpl $0x38423634, -0x6c(%rbp) # imm = 0x38423634
je 0xf7e61
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %eax, %edx
leaq 0xc7af1(%rip), %rsi     # 0x1bf93f
movb $0x0, %al
callq 0x15bc10
movl $0x0, -0x4(%rbp)
jmp 0xf8884
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf3d80
movq -0x18(%rbp), %rax
cmpq $0x8, 0x20(%rax)
jne 0xf7f65
movl -0x64(%rbp), %eax
movl %eax, -0x8c(%rbp)
subl $0x416c7068, %eax       # imm = 0x416C7068
je 0xf7f5b
jmp 0xf7e9b
movl -0x8c(%rbp), %eax
subl $0x46456964, %eax       # imm = 0x46456964
je 0xf7f5b
jmp 0xf7eae
movl -0x8c(%rbp), %eax
subl $0x464d736b, %eax       # imm = 0x464D736B
je 0xf7f5b
jmp 0xf7ec1
movl -0x8c(%rbp), %eax
subl $0x46586964, %eax       # imm = 0x46586964
je 0xf7f5b
jmp 0xf7ed4
movl -0x8c(%rbp), %eax
subl $0x4c4d736b, %eax       # imm = 0x4C4D736B
je 0xf7f5b
jmp 0xf7ee3
movl -0x8c(%rbp), %eax
subl $0x4c617972, %eax       # imm = 0x4C617972
je 0xf7f5b
jmp 0xf7ef2
movl -0x8c(%rbp), %eax
subl $0x4c723136, %eax       # imm = 0x4C723136
je 0xf7f5b
jmp 0xf7f01
movl -0x8c(%rbp), %eax
subl $0x4c723332, %eax       # imm = 0x4C723332
je 0xf7f5b
jmp 0xf7f10
movl -0x8c(%rbp), %eax
subl $0x4d743136, %eax       # imm = 0x4D743136
je 0xf7f5b
jmp 0xf7f1f
movl -0x8c(%rbp), %eax
subl $0x4d743332, %eax       # imm = 0x4D743332
je 0xf7f5b
jmp 0xf7f2e
movl -0x8c(%rbp), %eax
subl $0x4d74726e, %eax       # imm = 0x4D74726E
je 0xf7f5b
jmp 0xf7f3d
movl -0x8c(%rbp), %eax
subl $0x50785344, %eax       # imm = 0x50785344
je 0xf7f5b
jmp 0xf7f4c
movl -0x8c(%rbp), %eax
subl $0x6c6e6b32, %eax       # imm = 0x6C6E6B32
jne 0xf7f63
jmp 0xf7f5b
movq $0x8, -0x38(%rbp)
jmp 0xf7f65
cmpq $0x8, -0x38(%rbp)
jne 0xf7f93
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
callq 0xf8890
movq %rax, -0x30(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x15f830
jmp 0xf7faf
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rsi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
callq 0xf3330
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0xf3380
movq -0x10(%rbp), %rdi
leaq -0x58(%rbp), %rdx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %ecx
movl -0x80(%rbp), %r8d
movl -0x30(%rbp), %r9d
leaq 0xc798e(%rip), %rsi     # 0x1bf96f
xorl %eax, %eax
callq 0x15b0d0
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movl -0x64(%rbp), %eax
movl %eax, -0x90(%rbp)
subl $0x416e4473, %eax       # imm = 0x416E4473
je 0xf876a
jmp 0xf800c
movl -0x90(%rbp), %eax
subl $0x43674564, %eax       # imm = 0x43674564
je 0xf8559
jmp 0xf801f
movl -0x90(%rbp), %eax
subl $0x46456964, %eax       # imm = 0x46456964
je 0xf8734
jmp 0xf8032
movl -0x90(%rbp), %eax
subl $0x46586964, %eax       # imm = 0x46586964
je 0xf8734
jmp 0xf8045
movl -0x90(%rbp), %eax
subl $0x4764466c, %eax       # imm = 0x4764466C
je 0xf84a5
jmp 0xf8058
movl -0x90(%rbp), %eax
subl $0x4c617972, %eax       # imm = 0x4C617972
je 0xf840d
jmp 0xf806b
movl -0x90(%rbp), %eax
subl $0x4c723136, %eax       # imm = 0x4C723136
je 0xf840d
jmp 0xf807e
movl -0x90(%rbp), %eax
addl $0xaf9e8bce, %eax       # imm = 0xAF9E8BCE
subl $0x2, %eax
jb 0xf8447
jmp 0xf8094
movl -0x90(%rbp), %eax
subl $0x50617474, %eax       # imm = 0x50617474
je 0xf8447
jmp 0xf80a7
movl -0x90(%rbp), %eax
subl $0x5074466c, %eax       # imm = 0x5074466C
je 0xf84c9
jmp 0xf80ba
movl -0x90(%rbp), %eax
subl $0x50785363, %eax       # imm = 0x50785363
je 0xf85e9
jmp 0xf80cd
movl -0x90(%rbp), %eax
subl $0x536f436f, %eax       # imm = 0x536F436F
je 0xf84ed
jmp 0xf80e0
movl -0x90(%rbp), %eax
subl $0x536f4c64, %eax       # imm = 0x536F4C64
je 0xf871b
jmp 0xf80f3
movl -0x90(%rbp), %eax
subl $0x54787432, %eax       # imm = 0x54787432
je 0xf86e4
jmp 0xf8106
movl -0x90(%rbp), %eax
subl $0x54795368, %eax       # imm = 0x54795368
je 0xf86fe
jmp 0xf8119
movl -0x90(%rbp), %eax
subl $0x61626464, %eax       # imm = 0x61626464
je 0xf860d
jmp 0xf812c
movl -0x90(%rbp), %eax
subl $0x616e4658, %eax       # imm = 0x616E4658
je 0xf85c5
jmp 0xf813f
movl -0x90(%rbp), %eax
subl $0x61727462, %eax       # imm = 0x61727462
je 0xf860d
jmp 0xf8152
movl -0x90(%rbp), %eax
subl $0x61727464, %eax       # imm = 0x61727464
je 0xf860d
jmp 0xf8165
movl -0x90(%rbp), %eax
subl $0x626c7768, %eax       # imm = 0x626C7768
je 0xf8535
jmp 0xf8178
movl -0x90(%rbp), %eax
subl $0x636c626c, %eax       # imm = 0x636C626C
je 0xf8359
jmp 0xf818b
movl -0x90(%rbp), %eax
subl $0x64657363, %eax       # imm = 0x64657363
je 0xf8794
jmp 0xf819e
movl -0x90(%rbp), %eax
subl $0x66787270, %eax       # imm = 0x66787270
je 0xf867c
jmp 0xf81b1
movl -0x90(%rbp), %eax
subl $0x696e6678, %eax       # imm = 0x696E6678
je 0xf837d
jmp 0xf81c4
movl -0x90(%rbp), %eax
subl $0x6b6e6b6f, %eax       # imm = 0x6B6E6B6F
je 0xf83a1
jmp 0xf81d7
movl -0x90(%rbp), %eax
subl $0x6c667832, %eax       # imm = 0x6C667832
je 0xf86c7
jmp 0xf81ea
movl -0x90(%rbp), %eax
addl $0x939194ce, %eax       # imm = 0x939194CE
subl $0x2, %eax
jb 0xf842a
jmp 0xf8200
movl -0x90(%rbp), %eax
subl $0x6c6e6b44, %eax       # imm = 0x6C6E6B44
je 0xf842a
jmp 0xf8213
movl -0x90(%rbp), %eax
subl $0x6c6e7372, %eax       # imm = 0x6C6E7372
je 0xf83e9
jmp 0xf8226
movl -0x90(%rbp), %eax
subl $0x6c724658, %eax       # imm = 0x6C724658
je 0xf8464
jmp 0xf8239
movl -0x90(%rbp), %eax
subl $0x6c736374, %eax       # imm = 0x6C736374
je 0xf8695
jmp 0xf824c
movl -0x90(%rbp), %eax
subl $0x6c737066, %eax       # imm = 0x6C737066
je 0xf86ae
jmp 0xf825f
movl -0x90(%rbp), %eax
subl $0x6c756e69, %eax       # imm = 0x6C756E69
je 0xf8481
jmp 0xf8272
movl -0x90(%rbp), %eax
subl $0x6c796964, %eax       # imm = 0x6C796964
je 0xf83c5
jmp 0xf8285
movl -0x90(%rbp), %eax
subl $0x70617474, %eax       # imm = 0x70617474
je 0xf87be
jmp 0xf8298
movl -0x90(%rbp), %eax
subl $0x70746873, %eax       # imm = 0x70746873
je 0xf85a1
jmp 0xf82ab
movl -0x90(%rbp), %eax
subl $0x73616d70, %eax       # imm = 0x73616D70
je 0xf87de
jmp 0xf82be
movl -0x90(%rbp), %eax
subl $0x73686d64, %eax       # imm = 0x73686D64
je 0xf8751
jmp 0xf82d1
movl -0x90(%rbp), %eax
subl $0x74795368, %eax       # imm = 0x74795368
je 0xf86fe
jmp 0xf82e4
movl -0x90(%rbp), %eax
subl $0x76696241, %eax       # imm = 0x76696241
je 0xf857d
jmp 0xf82f7
movl -0x90(%rbp), %eax
subl $0x766d736b, %eax       # imm = 0x766D736B
je 0xf8631
jmp 0xf830a
movl -0x90(%rbp), %eax
subl $0x766f676b, %eax       # imm = 0x766F676B
je 0xf8663
jmp 0xf831d
movl -0x90(%rbp), %eax
subl $0x76736367, %eax       # imm = 0x76736367
je 0xf864a
jmp 0xf8330
movl -0x90(%rbp), %eax
subl $0x76736d73, %eax       # imm = 0x76736D73
je 0xf8631
jmp 0xf8343
movl -0x90(%rbp), %eax
subl $0x7673746b, %eax       # imm = 0x7673746B
je 0xf8511
jmp 0xf87fa
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc7626(%rip), %r8      # 0x1bf999
callq 0xf88e0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc7619(%rip), %r8      # 0x1bf9b0
callq 0xf88e0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc760d(%rip), %r8      # 0x1bf9c8
callq 0xf88e0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc75f2(%rip), %r8      # 0x1bf9d1
callq 0xf8950
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc75d7(%rip), %r8      # 0x1bf9da
callq 0xf89c0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf8a30
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf8a70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf8b20
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf8b50
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc754d(%rip), %r8      # 0x1bf9e8
callq 0xf8ce0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc753c(%rip), %r8      # 0x1bf9fb
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc752e(%rip), %r8      # 0x1bfa11
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc751f(%rip), %r8      # 0x1bfa26
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc7515(%rip), %r8      # 0x1bfa40
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc7504(%rip), %r8      # 0x1bfa53
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc74f0(%rip), %r8      # 0x1bfa63
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc74e9(%rip), %r8      # 0x1bfa80
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc74ce(%rip), %r8      # 0x1bfa89
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc74bc(%rip), %r8      # 0x1bfa9b
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc74aa(%rip), %r8      # 0x1bfaad
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xc7498(%rip), %r8      # 0x1bfabf
callq 0xf8d70
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf8e00
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf8ed0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf8f40
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf8fa0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf9050
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf9150
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf91d0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x30(%rbp), %rcx
callq 0xf76a0
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf9270
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf9380
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf9420
jmp 0xf8859
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf95a0
jmp 0xf8859
cmpl $0x1, -0x24(%rbp)
jne 0xf878f
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xd8446(%rip), %r8      # 0x1d0bd0
callq 0xf8d70
jmp 0xf8859
cmpl $0x2, -0x24(%rbp)
jne 0xf87b9
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq 0xd841c(%rip), %r8      # 0x1d0bd0
callq 0xf8d70
jmp 0xf8859
cmpl $0x2, -0x24(%rbp)
jne 0xf87dc
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
leaq -0x68(%rbp), %rcx
callq 0xf8b20
jmp 0xf8859
cmpl $0x2, -0x24(%rbp)
jne 0xf87f8
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0xf9760
jmp 0xf8859
cmpq $0x0, -0x30(%rbp)
jle 0xf8857
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
jl 0xf8837
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x80(%rbp), %rdx
movq -0x30(%rbp), %rcx
movl $0x100, %r8d            # imm = 0x100
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, (%rsp)
callq 0x15b840
jmp 0xf8855
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rax
movl %eax, %edx
movq -0x80(%rbp), %rax
movl %eax, %ecx
leaq 0xc727f(%rip), %rsi     # 0x1bfacd
movb $0x0, %al
callq 0x15b0d0
jmp 0xf8857
jmp 0xf8859
movq -0x10(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
movq -0x30(%rbp), %rdi
callq 0x15ce30
movq %rax, %rcx
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq