Function at 0x412f44
Capabilities:
Encrypt data using rc4 ksa
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.0040357c
lea edi, [ebp - 0x1b]
xor eax, eax
push ebp
push 0x4131ec
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
call fcn.00403208
push 0
push 0x80
push 3
push 0
push 3
push 0x80000000
lea eax, [ebp - 0x2c]
mov ecx, dword [ebp - 4]
mov edx, 0x413204
call fcn.004033d8
mov eax, dword [ebp - 0x2c]
call fcn.0040358c
push eax
call sub.kernel32.dll_CreateFileA
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
jne 0x412fd3
mov eax, 0x413214
call fcn.0040fec0
mov eax, 0x41ab68
mov edx, 0x413224
call fcn.0040325c
jmp 0x4131c0
push 0
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_GetFileSize
mov esi, eax
test esi, esi
jne 0x412ffc
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_CloseHandle
mov eax, esi
mov ecx, 7
xor edx, edx
div ecx
mov ebx, edx
mov eax, 0x41ab68
mov edx, 0x413300
call fcn.0040325c
test ebx, ebx
jbe 0x413021
add esi, 7
sub esi, ebx
push esi
lea eax, [ebp - 0x28]
mov ecx, 1
mov edx, dword [0x412f24]
call fcn.00403cc8
add esp, 4
push 0
lea eax, [ebp - 0x10]
push eax
push esi
mov eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_ReadFile
mov eax, 0x41ab68
mov edx, 0x413398
call fcn.0040325c
cmp esi, dword [ebp - 0x10]
jbe 0x413074
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x10]
add eax, edx
mov edx, esi
sub edx, dword [ebp - 0x10]
xor ecx, ecx
call fcn.004027e8
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_CloseHandle
mov eax, esi
shl eax, 3
mov ecx, 7
xor edx, edx
div ecx
mov edx, dword [ebp - 8]
xchg edx, eax
call fcn.0040366c
xor ebx, ebx
mov dword [ebp - 0x14], 1
cmp esi, ebx
jbe 0x4131b1
mov eax, dword [ebp - 0x28]
lea edx, [eax + ebx]
mov eax, edi
mov ecx, 7
call fcn.004043ec
xor eax, eax
mov al, byte [edi]
mov edx, eax
shr edx, 1
mov dl, byte [edx + 0x4191fc]
mov byte [ebp - 0x23], dl
shl eax, 6
and eax, 0x40
xor edx, edx
mov dl, byte [edi + 1]
shr edx, 2
add eax, edx
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x22], al
xor edx, edx
mov dl, byte [edi + 1]
shl edx, 5
and edx, 0x60
xor eax, eax
mov al, byte [edi + 2]
mov ecx, eax
shr ecx, 3
add edx, ecx
mov dl, byte [edx + 0x4191fc]
mov byte [ebp - 0x21], dl
shl eax, 4
and eax, 0x70
xor edx, edx
mov dl, byte [edi + 3]
shr edx, 4
add eax, edx
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x20], al
xor eax, eax
mov al, byte [edi + 3]
shl eax, 3
and eax, 0x78
xor edx, edx
mov dl, byte [edi + 4]
shr edx, 5
add eax, edx
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x1f], al
xor eax, eax
mov al, byte [edi + 4]
shl eax, 2
and eax, 0x7c
xor edx, edx
mov dl, byte [edi + 5]
shr edx, 6
add eax, edx
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x1e], al
xor eax, eax
mov al, byte [edi + 5]
add eax, eax
and eax, 0x7e
xor edx, edx
ror byte [edx - 0x153ef9a9], cl
pop es
add eax, edx
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x1d], al
mov al, byte [edi + 6]
and al, 0x7f
and eax, 0xff
mov al, byte [eax + 0x4191fc]
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 8]
call fcn.004035dc
mov edx, dword [ebp - 0x14]
lea eax, [eax + edx - 1]
lea edx, [ebp - 0x23]
mov ecx, 8
call fcn.004043ec
add ebx, 7
add dword [ebp - 0x14], 8
cmp esi, ebx
ja 0x4130a5
mov eax, 0x41ab68
mov edx, 0x413410
call fcn.0040325c