// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/iso9660.c
// Function: do_directory_record
static int do_directory_record(deark *c, lctx *d, i64 pos1, struct dir_record *dr, int nesting_level)
{
	i64 n;
	i64 pos = pos1;
	i64 sys_use_len;
	u8 b;
	u8 specialfnbyte;
	de_ucstring *tmps = NULL;
	int retval = 0;
	de_ext_encoding file_id_encoding;

	dr->len_dir_rec = (i64)de_getbyte_p(&pos);
	de_dbg(c, "dir rec len: %u", (unsigned int)dr->len_dir_rec);
	if(dr->len_dir_rec<1) goto done;

	dr->len_ext_attr_rec = (i64)de_getbyte_p(&pos);
	de_dbg(c, "ext attrib rec len: %u", (unsigned int)dr->len_ext_attr_rec);

	dr->extent_blk = getu32bbo_p(c->infile, &pos);
	de_dbg(c, "loc. of extent: %"I64_FMT" (block #%u)", sector_dpos(d, dr->extent_blk),
		(unsigned int)dr->extent_blk);
	dr->data_len = getu32bbo_p(c->infile, &pos);
	de_dbg(c, "data length: %u", (unsigned int)dr->data_len);

	read_datetime7(c, d, pos, d->vol->is_hsf?6:7, &dr->recording_time);
	dbg_timestamp(c, &dr->recording_time, "recording time");
	pos += d->vol->is_hsf?6:7;

	dr->file_flags = de_getbyte_p(&pos);
	tmps = ucstring_create(c);
	if(dr->file_flags & 0x01) ucstring_append_flags_item(tmps, "hidden");
	if(dr->file_flags & 0x02) {
		ucstring_append_flags_item(tmps, "directory");
		dr->is_dir = 1;
	}
	if(dr->file_flags & 0x04) {
		ucstring_append_flags_item(tmps, "associated file");
	}
	if(dr->file_flags & 0x08) {
		ucstring_append_flags_item(tmps, "record format");
		dr->is_specialfileformat = 1;
	}
	if(dr->file_flags & 0x10) ucstring_append_flags_item(tmps, "protected");
	if(dr->file_flags & 0x80) {
		ucstring_append_flags_item(tmps, "multi-extent");
		dr->is_specialfileformat = 1;
	}
	de_dbg(c, "file flags: 0x%02x (%s)", (unsigned int)dr->file_flags,
		ucstring_getpsz_d(tmps));

	if(d->vol->is_hsf) {
		pos++; // reserved
	}
	else {
		b = de_getbyte_p(&pos);
		de_dbg(c, "file unit size: %u", (unsigned int)b);
	}

	if(d->vol->is_hsf) {
		pos++; // interleave size
		pos++; // interleave skip factor
	}
	else {
		b = de_getbyte_p(&pos);
		de_dbg(c, "interleave gap size: %u", (unsigned int)b);
		if(b!=0) {
			dr->is_specialfileformat = 1;
		}
	}

	n = getu16bbo_p(c->infile, &pos);
	de_dbg(c, "volume sequence number: %u", (unsigned int)n);
	dr->file_id_len = (i64)de_getbyte_p(&pos);

	if(d->vol->is_cdi) {
		dr->cdi_attribs = (UI)de_getu16be(pos1 + 37 + dr->file_id_len);
		de_dbg(c, "CD-i attribs: 0x%04x", (UI)dr->cdi_attribs);
		if(dr->cdi_attribs & 0x8000) {
			dr->is_dir = 1;
		}
	}

	if(dr->is_dir && dr->file_id_len==1) {
		// Peek at the first (& only) byte of the filename.
		specialfnbyte = de_getbyte(pos);
	}
	else {
		specialfnbyte = 0xff;
	}

	if(specialfnbyte==0x00 || specialfnbyte==0x01) {
		// To better display the "thisdir" and "parentdir" directory entries
		file_id_encoding = DE_EXTENC_MAKE(DE_ENCODING_ASCII, DE_ENCSUBTYPE_PRINTABLE);
	}
	else if(d->vol->encoding!=DE_ENCODING_UNKNOWN) {
		file_id_encoding = d->vol->encoding;
	}
	else if(d->vol->uses_SUSP) {
		// We're using the user_req_encoding for the Rock Ridge names,
		// so don't use it here.
		file_id_encoding = DE_ENCODING_ASCII;
	}
	else if(d->user_req_encoding!=DE_ENCODING_UNKNOWN) {
		file_id_encoding = d->user_req_encoding;
	}
	else {
		file_id_encoding = DE_ENCODING_ASCII;
	}

	dr->fname = ucstring_create(c);
	dbuf_read_to_ucstring(c->infile, pos, dr->file_id_len, dr->fname, 0, file_id_encoding);
	de_dbg(c, "file id: \"%s\"", ucstring_getpsz_d(dr->fname));

	if(d->names_to_lowercase && !d->vol->is_joliet) {
		name_to_lowercase(dr->fname);
	}

	if(specialfnbyte==0x00) {
		dr->is_thisdir = 1;
		if(nesting_level==0) {
			dr->is_root_dot = 1;
		}
	}
	else if(specialfnbyte==0x01) {
		dr->is_parentdir = 1;
	}
	pos += dr->file_id_len;

	if((dr->file_id_len%2)==0) pos++; // padding byte

	// System Use area
	sys_use_len = pos1+dr->len_dir_rec-pos;
	if(sys_use_len>0 && !d->vol->is_cdi) {
		do_dir_rec_system_use_area(c, d, dr, pos, sys_use_len);
	}

	if(dr->has_riscos_data && (dr->rfa.attribs&0x100)) {
		// Based on what Linux does, and other evidence: If a certain attribute bit
		// is set, the filename is supposed to start with an exclamation point.
		if(ucstring_isnonempty(dr->fname)) {
			if(dr->fname->str[0]=='_') {
				dr->fname->str[0] = '!';
			}
		}
	}

	if(dr->len_ext_attr_rec>0) {
		// TODO
		de_err(c, "Can't handle files with extended attribute records");
		goto done;
	}

	if(dr->is_dir && !dr->is_thisdir && !dr->is_parentdir) {
		do_extract_file(c, d, dr);
		if(ucstring_isnonempty(dr->rr_name)) {
			de_strarray_push(d->curpath, dr->rr_name);
		}
		else {
			de_strarray_push(d->curpath, dr->fname);
		}
		do_directory(c, d, sector_dpos(d, dr->extent_blk), dr->data_len, nesting_level+1);
		de_strarray_pop(d->curpath);
	}
	else if(!dr->is_dir) {
		do_extract_file(c, d, dr);
	}
	else if(dr->is_root_dot) {
		do_extract_file(c, d, dr);
	}

	retval = 1;

done:
	ucstring_destroy(tmps);
	return retval;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x0, -0x50(%rbp)
movl $0x0, -0x54(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movzbl %al, %eax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %edx
leaq 0xeb816(%rip), %rsi     # 0x1b9d4f
movb $0x0, %al
callq 0x15b0d0
movq -0x20(%rbp), %rax
cmpq $0x1, 0x10(%rax)
jge 0xce550
jmp 0xcec82
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movzbl %al, %eax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movl %eax, %edx
leaq 0xeb7dc(%rip), %rsi     # 0x1b9d5f
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0xce0e0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0xcd1e0
movq -0x60(%rbp), %rdi
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movl %eax, %ecx
leaq 0xeb79f(%rip), %rsi     # 0x1b9d76
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0xce0e0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movl %eax, %edx
leaq 0xeb4c3(%rip), %rsi     # 0x1b9ad2
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movzbl 0x28(%rax), %r8d
movl $0x7, %ecx
movl $0x6, %eax
cmpl $0x0, %r8d
cmovnel %eax, %ecx
movq -0x20(%rbp), %r8
addq $0x48, %r8
callq 0xcecf0
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x48, %rsi
leaq 0xeb736(%rip), %rdx     # 0x1b9d96
callq 0xce3f0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movzbl 0x28(%rax), %edx
movl $0x7, %eax
movl $0x6, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
cltq
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xce6d0
movq -0x50(%rbp), %rdi
leaq 0xeb6da(%rip), %rsi     # 0x1b9da5
callq 0x172680
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xce6f7
movq -0x50(%rbp), %rdi
leaq 0xd146d(%rip), %rsi     # 0x19fb57
callq 0x172680
movq -0x20(%rbp), %rax
movb $0x1, 0x1(%rax)
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xce716
movq -0x50(%rbp), %rdi
leaq 0xeb69b(%rip), %rsi     # 0x1b9dac
callq 0x172680
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xce73d
movq -0x50(%rbp), %rdi
leaq 0xeb68c(%rip), %rsi     # 0x1b9dbc
callq 0x172680
movq -0x20(%rbp), %rax
movb $0x1, 0x9(%rax)
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xce75c
movq -0x50(%rbp), %rdi
leaq 0xeb673(%rip), %rsi     # 0x1b9dca
callq 0x172680
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0xce785
movq -0x50(%rbp), %rdi
leaq 0xeb65c(%rip), %rsi     # 0x1b9dd4
callq 0x172680
movq -0x20(%rbp), %rax
movb $0x1, 0x9(%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0x64(%rbp)
movq -0x50(%rbp), %rdi
callq 0x172650
movq -0x70(%rbp), %rdi
movl -0x64(%rbp), %edx
movq %rax, %rcx
leaq 0xeb630(%rip), %rsi     # 0x1b9de1
movb $0x0, %al
callq 0x15b0d0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x28(%rax)
je 0xce7d4
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xce7fe
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movb %al, -0x41(%rbp)
movq -0x8(%rbp), %rdi
movzbl -0x41(%rbp), %edx
leaq 0xeb602(%rip), %rsi     # 0x1b9df9
movb $0x0, %al
callq 0x15b0d0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x28(%rax)
je 0xce826
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xce863
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movb %al, -0x41(%rbp)
movq -0x8(%rbp), %rdi
movzbl -0x41(%rbp), %edx
leaq 0xeb5c3(%rip), %rsi     # 0x1b9e0c
movb $0x0, %al
callq 0x15b0d0
movzbl -0x41(%rbp), %eax
cmpl $0x0, %eax
je 0xce861
movq -0x20(%rbp), %rax
movb $0x1, 0x9(%rax)
jmp 0xce863
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0xce120
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rax
movl %eax, %edx
leaq 0xeb103(%rip), %rsi     # 0x1b998c
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x165170
movzbl %al, %eax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x27(%rax)
je 0xce916
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
addq $0x25, %rsi
movq -0x20(%rbp), %rax
addq 0x28(%rax), %rsi
callq 0x1651d0
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movl 0xc(%rax), %edx
leaq 0xeb530(%rip), %rsi     # 0x1b9e24
movb $0x0, %al
callq 0x15b0d0
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
je 0xce914
movq -0x20(%rbp), %rax
movb $0x1, 0x1(%rax)
jmp 0xce916
movq -0x20(%rbp), %rax
movzbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0xce944
movq -0x20(%rbp), %rax
cmpq $0x1, 0x28(%rax)
jne 0xce944
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x38(%rbp), %rsi
callq 0x165060
movb %al, -0x42(%rbp)
jmp 0xce948
movb $-0x1, -0x42(%rbp)
movzbl -0x42(%rbp), %eax
cmpl $0x0, %eax
je 0xce95a
movzbl -0x42(%rbp), %eax
cmpl $0x1, %eax
jne 0xce963
movl $0x401, -0x58(%rbp)     # imm = 0x401
jmp 0xce9b9
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x20(%rax)
je 0xce981
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x20(%rax), %eax
movl %eax, -0x58(%rbp)
jmp 0xce9b7
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x2a(%rax)
je 0xce998
movl $0x1, -0x58(%rbp)
jmp 0xce9b5
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
je 0xce9ac
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x58(%rbp)
jmp 0xce9b3
movl $0x1, -0x58(%rbp)
jmp 0xce9b5
jmp 0xce9b7
jmp 0xce9b9
movq -0x8(%rbp), %rdi
callq 0x1711d0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x38(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rcx
movl -0x58(%rbp), %r9d
xorl %r8d, %r8d
callq 0x1669f0
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x172650
movq -0x78(%rbp), %rdi
movq %rax, %rdx
leaq 0xeb421(%rip), %rsi     # 0x1b9e39
movb $0x0, %al
callq 0x15b0d0
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %eax
cmpl $0x0, %eax
je 0xcea47
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x25(%rax)
jne 0xcea47
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xcee40
movzbl -0x42(%rbp), %eax
cmpl $0x0, %eax
jne 0xcea68
movq -0x20(%rbp), %rax
movb $0x1, 0x2(%rax)
cmpl $0x0, -0x24(%rbp)
jne 0xcea66
movq -0x20(%rbp), %rax
movb $0x1, 0x4(%rax)
jmp 0xcea7b
movzbl -0x42(%rbp), %eax
cmpl $0x1, %eax
jne 0xcea79
movq -0x20(%rbp), %rax
movb $0x1, 0x3(%rax)
jmp 0xcea7b
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movl $0x2, %ecx
cqto
idivq %rcx
cmpq $0x0, %rdx
jne 0xceaaf
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
addq 0x10(%rcx), %rax
subq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jle 0xceaf1
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
cmpb $0x0, 0x27(%rax)
jne 0xceaf1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %r8
callq 0xceec0
movq -0x20(%rbp), %rax
movzbl 0x78(%rax), %eax
cmpl $0x0, %eax
je 0xceb4b
movq -0x20(%rbp), %rax
movl 0x8c(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0xceb4b
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x1717f0
cmpl $0x0, %eax
je 0xceb49
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x5f, (%rax)
jne 0xceb47
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rax
movq 0x8(%rax), %rax
movl $0x21, (%rax)
jmp 0xceb49
jmp 0xceb4b
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jle 0xceb6d
movq -0x8(%rbp), %rdi
leaq 0xeb2e6(%rip), %rsi     # 0x1b9e47
movb $0x0, %al
callq 0x15bfb0
jmp 0xcec82
movq -0x20(%rbp), %rax
movzbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0xcec3f
movq -0x20(%rbp), %rax
cmpb $0x0, 0x2(%rax)
jne 0xcec3f
movq -0x20(%rbp), %rax
cmpb $0x0, 0x3(%rax)
jne 0xcec3f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xcf180
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1717f0
cmpl $0x0, %eax
je 0xcebd4
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rsi
callq 0x1728d0
jmp 0xcebe9
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x1728d0
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0xcd1e0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rcx
movl -0x24(%rbp), %r8d
addl $0x1, %r8d
callq 0xccf00
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x172850
jmp 0xcec7b
movq -0x20(%rbp), %rax
cmpb $0x0, 0x1(%rax)
jne 0xcec5c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xcf180
jmp 0xcec79
movq -0x20(%rbp), %rax
cmpb $0x0, 0x4(%rax)
je 0xcec77
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0xcf180
jmp 0xcec79
jmp 0xcec7b
movl $0x1, -0x54(%rbp)
movq -0x50(%rbp), %rdi
callq 0x171750
movl -0x54(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopw (%rax,%rax)