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

Disassembly:
push 0xffffffffffffffff
push 0x7e2960
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x2c]
push eax
xor ebx, ebx
sub esp, 0x10
mov dword [esp + 0x30], ebx
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.004267d0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x38], bl
call fcn.00758120
cmp eax, ebx
jne 0x75840d
push 1
lea ecx, [esp + 0x30]
mov dword [esp + 0x20], 0xffffffff
call fcn.00404e60
xor eax, eax
jmp 0x758600
mov eax, dword [esp + 0x30]
cmp eax, ebx
jne 0x75841a
mov eax, 0x7e5658
push ebx
push 0x80
push 3
push ebx
push ebx
push SysReAllocString
push eax
call dword [sym.imp.kernel32.dll_CreateFileA]
mov edi, eax
or esi, 0xffffffff
cmp edi, esi
jne 0x758468
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], esi
cmp ecx, ebx
je 0x7585af
mov al, byte [ecx - 1]
test al, al
je 0x7585a5
cmp al, 0xff
je 0x7585a5
dec al
mov byte [ecx - 1], al
xor eax, eax
jmp 0x758600
lea edx, [esp + 0x3c]
push edx
push edi
call dword [sym.imp.kernel32.dll_GetFileSize]
cmp eax, esi
mov dword [esp + 0x28], eax
jne 0x7584b2
push edi
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x1c], esi
cmp ecx, ebx
je 0x7585af
mov al, byte [ecx - 1]
test al, al
je 0x7585a5
cmp al, 0xff
je 0x7585a5
dec al
mov byte [ecx - 1], al
xor eax, eax
jmp 0x758600
lea ebp, [eax + 8]
push ebp
call fcn.007a2d8d
push ebx
mov esi, eax
call fcn.007a3c8b
push eax
call fcn.007a34fc
add esp, 0xc
call fcn.007a3509
and eax, 0x800000ff
jns 0x7584df
dec eax
or eax, 0xffffff00
inc eax
mov byte [ebx + esi], al
inc ebx
cmp ebx, 4
jb 0x7584cc
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x3c]
push 0
push eax
lea edx, [esi + 8]
push ecx
push edx
push edi
mov byte [esi + 4], 0x4b
mov byte [esi + 5], 0x53
mov byte [esi + 6], 0x43
mov byte [esi + 7], 1
call dword [sym.imp.kernel32.dll_ReadFile]
push edi
call dword [sym.imp.kernel32.dll_CloseHandle]
xor ecx, ecx
mov word [0x833b2c], 0x464
test ebp, ebp
jbe 0x75855e
mov dl, byte [ecx + esi]
mov ebx, dword [0x833b2c]
xor eax, eax
mov edi, dword [0x833b30]
mov al, byte [0x833b2d]
xor al, dl
xor dx, dx
mov dl, al
add edx, ebx
imul dx, word [0x833b2e]
add edx, edi
inc ecx
mov word [0x833b2c], dx
mov byte [ecx + esi - 1], al
cmp ecx, ebp
jb 0x758525
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x75856b
mov eax, 0x7e5658
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push eax
call dword [sym.imp.kernel32.dll_CreateFileA]
mov edi, eax
or ebx, 0xffffffff
cmp edi, ebx
jne 0x7585b3
push esi
call fcn.007a02e0
mov ecx, dword [esp + 0x34]
add esp, 4
mov dword [esp + 0x1c], ebx
test ecx, ecx
jmp 0x75848d
dec ecx
push ecx
call fcn.007a02e0
add esp, 4
xor eax, eax
jmp 0x758600
lea eax, [esp + 0x3c]
push 0
push eax
push ebp
push esi
push edi
call dword [sym.imp.kernel32.dll_WriteFile]
push edi
call dword [sym.imp.kernel32.dll_CloseHandle]
push esi
call fcn.007a02e0
mov ecx, dword [esp + 0x34]
add esp, 4
test ecx, ecx
mov dword [esp + 0x1c], ebx
je 0x7585fb
mov al, byte [ecx - 1]
test al, al
je 0x7585f1
cmp al, 0xff
je 0x7585f1
dec al
mov byte [ecx - 1], al
jmp 0x7585fb
dec ecx
push ecx
call fcn.007a02e0
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x14]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x10
ret 0x1c