// File: /workspace/github_c_makefile_star2_O0/jsummers[P]deark/src/deark-data.c
// Function: de_encconv_init
void de_encconv_init(struct de_encconv_state *es, de_ext_encoding ee)
{
	de_encoding enc = DE_EXTENC_GET_BASE(ee);

	de_zeromem(es, sizeof(struct de_encconv_state));
	es->enc =  DE_EXTENC_GET_BASE(ee);
	es->enc_subtype = DE_EXTENC_GET_SUBTYPE(ee);

	if(enc==DE_ENCODING_LATIN1 || enc==DE_ENCODING_UTF8 ||
		enc==DE_ENCODING_ASCII)
	{
		return;
	}

	switch(enc) {
	case DE_ENCODING_LATIN2:
		es->fn = de_latin2_to_unicode;
		break;
	case DE_ENCODING_CP437:
		switch(es->enc_subtype) {
		case DE_ENCSUBTYPE_CONTROLS:
			es->fn = de_cp437c_to_unicode;
			break;
		case DE_ENCSUBTYPE_HYBRID:
			es->fn = de_cp437h_to_unicode;
			break;
		default:
			es->fn = de_cp437g_to_unicode;
		}
		break;
	case DE_ENCODING_CP850:
		es->fn = de_cp850_to_unicode;
		break;
	case DE_ENCODING_CP866:
		es->fn = de_cp866_to_unicode;
		break;
	case DE_ENCODING_PETSCII:
		es->fn = de_petscii_to_unicode;
		break;
	case DE_ENCODING_WINDOWS1252:
		es->fn = de_windows1252_to_unicode;
		break;
	case DE_ENCODING_MACROMAN:
		es->fn = de_ext_ascii_to_unicode;
		es->fn_pvt_data = (const void*)&macroman_pvt_data;
		break;
	case DE_ENCODING_WINDOWS1250:
		es->fn = de_ext_ascii_to_unicode;
		es->fn_pvt_data = (const void*)&windows1250_pvt_data;
		break;
	case DE_ENCODING_WINDOWS1251:
		es->fn = de_ext_ascii_to_unicode;
		es->fn_pvt_data = (const void*)&windows1251_pvt_data;
		break;
	case DE_ENCODING_WINDOWS1253:
		es->fn = de_ext_ascii_to_unicode;
		es->fn_pvt_data = (const void*)&windows1253_pvt_data;
		break;
	case DE_ENCODING_WINDOWS1254:
		es->fn = de_ext_ascii_to_unicode;
		es->fn_pvt_data = (const void*)&windows1254_pvt_data;
		break;
	case DE_ENCODING_WINDOWS874:
		es->fn = de_windows874_to_unicode;
		break;
	case DE_ENCODING_ATARIST:
		es->fn = de_atarist_to_unicode;
		break;
	case DE_ENCODING_PALM:
		es->fn = de_palmcs_to_unicode;
		break;
	case DE_ENCODING_RISCOS:
		es->fn = de_riscos_to_unicode;
		break;
	case DE_ENCODING_APPLEII:
		es->fn = de_appleii_to_unicode;
		break;
	case DE_ENCODING_DEC_SPECIAL_GRAPHICS:
		es->fn = de_decspecialgraphics_to_unicode;
		break;
	case DE_ENCODING_ROT13:
		es->fn = de_rot13_to_unicode;
		break;
	default:
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x19140
movl -0xc(%rbp), %ecx
andl $0xff, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movl -0xc(%rbp), %ecx
sarl $0x8, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
cmpl $0x5, -0x10(%rbp)
je 0x1601a8
cmpl $0x2, -0x10(%rbp)
je 0x1601a8
cmpl $0x1, -0x10(%rbp)
jne 0x1601ad
jmp 0x1603b0
movl -0x10(%rbp), %eax
addl $-0x6, %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x12, %eax
ja 0x1603ae
movq -0x18(%rbp), %rax
leaq 0x71e93(%rip), %rcx     # 0x1d2060
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
leaq 0x1df(%rip), %rcx       # 0x1603c0
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x1c(%rbp)
subl $0x2, %eax
je 0x160205
jmp 0x1601fb
movl -0x1c(%rbp), %eax
subl $0x3, %eax
je 0x160216
jmp 0x160227
movq -0x8(%rbp), %rax
leaq 0x250(%rip), %rcx       # 0x160460
movq %rcx, 0x8(%rax)
jmp 0x160236
movq -0x8(%rbp), %rax
leaq 0x29f(%rip), %rcx       # 0x1604c0
movq %rcx, 0x8(%rax)
jmp 0x160236
movq -0x8(%rbp), %rax
leaq 0x2de(%rip), %rcx       # 0x160510
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x31a(%rip), %rcx       # 0x160560
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x336(%rip), %rcx       # 0x160590
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x352(%rip), %rcx       # 0x1605c0
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x39e(%rip), %rcx       # 0x160620
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x3fa(%rip), %rcx       # 0x160690
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
leaq 0xc45cb(%rip), %rcx     # 0x224870
movq %rcx, 0x10(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x3d7(%rip), %rcx       # 0x160690
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
leaq 0xc45b0(%rip), %rcx     # 0x224878
movq %rcx, 0x10(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x3b4(%rip), %rcx       # 0x160690
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
leaq 0xc4595(%rip), %rcx     # 0x224880
movq %rcx, 0x10(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x391(%rip), %rcx       # 0x160690
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
leaq 0xc457a(%rip), %rcx     # 0x224888
movq %rcx, 0x10(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x36e(%rip), %rcx       # 0x160690
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
leaq 0xc455f(%rip), %rcx     # 0x224890
movq %rcx, 0x10(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x3be(%rip), %rcx       # 0x160700
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x45d(%rip), %rcx       # 0x1607b0
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x52c(%rip), %rcx       # 0x160890
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x57b(%rip), %rcx       # 0x1608f0
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x5da(%rip), %rcx       # 0x160960
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x5e9(%rip), %rcx       # 0x160980
movq %rcx, 0x8(%rax)
jmp 0x1603b0
movq -0x8(%rbp), %rax
leaq 0x628(%rip), %rcx       # 0x1609d0
movq %rcx, 0x8(%rax)
jmp 0x1603b0
jmp 0x1603b0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)