Function at 0x45a1c0
Capabilities:
Check if file exists
Encode data using xor
Get file attributes
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x308
mov eax, dword [0x4f0100]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov dword [ebp - 0x2b0], edx
mov esi, ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0x14]
push edi
call fcn.00458680
push 0x1000000
call fcn.0048b49b
add esp, 4
mov ebx, eax
push 0x4deb74
push esi
call fcn.0048c5b4
add esp, 8
mov dword [ebp - 0x30], 0x55844
mov edi, eax
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x2b4], edi
mov dword [ebp - 0x28], 0x1c
mov dword [ebp - 0x24], 0xffffffff
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x20], 0xffffffff
call dword [sym.imp.KERNEL32.dll_GetACP]
mov dword [ebp - 0x18], eax
call dword [sym.imp.KERNEL32.dll_SetFileApisToANSI]
xor edx, edx
xor esi, esi
nop dword [eax + eax]
movzx eax, byte [ebp + edx - 0x14]
lea ecx, [ebp - 0x14]
xor byte [ebp + esi - 0x30], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2f], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
cmp ecx, 0xc
cmovne edx, ecx
lea ecx, [ebp - 0x14]
movzx eax, byte [ebp + edx - 0x14]
xor byte [ebp + esi - 0x2e], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2d], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
add esi, 4
cmp ecx, 0xc
cmovne edx, ecx
cmp esi, 0x1c
jl 0x45a250
push edi
push 1
lea eax, [ebp - 0x30]
push 0x1c
push eax
call fcn.00485546
add esp, 0x10
xor edx, edx
xor esi, esi
nop word [eax + eax]
movzx eax, byte [ebp + edx - 0x14]
lea ecx, [ebp - 0x14]
xor byte [ebp + esi - 0x30], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2f], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
cmp ecx, 0xc
cmovne edx, ecx
lea ecx, [ebp - 0x14]
movzx eax, byte [ebp + edx - 0x14]
xor byte [ebp + esi - 0x2e], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2d], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
add esi, 4
cmp ecx, 0xc
cmovne edx, ecx
cmp esi, 0x1c
jl 0x45a2e0
push 0x1000000
call fcn.0048b49b
add esp, 4
mov dword [ebp - 0x2a0], eax
test eax, eax
je 0x45abc2
push 0x1000000
push 0
push eax
call fcn.0047d590
add esp, 0xc
push 0x1000000
call fcn.0048b49b
mov esi, eax
add esp, 4
mov dword [ebp - 0x2a4], esi
test esi, esi
je 0x45abc2
push 0x1000000
push 0
push esi
call fcn.0047d590
add esp, 0xc
push 0x1000000
call fcn.0048b49b
add esp, 4
mov dword [ebp - 0x2a8], eax
test eax, eax
je 0x45abc2
push 0x1000000
push 0
push eax
call fcn.0047d590
mov edx, dword [ebp - 0x2a0]
xorps xmm0, xmm0
add esp, 0xc
mov dword [ebp - 0x294], 0
mov ecx, 0x4d7f3c
mov dword [ebp - 0x290], 0
mov dword [ebp - 0x28c], 0
mov dword [ebp - 0x288], 0
movlpd qword [ebp - 0x2ec], xmm0
movlpd qword [ebp - 0x2e4], xmm0
movlpd qword [ebp - 0x2dc], xmm0
mov dword [ebp - 0x2f4], 0
mov dword [ebp - 0x2f0], 0x10
mov dword [ebp - 0x2d4], 0
mov dword [ebp - 0x2d0], 0
call fcn.00458540
add dword [ebp - 0x290], eax
mov eax, dword [ebp - 0x288]
movups xmm0, xmmword [ebp - 0x2f4]
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x2a8]
movups xmmword [eax + esi], xmm0
mov dword [ebp - 0x308], 0
movups xmm0, xmmword [ebp - 0x2e4]
mov dword [ebp - 0x304], 0xffffffff
mov dword [ebp - 0x300], edx
movups xmmword [eax + esi + 0x10], xmm0
movq xmm0, qword [ebp - 0x2d4]
movq qword [eax + esi + 0x20], xmm0
mov dword [eax + esi + 0x28], 0xffffffff
xor esi, esi
mov eax, dword [ebp - 0x288]
add eax, 0x2c
mov dword [ebp - 0x2b8], esi
mov dword [ebp - 0x288], eax
mov dword [ebp - 0x2fc], eax
movups xmm0, xmmword [ebp - 0x308]
mov dword [ebp - 0x2c4], eax
mov eax, dword [ebp - 0x28c]
movups xmmword [eax + ecx], xmm0
add dword [ebp - 0x28c], 0x10
imul eax, edx, 0x2c
add dword [ebp - 0x288], eax
test edx, edx
jle 0x45a979
mov dword [ebp - 0x2bc], esi
nop dword [eax]
mov eax, dword [ebp - 0x2b0]
push dword [eax + esi*4]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x45a962
mov ecx, dword [ebp - 0x2b0]
mov ecx, dword [ecx + esi*4]
test al, 0x10
je 0x45a568
mov edx, dword [ebp - 0x2a0]
lea eax, [ebp - 0x14]
push eax
push dword [ebp + 0xc]
lea eax, [ebp - 0x294]
push ebx
push edi
push esi
push eax
lea eax, [ebp - 0x308]
push eax
push dword [ebp - 0x2a4]
push dword [ebp - 0x2a8]
call fcn.00458840
mov eax, dword [ebp - 0x2fc]
add esp, 0x24
mov dword [ebp - 0x2c4], eax
jmp 0x45a962
lea eax, [ebp - 0x284]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x2f8], eax
cmp eax, 0xffffffff
je 0x45a962
mov edx, dword [ebp - 0x27c]
xor ecx, ecx
add ecx, dword [ebp - 0x280]
mov esi, dword [ebp - 0x290]
adc edx, 0
mov dword [ebp - 0x2ec], ecx
mov ecx, dword [ebp - 0x274]
xor eax, eax
add eax, dword [ebp - 0x278]
mov dword [ebp - 0x2e4], eax
adc ecx, 0
mov dword [ebp - 0x2e8], edx
mov edx, dword [ebp - 0x2a0]
xor eax, eax
add eax, dword [ebp - 0x270]
mov dword [ebp - 0x2e0], ecx
mov ecx, dword [ebp - 0x26c]
mov dword [ebp - 0x2dc], eax
lea edx, [esi + edx]
mov eax, dword [ebp - 0x284]
adc ecx, 0
mov dword [ebp - 0x2f0], eax
mov eax, dword [ebp - 0x294]
mov dword [ebp - 0x2d8], ecx
lea ecx, [ebp - 0x258]
mov dword [ebp - 0x2d4], eax
mov eax, dword [ebp - 0x264]
mov dword [ebp - 0x2f4], esi
mov dword [ebp - 0x2c0], eax
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2c8], 0xffffffff
call fcn.00458540
add dword [ebp - 0x290], eax
xor ecx, ecx
add ecx, dword [ebp - 0x264]
mov eax, dword [ebp - 0x268]
adc eax, 0
or ecx, eax
je 0x45a913
mov eax, dword [ebp - 0x2b8]
mov ecx, dword [ebp - 0x2b0]
push 0x4deb00
push dword [ecx + eax*4]
call fcn.0048c5b4
push 2
mov esi, eax
push 0
push esi
mov dword [ebp - 0x29c], esi
call fcn.0048b1db
add esp, 0x14
push esi
call fcn.0048c40c
add esp, 4
mov edi, eax
mov dword [ebp - 0x298], edi
push 0
push 0
push esi
call fcn.0048b1db
add esp, 0xc
cmp byte [ebp + 0xc], 1
jne 0x45a83e
mov eax, dword [ebp - 0x268]
xor ecx, ecx
add ecx, dword [ebp - 0x264]
adc eax, 0
test eax, eax
ja 0x45a83e
jb 0x45a6cc
cmp ecx, 0xa00000
jae 0x45a83e
lea ecx, [ebp - 0x258]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45a6d5
sub ecx, edx
sar ecx, 1
cmp ecx, 4
jbe 0x45a797
lea esi, [ebp - 0x25e]
mov edx, 0x4deb08
lea esi, [esi + ecx*2]
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb10
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb18
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb20
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb28
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb38
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
mov edx, 0x4deb50
mov ecx, esi
call fcn.00452f20
test eax, eax
je 0x45a83e
lea ecx, [esi - 2]
mov edx, str.jpeg
call fcn.00452f20
test eax, eax
je 0x45a83e
lea eax, [edi + edi*2]
mov ecx, 0xffffffff
add eax, 0x40
cmovb eax, ecx
push eax
call fcn.0048b49b
add esp, 4
mov edi, eax
mov eax, dword [ebp - 0x298]
push dword [ebp - 0x29c]
lea esi, [edi + eax]
push 1
push eax
push edi
call fcn.0048ae0c
push esi
mov esi, dword [ebp - 0x298]
mov ecx, edi
mov edx, esi
call fcn.00459a00
mov edx, eax
movd xmm0, esi
cvtdq2pd xmm0, xmm0
mov ecx, edx
mov dword [ebp - 0x2ac], edx
mov eax, esi
shr ecx, 0x1f
add esp, 0x14
shr eax, 0x1f
movd xmm1, edx
addsd xmm0, qword [eax*8 + 0x4df010]
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [ecx*8 + 0x4df010]
divsd xmm1, xmm0
comisd xmm1, xmmword [0x4def88]
jbe 0x45ab7f
push 0
push 0
push dword [ebp - 0x29c]
call fcn.0048b1db
add esp, 0xc
push edi
call fcn.0048aa64
add esp, 4
mov edi, esi
xor esi, esi
mov dword [ebp - 0x2ac], esi
test edi, edi
je 0x45a8f9
nop
mov eax, edi
mov ecx, 0x1000000
sub eax, esi
cmp eax, 0x1000000
cmova eax, ecx
add esi, dword [ebp - 0x2c0]
lea edi, [eax + 3]
and edi, 0xfffffffc
cmp esi, 0xffffffff
jne 0x45a882
push dword [ebp - 0x29c]
call fcn.0048c40c
add esp, 4
mov esi, eax
push dword [ebp - 0x29c]
push edi
push 1
push ebx
call fcn.0048ae0c
mov eax, 0x2aaaaaab
add esp, 0x10
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
xor edx, edx
lea eax, [eax + eax*2]
shl eax, 2
sub esi, eax
test edi, edi
jle 0x45a8cb
mov al, byte [ebp + esi - 0x14]
xor ecx, ecx
xor byte [edx + ebx], al
inc edx
cmp esi, 0xb
lea eax, [esi + 1]
cmovne ecx, eax
mov esi, ecx
cmp edx, edi
jl 0x45a8b2
push dword [ebp - 0x2b4]
push 1
push edi
push ebx
call fcn.00485546
mov esi, dword [ebp - 0x2ac]
add esp, 0x10
add esi, edi
mov edi, dword [ebp - 0x298]
mov dword [ebp - 0x2ac], esi
cmp esi, edi
jb 0x45a850
push dword [ebp - 0x29c]
call fcn.00483fbe
mov edi, dword [ebp - 0x2b4]
add esp, 4
add dword [ebp - 0x294], esi
mov eax, dword [ebp - 0x2bc]
add eax, dword [ebp - 0x2c4]
add eax, dword [ebp - 0x2a4]
movups xmm0, xmmword [ebp - 0x2f4]
mov ecx, dword [ebp - 0x2c8]
push dword [ebp - 0x2f8]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x2e4]
movups xmmword [eax + 0x10], xmm0
movq xmm0, qword [ebp - 0x2d4]
movq qword [eax + 0x20], xmm0
mov dword [eax + 0x28], ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov esi, dword [ebp - 0x2b8]
add dword [ebp - 0x2bc], 0x2c
inc esi
mov dword [ebp - 0x2b8], esi
cmp esi, dword [ebp + 8]
jl 0x45a500
mov edx, dword [ebp - 0x290]
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x2a0]
push 0
push eax
push edi
call fcn.00458780
mov edx, dword [ebp - 0x288]
lea eax, [ebp - 0x14]
mov ecx, dword [ebp - 0x2a4]
add esp, 0xc
push dword [ebp - 0x290]
push eax
push edi
call fcn.00458780
mov eax, dword [ebp - 0x288]
add esp, 0xc
add eax, dword [ebp - 0x290]
mov edx, dword [ebp - 0x28c]
mov ecx, dword [ebp - 0x2a8]
push eax
lea eax, [ebp - 0x14]
push eax
push edi
call fcn.00458780
mov edx, dword [ebp - 0x288]
add esp, 0xc
mov eax, dword [ebp - 0x28c]
mov ecx, dword [ebp - 0x290]
add eax, edx
add eax, ecx
mov dword [ebp - 0x30], 0x55844
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x294]
add eax, 0x1c
mov dword [ebp - 0x28], 0x1c
push 0
mov dword [ebp - 0x24], eax
lea eax, [edx + ecx]
push 0
push edi
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], eax
call fcn.0048b1db
add esp, 0xc
xor edx, edx
xor esi, esi
nop word [eax + eax]
movzx eax, byte [ebp + edx - 0x14]
lea ecx, [ebp - 0x14]
xor byte [ebp + esi - 0x30], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2f], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
cmp ecx, 0xc
cmovne edx, ecx
lea ecx, [ebp - 0x14]
movzx eax, byte [ebp + edx - 0x14]
xor byte [ebp + esi - 0x2e], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2d], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
add esi, 4
cmp ecx, 0xc
cmovne edx, ecx
cmp esi, 0x1c
jl 0x45aa30
push edi
push 1
lea eax, [ebp - 0x30]
push 0x1c
push eax
call fcn.00485546
add esp, 0x10
xor edx, edx
xor esi, esi
nop word [eax + eax]
movzx eax, byte [ebp + edx - 0x14]
lea ecx, [ebp - 0x14]
xor byte [ebp + esi - 0x30], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2f], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
cmp ecx, 0xc
cmovne edx, ecx
lea ecx, [ebp - 0x14]
movzx eax, byte [ebp + edx - 0x14]
xor byte [ebp + esi - 0x2e], al
lea eax, [ebp - 0x13]
add eax, edx
cmp edx, 0xb
cmovne ecx, eax
movzx eax, byte [ecx]
mov ecx, 1
xor byte [ebp + esi - 0x2d], al
cmp edx, 0xb
lea eax, [edx + 2]
cmovne ecx, eax
xor edx, edx
add esi, 4
cmp ecx, 0xc
cmovne edx, ecx
cmp esi, 0x1c
jl 0x45aac0
push edi
call fcn.00483fbe
add esp, 4
push dword [ebp - 0x2a0]
call fcn.0048aa64
add esp, 4
push dword [ebp - 0x2a4]
call fcn.0048aa64
add esp, 4
push dword [ebp - 0x2a8]
call fcn.0048aa64
add esp, 4
push ebx
call fcn.0048aa64
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0047b4e2
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x2c0]
mov ecx, dword [ebp - 0x298]
lea esi, [edx + 3]
lea eax, [ebp - 0x14]
and esi, 0xfffffffc
push eax
push dword [ebp - 0x2b4]
mov edx, esi
lea ecx, [edi + ecx]
call fcn.00458780
add esp, 0xc
push edi
call fcn.0048aa64
mov eax, dword [ebp - 0x2ac]
add esp, 4
mov dword [ebp - 0x2c8], eax
jmp 0x45a8f9
mov ecx, dword [ebp - 8]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0047b4e2
mov esp, ebp
pop ebp
ret