Function at 0x4569d0
Capabilities:
Link many functions at runtime

Disassembly:
sub esp, 8
mov eax, dword [0x56a040]
xor eax, esp
mov dword [esp + 4], eax
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x30]
dec eax
cmp eax, 3
ja case.default.0x4569ef
jmp dword [eax*4 + 0x456cbc]
cmp byte [0x61d255], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jne 0x456a9d
mov eax, dword [0x67353c]
push str.InitiateGFX
push dword [esi + 0x38]
mov dword [0x22c2db0], eax
mov dword [0x22c2db4], eax
call edi
mov edx, eax
test edx, edx
je 0x456a9d
vmovdqu ymm0, ymmword [0x22c2db0]
mov eax, dword [0x22c2e28]
sub esp, 0x7c
mov ecx, esp
vmovdqu ymmword [ecx], ymm0
vmovdqu ymm0, ymmword [0x22c2dd0]
vmovdqu ymmword [ecx + 0x20], ymm0
vmovdqu ymm0, ymmword [0x22c2df0]
vmovdqu ymmword [ecx + 0x40], ymm0
vmovdqu xmm0, xmmword [0x22c2e10]
vmovdqu xmmword [ecx + 0x60], xmm0
vmovq xmm0, qword [0x22c2e20]
vmovq qword [ecx + 0x70], xmm0
mov dword [ecx + 0x78], eax
vzeroupper
call edx
add esp, 0x7c
test eax, eax
jne 0x456a9d
cmp dword [0x27d6f38], eax
jne 0x456a9d
push 0x40
push eax
push str.Couldnt_initialize_video_plugin.
push dword [0x67355c]
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x54fb34
push dword [esi + 0x38]
call edi
test eax, eax
je 0x456ab6
push dword [0x673564]
call eax
add esp, 4
cmp byte [0x61d255], 0
jne case.default.0x4569ef
push 0x54fb28
jmp 0x456c9e
cmp byte [0x61d255], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jne 0x456b47
push str.InitiateAudio
push dword [esi + 0x38]
call edi
mov edx, eax
test edx, edx
je 0x456b47
vmovdqu ymm0, ymmword [0x22c2eec]
mov eax, dword [0x22c2f24]
sub esp, 0x3c
mov ecx, esp
vmovdqu ymmword [ecx], ymm0
vmovdqu xmm0, xmmword [0x22c2f0c]
vmovdqu xmmword [ecx + 0x20], xmm0
vmovq xmm0, qword [0x22c2f1c]
vmovq qword [ecx + 0x30], xmm0
mov dword [ecx + 0x38], eax
vzeroupper
call edx
add esp, 0x3c
test eax, eax
jne 0x456b47
cmp dword [0x27d6f38], eax
jne 0x456b47
push 0x40
push eax
push str.Couldnt_initialize_audio_plugin.
push dword [0x67355c]
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x54fb74
push dword [esi + 0x38]
call edi
test eax, eax
je 0x456b60
push dword [0x673564]
call eax
add esp, 4
cmp byte [0x61d255], 0
jne case.default.0x4569ef
push 0x54fb68
jmp 0x456c9e
cmp byte [0x61d255], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jne 0x456bdd
mov eax, dword [esi + 0x38]
mov ecx, 0x101
cmp word [esi + 0x34], cx
jne 0x456bc1
push str.InitiateControllers
push eax
call edi
test eax, eax
je 0x456bdd
vmovdqu xmm0, xmmword [0x22c3058]
mov ecx, dword [0x22c3068]
sub esp, 0x14
mov edx, esp
vmovdqu xmmword [edx], xmm0
mov dword [edx + 0x10], ecx
call eax
add esp, 0x14
jmp 0x456bdd
push 0x54fb40
push eax
call edi
test eax, eax
je 0x456bdd
push 0x22c3080
push dword [0x67355c]
call eax
add esp, 8
push str.DllConfig
push dword [esi + 0x38]
call edi
test eax, eax
je 0x456bf6
push dword [0x673564]
call eax
add esp, 4
cmp byte [0x61d255], 0
jne case.default.0x4569ef
push 0x54fb98
jmp 0x456c9e
cmp byte [0x61d255], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
jne 0x456c77
push str.InitiateRSP
push dword [esi + 0x38]
call edi
mov dword [esp + 8], 0
test eax, eax
je 0x456c77
vmovdqu ymm0, ymmword [0x22c2fa8]
lea ecx, [esp + 8]
push ecx
sub esp, 0x70
mov ecx, esp
vmovdqu ymmword [ecx], ymm0
vmovdqu ymm0, ymmword [0x22c2fc8]
vmovdqu ymmword [ecx + 0x20], ymm0
vmovdqu ymm0, ymmword [0x22c2fe8]
vmovdqu ymmword [ecx + 0x40], ymm0
vmovdqu xmm0, xmmword [0x22c3008]
vmovdqu xmmword [ecx + 0x60], xmm0
vzeroupper
call eax
add esp, 0x74
push 0x54fb80
push dword [esi + 0x38]
call edi
test eax, eax
je 0x456c90
push dword [0x673564]
call eax
add esp, 4
cmp byte [0x61d255], 0
jne case.default.0x4569ef
push str.CloseDLL
push dword [esi + 0x38]
call edi
test eax, eax
je case.default.0x4569ef
call eax
mov ecx, dword [esp + 0xc]
pop edi
pop esi
xor ecx, esp
call fcn.004d7bf5
add esp, 8
ret