Function at 0x10005ef0
Capabilities:
Encode data using xor
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x1003e030]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0xd8]
push edi
push 0x2c
mov edi, edx
mov ebx, ecx
push 0
push eax
mov dword [ebp - 0xe0], edi
call fcn.10019c70
push 0x7f
lea eax, [ebp - 0xab]
push 0
push eax
call fcn.10019c70
add esp, 0x18
test edi, edi
je 0x10005f40
mov dword [edi], 0
test esi, esi
je 0x10005f4a
mov dword [esi], 0
cmp ebx, 0xffffffff
je 0x10005f7c
test edi, edi
je 0x10005f7c
cmp dword [0x10041d60], 0
je 0x10005f7c
test esi, esi
je 0x10005f7c
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
je 0x10005f7c
cmp dword [0x1004218c], eax
jae 0x10005f8f
mov dword [edi], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.10018459
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x100061de
lea ecx, [ebp - 0xd8]
mov dword [esi], 1
call fcn.10005780
test eax, eax
je 0x10005f7c
push 0x5d
lea eax, [ebp - 0x89]
push 0
push eax
call fcn.10019c70
mov al, byte [ebp - 0xc0]
xorps xmm0, xmm0
mov byte [ebp - 0x90], al
mov ax, word [ebp - 0xbf]
mov word [ebp - 0x8f], ax
mov eax, dword [0x10042184]
movups xmmword [ebp - 0x28], xmm0
inc eax
mov dword [ebp - 0xac], 0x464c5341
movups xmmword [ebp - 0x18], xmm0
push 0
movups xmm0, xmmword [ebp - 0xd0]
mov dword [ebp - 0xa8], 0x31454c49
mov dword [ebp - 0xa4], 0x1302e
movups xmmword [ebp - 0xa0], xmm0
mov dword [ebp - 0x8d], eax
call fcn.1002040a
push eax
call fcn.10020987
add esp, 0x14
xor esi, esi
nop dword [eax + eax]
call fcn.10020966
mov byte [ebp + esi - 0x28], al
inc esi
cmp esi, 0x20
jl 0x10006030
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.10020987
add esp, 4
mov edi, 0x10
call fcn.10020966
mov esi, eax
and esi, 0x1f
call fcn.10020966
mov edx, eax
and edx, 0x1f
cmp esi, edx
jne 0x10006071
lea edx, [esi + 1]
and edx, 0x1f
mov al, byte [ebp + edx - 0x28]
mov cl, byte [ebp + esi - 0x28]
mov byte [ebp + esi - 0x28], al
mov byte [ebp + edx - 0x28], cl
sub edi, 1
jne 0x10006053
movups xmm0, xmmword [ebp - 0x28]
lea eax, [ebp - 0xbd]
push 1
movups xmmword [ebp - 0x89], xmm0
push eax
movups xmm0, xmmword [ebp - 0x18]
lea edx, [edi + 0x20]
lea ecx, [ebp - 0x89]
movups xmmword [ebp - 0x79], xmm0
call fcn.100064b0
add esp, 8
test eax, eax
jne 0x100060d2
push 1
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.10018459
mov esp, ebp
pop ebp
ret
push 0
push 0
push 0
push ebx
mov dword [ebp - 0x2c], 0
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x10005f7c
push 0
lea eax, [ebp - 0x2c]
push eax
push 0x80
lea eax, [ebp - 0xac]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x10005f7c
movups xmm0, xmmword [ebp - 0x28]
mov ax, word [ebp - 0xbf]
mov ebx, 0x100421d0
mov word [0x100421a0], ax
movsx eax, byte [ebp - 0xc0]
movups xmmword [0x100421d0], xmm0
mov dword [0x100421a4], eax
movups xmm0, xmmword [ebp - 0x18]
mov dword [ebp - 0xdc], ebx
mov dword [ebp - 0x2c], 4
movups xmmword [0x100421e0], xmm0
mov esi, dword [ebx]
xor edx, edx
mov edi, dword [ebx + 4]
lea ebx, [edx + 0x1f]
nop dword [eax + eax]
mov ecx, edi
mov eax, edi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
and eax, 3
add ecx, edi
mov eax, dword [eax*4 + 0x10039220]
add eax, edx
sub edx, 0x61c98647
xor ecx, eax
add esi, ecx
mov ecx, esi
mov eax, esi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
shr eax, 0xd
add ecx, esi
and eax, 3
mov eax, dword [eax*4 + 0x10039220]
add eax, edx
xor ecx, eax
add edi, ecx
sub ebx, 1
jne 0x10006160
mov ebx, dword [ebp - 0xdc]
mov dword [ebx], esi
mov dword [ebx + 4], edi
add ebx, 8
sub dword [ebp - 0x2c], 1
mov dword [ebp - 0xdc], ebx
jne 0x10006151
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.10018459
mov esp, ebp
pop ebp
ret
push 0x80
lea eax, [ebp - 0xac]
mov dword [ebp - 0x2c], 0
push 0
push eax
call fcn.10019c70
add esp, 0xc
push 0
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x10005f7c
push 0
lea eax, [ebp - 0x2c]
push eax
push 0x80
lea eax, [ebp - 0xac]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x10005f7c
mov di, word [ebp - 0x8f]
test di, di
je 0x10005f7c
lea ecx, [ebp - 0xa0]
mov edx, 0x10042190
mov esi, 0xc
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x10005f7c
add ecx, 4
add edx, 4
sub esi, 4
jae 0x10006252
cmp byte [ebp - 0xac], 0x41
jne 0x10005f7c
cmp byte [ebp - 0xab], 0x53
jne 0x10005f7c
cmp byte [ebp - 0xaa], 0x4c
jne 0x10005f7c
cmp byte [ebp - 0xa9], 0x46
jne 0x10005f7c
cmp byte [ebp - 0xa8], 0x49
jne 0x10005f7c
cmp byte [ebp - 0xa7], 0x4c
jne 0x10005f7c
cmp byte [ebp - 0xa6], 0x45
jne 0x10005f7c
cmp byte [ebp - 0xa5], 0x31
jne 0x10005f7c
cmp byte [ebp - 0xa4], 0x2e
jne 0x10005f7c
cmp byte [ebp - 0xa3], 0x30
jne 0x10005f7c
cmp di, word [0x100421a0]
jne 0x10006313
movsx eax, byte [ebp - 0x90]
cmp eax, dword [0x100421a4]
jne 0x10006313
mov eax, dword [ebp - 0x8d]
cmp eax, dword [0x10042184]
je 0x100061c8
lea ecx, [ebp - 0xd8]
call fcn.10005780
test eax, eax
je 0x10005f7c
movups xmm0, xmmword [ebp - 0x89]
mov ax, word [ebp - 0xbf]
mov ebx, 0x100421d0
mov word [0x100421a0], ax
movsx eax, byte [ebp - 0xc0]
movups xmmword [0x100421d0], xmm0
mov dword [0x100421a4], eax
movups xmm0, xmmword [ebp - 0x79]
mov eax, dword [ebp - 0x8d]
mov dword [0x10042184], eax
movups xmmword [0x100421e0], xmm0
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0xdc], 4
mov esi, dword [ebx]
mov edx, 0x2898bd67
mov edi, dword [ebx + 4]
mov ebx, 0x1f
mov ecx, esi
mov eax, esi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
shr eax, 0xd
add ecx, esi
and eax, 3
mov eax, dword [ebp + eax*4 - 0xbd]
add eax, edx
add edx, 0x61c98647
xor ecx, eax
sub edi, ecx
mov ecx, edi
mov eax, edi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
and eax, 3
add ecx, edi
mov eax, dword [ebp + eax*4 - 0xbd]
add eax, edx
xor ecx, eax
sub esi, ecx
sub ebx, 1
jne 0x10006384
mov ebx, dword [ebp - 0x2c]
mov dword [ebx], esi
mov dword [ebx + 4], edi
add ebx, 8
sub dword [ebp - 0xdc], 1
mov dword [ebp - 0x2c], ebx
jne 0x10006375
mov ebx, 0x100421d0
mov dword [ebp - 0xdc], 4
mov dword [ebp - 0x2c], ebx
nop dword [eax + eax]
mov esi, dword [ebx]
xor edx, edx
mov edi, dword [ebx + 4]
lea ebx, [edx + 0x1f]
nop word [eax + eax]
mov ecx, edi
mov eax, edi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
and eax, 3
add ecx, edi
mov eax, dword [eax*4 + 0x10039220]
add eax, edx
sub edx, 0x61c98647
xor ecx, eax
add esi, ecx
mov ecx, esi
mov eax, esi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
shr eax, 0xd
add ecx, esi
and eax, 3
mov eax, dword [eax*4 + 0x10039220]
add eax, edx
xor ecx, eax
add edi, ecx
sub ebx, 1
jne 0x10006410
mov ebx, dword [ebp - 0x2c]
mov dword [ebx], esi
mov dword [ebx + 4], edi
add ebx, 8
sub dword [ebp - 0xdc], 1
mov dword [ebp - 0x2c], ebx
jne 0x10006400
mov ax, word [ebp - 0x8f]
cmp ax, word [0x100421a0]
je 0x100061c8
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 8]
pop edi
pop esi
mov dword [eax], 1
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.10018459
mov esp, ebp
pop ebp
ret