// File: /workspace/github_c_makefile_star2_O3/jsummers[P]deark/modules/id3.c
// Function: decode_id3v2_frame_internal
static void decode_id3v2_frame_internal(deark *c, id3v2ctx *d, dbuf *f,
	i64 pos1, i64 len, struct de_fourcc *tag4cc)
{
	if(d->version_code==2) {
		if(tag4cc->id==CODE_TXX || tag4cc->id==CODE_WXX) {
			decode_id3v2_frame_txxx_etc(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->bytes[0]=='T') {
			decode_id3v2_frame_text(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->bytes[0]=='W') {
			decode_id3v2_frame_urllink(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->id==CODE_COM) {
			decode_id3v2_frame_comm(c, d, f, pos1, len);
		}
		else if(tag4cc->id==CODE_GEO) {
			decode_id3v2_frame_geob(c, d, f, pos1, len);
		}
		else if(tag4cc->id==CODE_PIC) {
			decode_id3v2_frame_pic_apic(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->id==CODE_POP) {
			decode_id3v2_frame_pop_popm(c, d, f, pos1, len);
		}
	}
	else if(d->version_code>=3) {
		// "All text frame identifiers begin with "T". Only text frame identifiers
		// begin with "T", with the exception of the "TXXX" frame."
		if(tag4cc->id==CODE_TXXX || tag4cc->id==CODE_WXXX) {
			decode_id3v2_frame_txxx_etc(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->bytes[0]=='T') {
			decode_id3v2_frame_text(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->bytes[0]=='W') {
			decode_id3v2_frame_urllink(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->id==CODE_COMM) {
			decode_id3v2_frame_comm(c, d, f, pos1, len);
		}
		else if(tag4cc->id==CODE_GEOB) {
			decode_id3v2_frame_geob(c, d, f, pos1, len);
		}
		else if(tag4cc->id==CODE_PRIV) {
			decode_id3v2_frame_priv(c, d, f, pos1, len);
		}
		else if(tag4cc->id==CODE_APIC) {
			decode_id3v2_frame_pic_apic(c, d, f, pos1, len, tag4cc);
		}
		else if(tag4cc->id==CODE_POPM) {
			decode_id3v2_frame_pop_popm(c, d, f, pos1, len);
		}
	}
}

// Assembly:
movb 0x30(%rsi), %al
cmpb $0x2, %al
jne 0x759e1
movl 0x4(%r9), %eax
cmpl $0x575858, %eax         # imm = 0x575858
je 0x75a89
cmpl $0x545858, %eax         # imm = 0x545858
je 0x75a89
movzbl (%r9), %r10d
cmpl $0x57, %r10d
je 0x75a16
cmpl $0x54, %r10d
je 0x75c30
cmpl $0x504942, %eax         # imm = 0x504942
jg 0x75a24
cmpl $0x434f4d, %eax         # imm = 0x434F4D
je 0x75d93
cmpl $0x47454f, %eax         # imm = 0x47454F
je 0x75f5b
jmp 0x75a88
jbe 0x75a88
movl 0x4(%r9), %eax
cmpl $0x57585858, %eax       # imm = 0x57585858
je 0x75a89
cmpl $0x54585858, %eax       # imm = 0x54585858
je 0x75a89
movzbl (%r9), %r10d
cmpl $0x57, %r10d
je 0x75a16
cmpl $0x54, %r10d
jne 0x75a44
jmp 0x75c30
movq %rdx, %rsi
movq %rcx, %rdx
movq %r8, %rcx
jmp 0x75d2f
cmpl $0x504943, %eax         # imm = 0x504943
je 0x761f0
cmpl $0x504f50, %eax         # imm = 0x504F50
jne 0x75a88
movq %rdx, %rsi
movq %rcx, %rdx
movq %r8, %rcx
jmp 0x76480
cmpl $0x47454f41, %eax       # imm = 0x47454F41
jle 0x75a72
cmpl $0x47454f42, %eax       # imm = 0x47454F42
je 0x75f5b
cmpl $0x504f504d, %eax       # imm = 0x504F504D
je 0x75a36
cmpl $0x50524956, %eax       # imm = 0x50524956
jne 0x75a88
movq %rdx, %rsi
movq %rcx, %rdx
movq %r8, %rcx
jmp 0x7653e
cmpl $0x41504943, %eax       # imm = 0x41504943
je 0x761f0
cmpl $0x434f4d4d, %eax       # imm = 0x434F4D4D
je 0x75d93
retq