Function at 0x47f290
Capabilities:
Check if file exists
Get file attributes
Get file size
Link many functions at runtime
Read file on windows

Disassembly:
sub esp, 0x254
mov eax, dword [esp + 0x258]
push ebx
mov ebx, dword [esp + 0x264]
push ebp
mov ebp, dword [esp + 0x270]
push esi
push edi
mov edi, dword [esp + 0x274]
mov dword [edi], 0xffffffff
cmp byte [eax], 0
mov dword [esp + 0x10], 0
je 0x47f38e
mov ecx, eax
push 0x2e
push ecx
call fcn.00493de2
mov esi, eax
add esp, 8
mov dword [esp + 0x18], eax
test esi, esi
je 0x47f2e9
inc esi
mov dword [esp + 0x18], esi
cmp ebp, 1
ja 0x47f360
test esi, esi
je 0x47f34c
push 0x4ae550
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f360
push 0x4ae554
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f360
push 0x4b06f0
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f360
push 0x4b06f4
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f360
push 0x4b06f8
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f360
mov byte [esp + 0x17], 0
test ebp, ebp
jle 0x47f39b
mov dword [edi], 1
jmp 0x47f3f9
mov edx, dword [esp + 0x26c]
mov eax, dword [esp + 0x268]
push ebx
push edx
push ebp
push eax
mov byte [esp + 0x27], 1
mov dword [edi], 1
call fcn.0047f950
add esp, 0x10
mov dword [esp + 0x10], eax
cmp eax, 2
jae 0x47f3fd
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
test esi, esi
je 0x47f3f9
push 0x4ae54c
push esi
call fcn.00491a51
add esp, 8
test eax, eax
jne 0x47f3b9
mov dword [edi], 1
jmp 0x47f3f9
push 0x4b06fc
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f3f3
push 0x4b0700
push esi
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f3f3
push 0x4b0704
push esi
call fcn.00491a51
add esp, 8
test eax, eax
jne 0x47f3f9
mov dword [edi], eax
jmp 0x47f3f9
mov dword [edi], 2
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x26c]
cmp ecx, 0xffffffff
je 0x47f40e
cmp ebx, 0xffffffff
jne 0x47f42c
test ecx, ecx
je 0x47f416
test ebx, ebx
jne 0x47f42c
xor ebx, ebx
mov dword [esp + 0x270], ebx
mov dword [esp + 0x26c], ebx
mov byte [esp + 0x16], bl
jmp 0x47f442
cmp ecx, 0xffffffff
je 0x47f43d
cmp ebx, 0xffffffff
je 0x47f43d
mov byte [esp + 0x16], 0
jmp 0x47f442
mov byte [esp + 0x16], 1
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
xor edi, edi
cmp byte [esp + 0x27c], 0
je 0x47f46d
push str.gdiplus
call esi
mov edi, eax
mov eax, dword [esp + 0x10]
test edi, edi
jne 0x47f46d
mov byte [esp + 0x27c], 0
test eax, eax
jne 0x47f526
mov ecx, dword [esp + 0x274]
mov edx, dword [ecx]
cmp edx, 0xffffffff
jle 0x47f526
cmp byte [esp + 0x27c], al
jne 0x47f526
cmp byte [esp + 0x16], al
je 0x47f49e
xor ecx, ecx
jmp 0x47f4a7
mov eax, dword [esp + 0x26c]
mov ecx, ebx
push 0x2010
push ecx
push eax
push edx
mov edx, dword [esp + 0x278]
push edx
push 0
call dword [sym.imp.USER32.dll_LoadImageA]
mov dword [esp + 0x10], eax
test eax, eax
je 0x47f4d9
cmp byte [esp + 0x16], 0
jne 0x47f526
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
mov eax, dword [esp + 0x268]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x47f38e
test ebp, ebp
jle 0x47f522
mov ecx, dword [esp + 0x26c]
mov edx, dword [esp + 0x268]
push ebx
push ecx
push ebp
push edx
call fcn.0047f950
add esp, 0x10
mov dword [esp + 0x10], eax
cmp eax, 2
jb 0x47f38e
mov byte [esp + 0x17], 1
jmp 0x47f526
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], 0
test eax, eax
jne 0x47f679
cmp byte [esp + 0x27c], 0
mov eax, dword [esp + 0x274]
mov dword [eax], 0
jne 0x47f58e
cmp dword [esp + 0x18], 0
je 0x47f58e
mov ebp, dword [esp + 0x18]
push 0x4b0710
push ebp
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f59b
push str.jpeg
push ebp
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f59b
push 0x4b071c
push ebp
call fcn.00491a51
add esp, 8
test eax, eax
je 0x47f59b
test edi, edi
jne 0x47f5a3
push str.gdiplus
call esi
mov edi, eax
test edi, edi
je 0x47f741
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GdiplusStartup
push edi
call esi
push str.GdiplusShutdown
push edi
mov ebp, eax
call esi
push str.GdipCreateBitmapFromFile
push edi
mov dword [esp + 0x30], eax
call esi
push str.GdipCreateHBITMAPFromBitmap
push edi
mov ebx, eax
call esi
push str.GdipDisposeImage
push edi
mov dword [esp + 0x28], eax
call esi
mov esi, eax
xor eax, eax
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
cmp ebp, eax
je 0x47f667
push eax
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x2c]
push edx
call ebp
test eax, eax
jne 0x47f667
mov ecx, dword [esp + 0x268]
push 0x104
lea eax, [esp + 0x5c]
push eax
push 0xffffffffffffffff
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x5c]
push eax
call ebx
test eax, eax
jne 0x47f65e
mov edx, dword [esp + 0x18]
push 0xff000000
lea ecx, [esp + 0x14]
push ecx
push edx
call dword [esp + 0x2c]
test eax, eax
je 0x47f657
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x18]
push eax
call esi
mov ecx, dword [esp + 0x24]
push ecx
call dword [esp + 0x2c]
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x270]
cmp byte [esp + 0x16], 0
mov ebp, dword [esp + 0x274]
je 0x47f8b7
cmp dword [ebp], 0
je 0x47f6a9
lea ecx, [esp + 0x2c]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x47f899
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x40]
push edx
push 0x18
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
cmp ebx, 0xffffffff
jne 0x47f86d
cmp dword [esp + 0x44], 0
je 0x47f6e3
fild dword [esp + 0x48]
fidiv dword [esp + 0x44]
fimul dword [esp + 0x26c]
fadd qword [0x4b0c48]
call fcn.004a11b0
mov ebx, eax
mov edi, dword [esp + 0x26c]
cmp dword [ebp], 0
je 0x47f8b1
mov eax, dword [esp + 0x3c]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
mov ecx, dword [esp + 0x38]
push ecx
call esi
cmp byte [esp + 0x17], 0
jne 0x47f8b1
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_DestroyIcon]
mov eax, dword [ebp]
mov ecx, dword [esp + 0x268]
push 0x10
push ebx
push edi
push eax
push ecx
push 0
call dword [sym.imp.USER32.dll_LoadImageA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
mov edx, dword [esp + 0x268]
push 0
push 0
push 3
push 0
push 0
push SysReAllocString
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x47f38e
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
push eax
push 2
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
test esi, esi
jne 0x47f799
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
push esi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
test eax, eax
jne 0x47f7bf
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
mov edx, dword [esp + 0x18]
push 0
lea ecx, [esp + 0x1c]
push ecx
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [esp + 0x20]
push eax
push 0
push esi
call dword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
test eax, eax
js 0x47f7ab
mov eax, dword [esp + 0x20]
test eax, eax
je 0x47f7ab
lea ecx, [esp + 0x1c]
push ecx
push 0x4a4848
push 0
push 0
push eax
call dword [sym.imp.OLEAUT32.dll_OleCreatePictureIndirect]
test eax, eax
jns 0x47f81c
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x47f38e
mov ecx, dword [eax]
lea edx, [esp + 0x10]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x47f679
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
cmp dword [esp + 0x48], 0
je 0x47f6e3
fild dword [esp + 0x44]
fidiv dword [esp + 0x48]
fimul dword [esp + 0x270]
fadd qword [0x4b0c48]
call fcn.004a11b0
mov edi, eax
jmp 0x47f6ea
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_DestroyIcon]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
mov eax, dword [esp + 0x10]
jmp 0x47f8be
mov edi, dword [esp + 0x26c]
cmp dword [esp + 0x1c], 0
je 0x47f8fb
test edi, edi
jne 0x47f8d2
test ebx, ebx
jne 0x47f8d2
lea ecx, [edi + 4]
jmp 0x47f8d4
xor ecx, ecx
push ecx
push ebx
push edi
push 0
push eax
call dword [sym.imp.USER32.dll_CopyImage]
mov esi, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret
test edi, edi
jne 0x47f903
test ebx, ebx
je 0x47f914
mov ecx, dword [ebp]
push 0xc
push ebx
push edi
push ecx
push eax
call dword [sym.imp.USER32.dll_CopyImage]
mov esi, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x254
ret