Function at 0x10005f70
Capabilities:
Encode data using xor
Get file size
Read file on windows
Write 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.10019d00
push 0x7f
lea eax, [ebp - 0xab]
push 0
push eax
call fcn.10019d00
add esp, 0x18
test edi, edi
je 0x10005fc0
mov dword [edi], 0
test esi, esi
je 0x10005fca
mov dword [esi], 0
cmp ebx, 0xffffffff
je 0x10005ffc
test edi, edi
je 0x10005ffc
cmp dword [0x10041d90], 0
je 0x10005ffc
test esi, esi
je 0x10005ffc
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
je 0x10005ffc
cmp dword [0x100421bc], eax
jae 0x1000600f
mov dword [edi], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100184e9
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x1000625e
lea ecx, [ebp - 0xd8]
mov dword [esi], 1
call fcn.10005800
test eax, eax
je 0x10005ffc
push 0x5d
lea eax, [ebp - 0x89]
push 0
push eax
call fcn.10019d00
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 [0x100421b4]
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.100204aa
push eax
call fcn.10020a27
add esp, 0x14
xor esi, esi
nop dword [eax + eax]
call fcn.10020a06
mov byte [ebp + esi - 0x28], al
inc esi
cmp esi, 0x20
jl 0x100060b0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.10020a27
add esp, 4
mov edi, 0x10
call fcn.10020a06
mov esi, eax
and esi, 0x1f
call fcn.10020a06
mov edx, eax
and edx, 0x1f
cmp esi, edx
jne 0x100060f1
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 0x100060d3
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.10006530
add esp, 8
test eax, eax
jne 0x10006152
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.100184e9
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 0x10005ffc
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 0x10005ffc
movups xmm0, xmmword [ebp - 0x28]
mov ax, word [ebp - 0xbf]
mov ebx, 0x10042200
mov word [0x100421d0], ax
movsx eax, byte [ebp - 0xc0]
movups xmmword [0x10042200], xmm0
mov dword [0x100421d4], eax
movups xmm0, xmmword [ebp - 0x18]
mov dword [ebp - 0xdc], ebx
mov dword [ebp - 0x2c], 4
movups xmmword [0x10042210], 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 0x100061e0
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 0x100061d1
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100184e9
mov esp, ebp
pop ebp
ret
push 0x80
lea eax, [ebp - 0xac]
mov dword [ebp - 0x2c], 0
push 0
push eax
call fcn.10019d00
add esp, 0xc
push 0
push 0
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x10005ffc
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 0x10005ffc
mov di, word [ebp - 0x8f]
test di, di
je 0x10005ffc
lea ecx, [ebp - 0xa0]
mov edx, 0x100421c0
mov esi, 0xc
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x10005ffc
add ecx, 4
add edx, 4
sub esi, 4
jae 0x100062d2
cmp byte [ebp - 0xac], 0x41
jne 0x10005ffc
cmp byte [ebp - 0xab], 0x53
jne 0x10005ffc
cmp byte [ebp - 0xaa], 0x4c
jne 0x10005ffc
cmp byte [ebp - 0xa9], 0x46
jne 0x10005ffc
cmp byte [ebp - 0xa8], 0x49
jne 0x10005ffc
cmp byte [ebp - 0xa7], 0x4c
jne 0x10005ffc
cmp byte [ebp - 0xa6], 0x45
jne 0x10005ffc
cmp byte [ebp - 0xa5], 0x31
jne 0x10005ffc
cmp byte [ebp - 0xa4], 0x2e
jne 0x10005ffc
cmp byte [ebp - 0xa3], 0x30
jne 0x10005ffc
cmp di, word [0x100421d0]
jne 0x10006393
movsx eax, byte [ebp - 0x90]
cmp eax, dword [0x100421d4]
jne 0x10006393
mov eax, dword [ebp - 0x8d]
cmp eax, dword [0x100421b4]
je 0x10006248
lea ecx, [ebp - 0xd8]
call fcn.10005800
test eax, eax
je 0x10005ffc
movups xmm0, xmmword [ebp - 0x89]
mov ax, word [ebp - 0xbf]
mov ebx, 0x10042200
mov word [0x100421d0], ax
movsx eax, byte [ebp - 0xc0]
movups xmmword [0x10042200], xmm0
mov dword [0x100421d4], eax
movups xmm0, xmmword [ebp - 0x79]
mov eax, dword [ebp - 0x8d]
mov dword [0x100421b4], eax
movups xmmword [0x10042210], 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 0x10006404
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 0x100063f5
mov ebx, 0x10042200
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 0x10006490
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 0x10006480
mov ax, word [ebp - 0x8f]
cmp ax, word [0x100421d0]
je 0x10006248
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.100184e9
mov esp, ebp
pop ebp
ret