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

Disassembly:
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0x260
lea rdi, [rsp + 0x40]
mov ecx, 0x88
mov eax, 0xcccccccc
rep stosd dword [rdi], eax
mov rcx, qword [rsp + 0x270]
mov qword [rsp + 0x48], 0
mov rax, qword [rsp + 0x288]
mov dword [rax], 0xffffffff
cmp qword [rsp + 0x2a0], 0
je 0x1400fb801
mov rax, qword [rsp + 0x2a0]
mov byte [rax], 0
mov rax, qword [rsp + 0x270]
movzx eax, word [rax]
test eax, eax
jne 0x1400fb817
xor eax, eax
jmp 0x1400fc4c3
mov byte [rsp + 0x54], 0
mov byte [rsp + 0x55], 0
mov r8d, 6
lea rdx, str.HICON:
mov rcx, qword [rsp + 0x270]
call fcn.1401a82a0
test eax, eax
je 0x1400fb861
mov r8d, 8
lea rdx, str.HBITMAP:
mov rcx, qword [rsp + 0x270]
call fcn.1401a82a0
test eax, eax
jne 0x1400fb94e
mov eax, 2
imul rax, rax, 5
mov rcx, qword [rsp + 0x270]
movzx eax, word [rcx + rax]
cmp eax, 0x3a
jne 0x1400fb89f
mov rax, qword [rsp + 0x288]
mov dword [rax], 1
mov rax, qword [rsp + 0x270]
add rax, 0xc
mov qword [rsp + 0x270], rax
jmp 0x1400fb8c1
mov rax, qword [rsp + 0x288]
mov dword [rax], 0
mov rax, qword [rsp + 0x270]
add rax, 0x10
mov qword [rsp + 0x270], rax
mov byte [rsp + 0x54], 1
mov rax, qword [rsp + 0x270]
movzx eax, word [rax]
cmp eax, 0x2a
jne 0x1400fb8e3
mov dword [rsp + 0x244], 1
jmp 0x1400fb8ee
mov dword [rsp + 0x244], 0
movzx eax, byte [rsp + 0x244]
mov byte [rsp + 0x55], al
movzx eax, byte [rsp + 0x55]
test eax, eax
je 0x1400fb92d
mov rax, qword [rsp + 0x270]
add rax, 2
mov qword [rsp + 0x270], rax
cmp qword [rsp + 0x2a0], 0
je 0x1400fb92d
mov rax, qword [rsp + 0x2a0]
mov byte [rax], 1
mov rcx, qword [rsp + 0x270]
call fcn.14000bb80
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 0
jne 0x1400fb94e
xor eax, eax
jmp 0x1400fc4c3
mov dx, 0x2e
mov rcx, qword [rsp + 0x270]
call fcn.14018af70
mov qword [rsp + 0x58], rax
cmp qword [rsp + 0x58], 0
je 0x1400fb97a
mov rax, qword [rsp + 0x58]
add rax, 2
mov qword [rsp + 0x58], rax
cmp qword [rsp + 0x48], 0
jne 0x1400fba18
cmp dword [rsp + 0x290], 1
jg 0x1400fba0b
cmp dword [rsp + 0x290], 0
jl 0x1400fba0b
cmp qword [rsp + 0x58], 0
je 0x1400fba18
lea rdx, [0x1402a5e80]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fba0b
lea rdx, [0x1402a5e88]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fba0b
lea rdx, [0x1402a5e90]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fba0b
lea rdx, [0x1402a5e98]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fba0b
lea rdx, [0x1402a5ea0]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
jne 0x1400fba18
mov dword [rsp + 0x248], 1
jmp 0x1400fba23
mov dword [rsp + 0x248], 0
movzx eax, byte [rsp + 0x248]
mov byte [rsp + 0x60], al
movzx eax, byte [rsp + 0x60]
test eax, eax
je 0x1400fba90
mov rax, qword [rsp + 0x288]
mov dword [rax], 1
mov rax, qword [rsp + 0x2a8]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x280]
mov r8d, dword [rsp + 0x278]
mov edx, dword [rsp + 0x290]
mov rcx, qword [rsp + 0x270]
call fcn.1400f94e0
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 2
jae 0x1400fba8b
xor eax, eax
jmp 0x1400fc4c3
jmp 0x1400fbb1e
cmp qword [rsp + 0x58], 0
je 0x1400fbb1e
lea rdx, [0x1402a5ea8]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
jne 0x1400fbac1
mov rax, qword [rsp + 0x288]
mov dword [rax], 1
jmp 0x1400fbb1e
lea rdx, [0x1402a5eb0]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fbaeb
lea rdx, [0x1402a5eb8]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
jne 0x1400fbafb
mov rax, qword [rsp + 0x288]
mov dword [rax], 2
jmp 0x1400fbb1e
lea rdx, [0x1402a5ec0]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
jne 0x1400fbb1e
mov rax, qword [rsp + 0x288]
mov dword [rax], 0
cmp dword [rsp + 0x278], 0xffffffff
je 0x1400fbb32
cmp dword [rsp + 0x280], 0xffffffff
jne 0x1400fbb5f
cmp dword [rsp + 0x278], 0
je 0x1400fbb46
cmp dword [rsp + 0x280], 0
jne 0x1400fbb5f
mov dword [rsp + 0x280], 0
mov eax, dword [rsp + 0x280]
mov dword [rsp + 0x278], eax
cmp dword [rsp + 0x278], 0xffffffff
je 0x1400fbb80
cmp dword [rsp + 0x280], 0xffffffff
je 0x1400fbb80
mov dword [rsp + 0x24c], 0
jmp 0x1400fbb8b
mov dword [rsp + 0x24c], 1
movzx eax, byte [rsp + 0x24c]
mov byte [rsp + 0x61], al
mov qword [rsp + 0x68], 0
movzx eax, byte [rsp + 0x298]
test eax, eax
je 0x1400fbbce
lea rcx, [0x1402a5ec8]
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsp + 0x68], rax
cmp qword [rsp + 0x68], 0
jne 0x1400fbbce
mov byte [rsp + 0x298], 0
cmp qword [rsp + 0x48], 0
jne 0x1400fbd06
mov rax, qword [rsp + 0x288]
cmp dword [rax], 0xffffffff
jle 0x1400fbd06
movzx eax, byte [rsp + 0x298]
test eax, eax
jne 0x1400fbd06
movzx eax, byte [rsp + 0x61]
test eax, eax
je 0x1400fbc16
mov dword [rsp + 0x70], 0
mov dword [rsp + 0x74], 0
jmp 0x1400fbc2c
mov eax, dword [rsp + 0x278]
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x280]
mov dword [rsp + 0x74], eax
mov dword [rsp + 0x28], 0x2010
mov eax, dword [rsp + 0x74]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x70]
mov rax, qword [rsp + 0x288]
mov r8d, dword [rax]
mov rdx, qword [rsp + 0x270]
xor ecx, ecx
call qword [sym.imp.USER32.dll_LoadImageW]
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 0
je 0x1400fbc88
movzx eax, byte [rsp + 0x61]
test eax, eax
jne 0x1400fbc86
cmp dword [rsp + 0x290], 0
jne 0x1400fbc86
mov rax, qword [rsp + 0x48]
jmp 0x1400fc4c3
jmp 0x1400fbd06
mov rcx, qword [rsp + 0x270]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x1400fbca4
xor eax, eax
jmp 0x1400fc4c3
cmp dword [rsp + 0x290], 0
jle 0x1400fbd06
mov rax, qword [rsp + 0x2a8]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x280]
mov r8d, dword [rsp + 0x278]
mov edx, dword [rsp + 0x290]
mov rcx, qword [rsp + 0x270]
call fcn.1400f94e0
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 2
jae 0x1400fbcf3
xor eax, eax
jmp 0x1400fc4c3
mov byte [rsp + 0x60], 1
mov rax, qword [rsp + 0x288]
mov dword [rax], 1
mov qword [rsp + 0x88], 0
cmp qword [rsp + 0x48], 0
jne 0x1400fc0ef
mov rax, qword [rsp + 0x288]
mov dword [rax], 0
movzx eax, byte [rsp + 0x298]
test eax, eax
jne 0x1400fbd7f
cmp qword [rsp + 0x58], 0
je 0x1400fbd7f
lea rdx, [0x1402a5ed8]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fbd99
lea rdx, str.jpeg
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fbd99
lea rdx, [0x1402a5ef0]
mov rcx, qword [rsp + 0x58]
call fcn.1401a7920
test eax, eax
je 0x1400fbd99
cmp qword [rsp + 0x68], 0
jne 0x1400fbd99
lea rcx, str.gdiplus
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsp + 0x68], rax
cmp qword [rsp + 0x68], 0
je 0x1400fbed5
lea rdx, str.GdiplusStartup
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x98], rax
lea rdx, str.GdiplusShutdown
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0xa0], rax
lea rdx, str.GdipCreateBitmapFromFile
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0xa8], rax
lea rdx, str.GdipCreateHBITMAPFromBitmap
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0xb0], rax
lea rdx, str.GdipDisposeImage
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0xb8], rax
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xe8]
call fcn.1400f7cd0
cmp qword [rsp + 0x98], 0
je 0x1400fbec5
xor r8d, r8d
lea rdx, [rsp + 0xe8]
lea rcx, [rsp + 0xc8]
call qword [rsp + 0x98]
test eax, eax
jne 0x1400fbec5
lea rdx, [rsp + 0x118]
mov rcx, qword [rsp + 0x270]
call qword [rsp + 0xa8]
test eax, eax
jne 0x1400fbeb6
mov r8d, 0xff000000
lea rdx, [rsp + 0x48]
mov rcx, qword [rsp + 0x118]
call qword [rsp + 0xb0]
test eax, eax
je 0x1400fbea7
mov qword [rsp + 0x48], 0
mov rcx, qword [rsp + 0x118]
call qword [rsp + 0xb8]
mov rcx, qword [rsp + 0xc8]
call qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x1400fc0ef
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov r8d, 1
mov edx, 0x80000000
mov rcx, qword [rsp + 0x270]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [rsp + 0x128], rax
cmp qword [rsp + 0x128], 0xffffffffffffffff
jne 0x1400fbf24
xor eax, eax
jmp 0x1400fc4c3
xor edx, edx
mov rcx, qword [rsp + 0x128]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [rsp + 0x134], eax
mov eax, dword [rsp + 0x134]
mov edx, eax
mov ecx, 2
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov qword [rsp + 0x148], rax
cmp qword [rsp + 0x148], 0
jne 0x1400fbf77
mov rcx, qword [rsp + 0x128]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x1400fc4c3
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov qword [rsp + 0x150], rax
cmp qword [rsp + 0x150], 0
jne 0x1400fbfbb
mov rcx, qword [rsp + 0x128]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.KERNEL32.dll_GlobalFree]
xor eax, eax
jmp 0x1400fc4c3
mov qword [rsp + 0x20], 0
lea r9, [rsp + 0x134]
mov r8d, dword [rsp + 0x134]
mov rdx, qword [rsp + 0x150]
mov rcx, qword [rsp + 0x128]
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov rcx, qword [rsp + 0x128]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea r8, [rsp + 0x168]
xor edx, edx
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
test eax, eax
jl 0x1400fc02d
cmp qword [rsp + 0x168], 0
jne 0x1400fc042
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.KERNEL32.dll_GlobalFree]
xor eax, eax
jmp 0x1400fc4c3
lea rax, [rsp + 0x88]
mov qword [rsp + 0x20], rax
lea r9, [0x1402b2d30]
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x168]
call qword [sym.imp.OLEAUT32.dll_OleCreatePictureIndirect]
test eax, eax
jge 0x1400fc079
mov qword [rsp + 0x88], 0
mov rax, qword [rsp + 0x168]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x168]
call qword [rax + reloc.WSOCK32.dll_recv]
mov rcx, qword [rsp + 0x148]
call qword [sym.imp.KERNEL32.dll_GlobalFree]
cmp qword [rsp + 0x88], 0
jne 0x1400fc0af
xor eax, eax
jmp 0x1400fc4c3
mov rax, qword [rsp + 0x88]
mov rax, qword [rax]
lea rdx, [rsp + 0x48]
mov rcx, qword [rsp + 0x88]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
cmp qword [rsp + 0x48], 0
jne 0x1400fc0ef
mov rax, qword [rsp + 0x88]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x88]
call qword [rax + reloc.WSOCK32.dll_recv]
xor eax, eax
jmp 0x1400fc4c3
movzx eax, byte [rsp + 0x61]
test eax, eax
je 0x1400fc2bb
mov byte [rsp + 0x240], 0
mov rax, qword [rsp + 0x288]
cmp dword [rax], 0
jne 0x1400fc120
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x178], rax
jmp 0x1400fc179
mov byte [rsp + 0x240], 1
lea rdx, [rsp + 0x188]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x1400fc167
cmp byte [rsp + 0x240], 0
jne 0x1400fc155
lea rcx, [0x1402a6d10]
call fcn.1401352a0
mov rax, qword [rsp + 0x198]
mov qword [rsp + 0x178], rax
jmp 0x1400fc179
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.USER32.dll_DestroyIcon]
xor eax, eax
jmp 0x1400fc4c3
lea r8, [rsp + 0x1c8]
mov edx, SafeArrayAllocDescriptor
mov rcx, qword [rsp + 0x178]
call qword [sym.imp.GDI32.dll_GetObjectW]
cmp dword [rsp + 0x280], 0xffffffff
jne 0x1400fc1e0
cmp dword [rsp + 0x1cc], 0
je 0x1400fc1de
cvtsi2sd xmm0, dword [rsp + 0x1d0]
cvtsi2sd xmm1, dword [rsp + 0x1cc]
divsd xmm0, xmm1
cvtsi2sd xmm1, dword [rsp + 0x278]
mulsd xmm0, xmm1
addsd xmm0, qword [0x1402787e0]
cvttsd2si eax, xmm0
mov dword [rsp + 0x280], eax
jmp 0x1400fc220
cmp dword [rsp + 0x1d0], 0
je 0x1400fc220
cvtsi2sd xmm0, dword [rsp + 0x1cc]
cvtsi2sd xmm1, dword [rsp + 0x1d0]
divsd xmm0, xmm1
cvtsi2sd xmm1, dword [rsp + 0x280]
mulsd xmm0, xmm1
addsd xmm0, qword [0x1402787e0]
cvttsd2si eax, xmm0
mov dword [rsp + 0x278], eax
mov rax, qword [rsp + 0x288]
cmp dword [rax], 0
je 0x1400fc2bb
mov rcx, qword [rsp + 0x1a0]
call qword [sym.imp.GDI32.dll_DeleteObject]
cmp byte [rsp + 0x240], 0
jne 0x1400fc255
lea rcx, [0x1402a6d10]
call fcn.1401352a0
mov rcx, qword [rsp + 0x198]
call qword [sym.imp.GDI32.dll_DeleteObject]
movzx eax, byte [rsp + 0x60]
test eax, eax
jne 0x1400fc2bb
movzx eax, byte [rsp + 0x54]
test eax, eax
jne 0x1400fc2bb
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.USER32.dll_DestroyIcon]
mov dword [rsp + 0x28], reloc.WSOCK32.dll_recv
mov eax, dword [rsp + 0x280]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x278]
mov rax, qword [rsp + 0x288]
mov r8d, dword [rax]
mov rdx, qword [rsp + 0x270]
xor ecx, ecx
call qword [sym.imp.USER32.dll_LoadImageW]
jmp 0x1400fc4c3
cmp qword [rsp + 0x88], 0
je 0x1400fc33d
cmp dword [rsp + 0x278], 0
jne 0x1400fc2e7
cmp dword [rsp + 0x280], 0
jne 0x1400fc2e7
mov dword [rsp + 0x250], 4
jmp 0x1400fc2f2
mov dword [rsp + 0x250], 0
mov eax, dword [rsp + 0x250]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x280]
mov r8d, dword [rsp + 0x278]
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.USER32.dll_CopyImage]
mov qword [rsp + 0x1f8], rax
mov rax, qword [rsp + 0x88]
mov rax, qword [rax]
mov rcx, qword [rsp + 0x88]
call qword [rax + reloc.WSOCK32.dll_recv]
jmp 0x1400fc405
cmp dword [rsp + 0x278], 0
jne 0x1400fc386
cmp dword [rsp + 0x280], 0
jne 0x1400fc386
movzx eax, byte [rsp + 0x55]
test eax, eax
je 0x1400fc365
cmp qword [rsp + 0x2a0], 0
je 0x1400fc386
cmp dword [rsp + 0x290], 1
jl 0x1400fc37c
mov rax, qword [rsp + 0x288]
cmp dword [rax], 1
jne 0x1400fc386
mov rax, qword [rsp + 0x48]
jmp 0x1400fc4c3
movzx eax, byte [rsp + 0x55]
test eax, eax
je 0x1400fc3c2
cmp qword [rsp + 0x2a0], 0
je 0x1400fc3a7
mov dword [rsp + 0x254], 4
jmp 0x1400fc3b2
mov dword [rsp + 0x254], 0
mov eax, dword [rsp + 0x254]
mov dword [rsp + 0x258], eax
jmp 0x1400fc3cd
mov dword [rsp + 0x258], reloc.WSOCK32.dll_ioctlsocket
mov eax, dword [rsp + 0x258]
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x280]
mov r8d, dword [rsp + 0x278]
mov rax, qword [rsp + 0x288]
mov edx, dword [rax]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.USER32.dll_CopyImage]
mov qword [rsp + 0x1f8], rax
cmp dword [rsp + 0x290], 0
jle 0x1400fc496
mov rax, qword [rsp + 0x288]
cmp dword [rax], 0
jne 0x1400fc496
mov dword [rsp + 0x208], 1
mov rax, qword [rsp + 0x1f8]
mov qword [rsp + 0x218], rax
mov rax, qword [rsp + 0x1f8]
mov qword [rsp + 0x220], rax
lea rcx, [rsp + 0x208]
call qword [sym.imp.USER32.dll_CreateIconIndirect]
mov qword [rsp + 0x238], rax
movzx eax, byte [rsp + 0x55]
test eax, eax
jne 0x1400fc478
mov rcx, qword [rsp + 0x1f8]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rax, qword [rsp + 0x238]
mov qword [rsp + 0x1f8], rax
mov rax, qword [rsp + 0x288]
mov dword [rax], 1
mov rax, qword [rsp + 0x1f8]
cmp qword [rsp + 0x48], rax
je 0x1400fc4bb
cmp qword [rsp + 0x2a0], 0
je 0x1400fc4bb
mov rax, qword [rsp + 0x2a0]
mov byte [rax], 0
mov rax, qword [rsp + 0x1f8]
mov rdi, rax
mov rcx, rsp
lea rdx, reloc.WSOCK32.dll_inet_addr
call fcn.140134a00
mov rax, rdi
add rsp, 0x260
pop rdi
ret