// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/exe.c
// Function: do_pe_resource_data_entry
static void do_pe_resource_data_entry(deark *c, lctx *d, i64 rel_pos)
{
	i64 data_size;
	i64 data_virt_addr;
	i64 data_real_offset;
	u32 type_id;
	de_finfo *fi = NULL;
	const char *rsrcname;

	type_id = d->cur_rsrc_type;
	if(d->cur_rsrc_type_info && d->cur_rsrc_type_info->name)
		rsrcname = d->cur_rsrc_type_info->name;
	else
		rsrcname = "?";

	de_dbg(c, "resource data entry at %"I64_FMT"(%"I64_FMT") rsrc_type=%d (%s)",
		(i64)(d->pe_cur_base_addr+rel_pos), rel_pos, (int)type_id, rsrcname);
	de_dbg_indent(c, 1);

	data_virt_addr = de_getu32le(d->pe_cur_base_addr+rel_pos);
	data_size = de_getu32le(d->pe_cur_base_addr+rel_pos+4);
	de_dbg(c, "resource data virt. addr=%"I64_FMT" (0x%08x), size=%"I64_FMT,
		data_virt_addr, (UI)data_virt_addr, data_size);

	data_real_offset = data_virt_addr - d->pe_cur_section_virt_addr + d->pe_cur_section_data_offset;
	de_dbg(c, "data offset in file: %"I64_FMT, data_real_offset);

	fi = de_finfo_create(c);

	if(d->pe_cur_name_offset) {
		de_finfo_set_name_from_pe_string(c, fi, c->infile, d->pe_cur_name_offset);
	}

	do_ne_pe_extract_resource(c, d, type_id, d->cur_rsrc_type_info, data_real_offset, data_size, fi);

	de_finfo_destroy(c, fi);
	de_dbg_indent(c, -1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x10(%rbp), %rax
movl 0x108(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x110(%rax)
je 0x6235e
movq -0x10(%rbp), %rax
movq 0x110(%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x6235e
movq -0x10(%rbp), %rax
movq 0x110(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x62369
leaq 0x1558c8(%rip), %rax    # 0x1b7c2d
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0xe8(%rax), %rdx
addq -0x18(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl -0x34(%rbp), %r8d
movq -0x48(%rbp), %r9
leaq 0x146c00(%rip), %rsi    # 0x1a8f8f
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0xe8(%rax), %rsi
addq -0x18(%rbp), %rsi
callq 0x165540
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0xe8(%rax), %rsi
addq -0x18(%rbp), %rsi
addq $0x4, %rsi
callq 0x165540
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rdx
movq -0x28(%rbp), %rax
movl %eax, %ecx
movq -0x20(%rbp), %r8
leaq 0x146bc0(%rip), %rsi    # 0x1a8fc1
movb $0x0, %al
callq 0x15b0d0
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
subq 0xf0(%rcx), %rax
movq -0x10(%rbp), %rcx
addq 0xf8(%rcx), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq 0x146bbc(%rip), %rsi    # 0x1a8ff1
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
callq 0x15d230
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x100(%rax)
je 0x62477
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x100(%rax), %rcx
callq 0x62c90
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x34(%rbp), %edx
movq -0x10(%rbp), %rax
movq 0x110(%rax), %rcx
movq -0x30(%rbp), %r8
movq -0x20(%rbp), %r9
movq -0x40(%rbp), %rax
movq %rax, (%rsp)
callq 0x62d40
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x15d260
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)