Function at 0x414d20
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push 0xffffffffffffffff
push 0x569c9c
mov eax, dword fs:[0]
push eax
sub esp, 0x28c
mov eax, dword [0x5d4050]
xor eax, esp
mov dword [esp + 0x284], eax
push esi
push edi
mov eax, dword [0x5d4050]
xor eax, esp
push eax
lea eax, [esp + 0x298]
mov dword fs:[0], eax
mov edi, ecx
cmp byte [0x5e09a8], 0
je 0x414d74
mov al, byte [0x5e09a9]
jmp 0x415043
xor eax, eax
mov dword [esp + 0x78], 7
push eax
push 0x5b045c
lea ecx, [esp + 0x6c]
mov dword [esp + 0x7c], 0
mov word [esp + 0x6c], ax
call fcn.00403360
lea ecx, [esp + 0x4c]
mov dword [esp + 0x2a0], 0
call fcn.00417580
mov edx, eax
mov byte [esp + 0x2a0], 1
lea ecx, [esp + 0x34]
call fcn.00415360
push 0x5b0c68
mov edx, eax
mov byte [esp + 0x2a4], 2
lea ecx, [esp + 0x20]
call fcn.00414a50
mov esi, eax
add esp, 4
lea eax, [esp + 0x64]
cmp eax, esi
je 0x414e1a
cmp dword [esp + 0x78], 8
jb 0x414df9
push dword [esp + 0x64]
call fcn.00421c08
add esp, 4
xor eax, eax
mov dword [esp + 0x78], 7
push esi
lea ecx, [esp + 0x68]
mov dword [esp + 0x78], 0
mov word [esp + 0x68], ax
call fcn.00402fc0
cmp dword [esp + 0x30], 8
jb 0x414e2d
push dword [esp + 0x1c]
call fcn.00421c08
add esp, 4
xor eax, eax
mov dword [esp + 0x30], 7
cmp dword [esp + 0x48], 8
mov dword [esp + 0x2c], 0
mov word [esp + 0x1c], ax
jb 0x414e57
push dword [esp + 0x34]
call fcn.00421c08
add esp, 4
xor eax, eax
mov dword [esp + 0x48], 7
mov byte [esp + 0x2a0], al
cmp dword [esp + 0x60], 8
mov dword [esp + 0x44], 0
mov word [esp + 0x34], ax
jb 0x414e88
push dword [esp + 0x4c]
call fcn.00421c08
add esp, 4
cmp dword [esp + 0x78], 8
lea eax, [esp + 0x64]
cmovae eax, dword [esp + 0x64]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x414f03
sub esp, 0x18
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x5b0c60
call fcn.004026c0
sub esp, 0x18
mov byte [esp + 0x2d0], 3
mov ecx, esp
xor eax, eax
mov esi, 0x93
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [esp + 0x9c]
push eax
call fcn.00403780
mov ecx, esi
mov byte [esp + 0x2d0], 0
call fcn.00417e90
add esp, 0x30
test al, al
je 0x415019
cmp dword [esp + 0x78], 8
lea eax, [esp + 0x64]
cmovae eax, dword [esp + 0x64]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [edi + 0x10], eax
test eax, eax
jne 0x414f7c
push 0x206
push eax
mov word [esp + 0x8c], ax
lea eax, [esp + 0x8e]
push eax
call fcn.0054d610
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
movdqu xmm0, xmmword [esp + 0x64]
push eax
sub esp, 0x18
mov eax, esp
push str.Loading__s_failed._Last_Error_is__d
movdqu xmmword [eax], xmm0
movq xmm0, qword [esp + 0x94]
movq qword [eax + 0x10], xmm0
lea eax, [esp + 0xa4]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x24
jmp 0x415002
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x5b0cf8
push eax
call esi
push 0x5b0ce0
push dword [edi + 0x10]
mov dword [edi + 4], eax
call esi
push 0x5b0d60
push dword [edi + 0x10]
mov dword [edi + 8], eax
call esi
cmp dword [edi + 4], 0
mov dword [edi + 0xc], eax
je 0x414fc5
cmp dword [edi + 8], 0
je 0x414fc5
test eax, eax
je 0x414fc5
mov byte [0x5e09a9], 1
mov byte [esp + 0x13], 1
jmp 0x415025
xor eax, eax
push 0x206
push eax
mov word [esp + 0x8c], ax
lea eax, [esp + 0x8e]
push eax
call fcn.0054d610
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [esp + 0x88]
push str.GetProcAddress_failed._Last_Error_is__d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0
push str.ERROR
lea eax, [esp + 0x8c]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [0x5e09a9], 0
mov byte [esp + 0x13], 0
cmp dword [esp + 0x78], 8
mov byte [0x5e09a8], 1
jb 0x41503f
push dword [esp + 0x64]
call fcn.00421c08
add esp, 4
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x298]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x284]
xor ecx, esp
call fcn.00549fe1
mov esp, ebp
pop ebp
ret