// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/modules/afcp.c
// Function: do_afcp_record
static void do_afcp_record(deark *c, struct afcpctx *d, i64 pos)
{
	struct afcprecord *ar = NULL;

	ar = de_malloc(c, sizeof(struct afcprecord));
	dbuf_read_fourcc(c->infile, pos, &ar->id4cc, 4, 0);
	de_dbg(c, "id: '%s'", ar->id4cc.id_dbgstr);
	ar->dlen = dbuf_getu32x(c->infile, pos+4, d->is_le);
	de_dbg(c, "dlen: %"I64_FMT, ar->dlen);
	ar->dpos = dbuf_getu32x(c->infile, pos+8, d->is_le);
	de_dbg(c, "dpos: %"I64_FMT, ar->dpos);
	if(ar->dpos<d->start_tag_offs || ar->dpos+ar->dlen>d->endpos) goto done;

	if(ar->id4cc.id==CODE_IPTC) {
		de_dbg(c, "IPTC-IIM data");
		de_dbg_indent(c, 1);
		fmtutil_handle_iptc(c, c->infile, ar->dpos, ar->dlen, 0x0);
		de_dbg_indent(c, -1);
	}
	else if(ar->id4cc.id==CODE_Nail || ar->id4cc.id==CODE_PrVw) {
		do_afcprec_thumbnail(c, d, ar);
	}
	else {
		if(c->debug_level>=2) {
			de_dbg_hexdump(c, c->infile, ar->dpos, ar->dlen, 256, NULL, 0x1);
		}
	}
done:
	de_free(c, ar);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movl $0x40, %esi
callq 0x15b780
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x10, %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
callq 0x169860
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
addq $0x10, %rdx
addq $0x10, %rdx
leaq 0x171361(%rip), %rsi    # 0x1a0337
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
addq $0x4, %rsi
movq -0x10(%rbp), %rax
movl (%rax), %edx
callq 0x1658c0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
leaq 0x1a2390(%rip), %rsi    # 0x1d13a4
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
addq $0x8, %rsi
movq -0x10(%rbp), %rax
movl (%rax), %edx
callq 0x1658c0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x1a77ea(%rip), %rsi    # 0x1d683e
movb $0x0, %al
callq 0x15b0d0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jl 0x2f086
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x20(%rbp), %rcx
addq (%rcx), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jle 0x2f08b
jmp 0x2f159
movq -0x20(%rbp), %rax
cmpl $0x49505443, 0x14(%rax) # imm = 0x49505443
jne 0x2f0eb
movq -0x8(%rbp), %rdi
leaq 0x17129d(%rip), %rsi    # 0x1a0340
movb $0x0, %al
callq 0x15b0d0
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x15b560
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rax
movq (%rax), %rcx
xorl %r8d, %r8d
callq 0x173700
movq -0x8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x15b560
jmp 0x2f157
movq -0x20(%rbp), %rax
cmpl $0x4e61696c, 0x14(%rax) # imm = 0x4E61696C
je 0x2f105
movq -0x20(%rbp), %rax
cmpl $0x50725677, 0x14(%rax) # imm = 0x50725677
jne 0x2f118
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x2f170
jmp 0x2f155
movq -0x8(%rbp), %rax
cmpl $0x2, (%rax)
jl 0x2f153
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rax
movq (%rax), %rcx
movl $0x100, %r8d            # imm = 0x100
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, (%rsp)
callq 0x15b840
jmp 0x2f155
jmp 0x2f157
jmp 0x2f159
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x15b820
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)