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

Disassembly:
sub esp, 0x18
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x1c], ebx
mov edi, dword [ebx + 4]
test edi, edi
je 0x5f61e7
lea esi, [edi + 4]
mov ebp, 0x100
mov eax, dword [esi]
test eax, eax
je 0x5f61da
push eax
mov ecx, ebx
call fcn.005f6400
add esi, 4
dec ebp
jne 0x5f61cc
push edi
call dword [sym.imp.kernel32.dll_GlobalFree]
mov edi, dword [sym.imp.kernel32.dll_GlobalAlloc]
push 0x404
push 0x40
mov dword [ebx + 4], 0
call edi
test eax, eax
mov dword [ebx + 4], eax
je 0x5f6298
mov edx, dword [esp + 0x2c]
mov ax, word [0x6d4068]
mov cl, byte [0x6d406a]
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocString
push edx
mov word [esp + 0x2c], ax
mov byte [esp + 0x2e], cl
call dword [sym.imp.kernel32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x14], esi
je 0x5f6298
lea eax, [esp + 0x18]
push eax
push esi
call dword [sym.imp.kernel32.dll_GetFileSize]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x5f6291
test ebx, ebx
je 0x5f6291
push ebx
push 0x40
call edi
lea ecx, [ebx - 7]
mov ebp, eax
push ecx
push 0x40
call edi
lea edx, [esp + 0x18]
push 0
push edx
push ebx
mov edi, eax
push ebp
push esi
mov dword [esp + 0x40], edi
call dword [sym.imp.kernel32.dll_ReadFile]
test eax, eax
jne 0x5f62a4
push edi
mov edi, dword [sym.imp.kernel32.dll_GlobalFree]
call edi
push ebp
call edi
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0xc
mov cx, 0x464
mov esi, 4
lea edi, [esp + 0x20]
mov word [0x6d7fec], cx
sub edi, esi
mov dl, byte [esi + ebp]
xor eax, eax
mov al, ch
xor al, dl
movzx dx, dl
add dx, cx
mov byte [edi + esi], al
imul dx, word [0x6d7fee]
add dx, word [0x6d7ff0]
inc esi
cmp esi, 8
mov cx, dx
mov word [0x6d7fec], cx
jb 0x5f62ba
lea eax, [esp + 0x20]
push 0x6d83f4
push eax
mov byte [esp + 0x2c], 0
call dword [sym.imp.kernel32.dll_lstrcmpA]
test eax, eax
je 0x5f632c
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov edx, dword [esp + 0x2c]
mov esi, dword [sym.imp.kernel32.dll_GlobalFree]
push edx
call esi
push ebp
call esi
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0xc
xor edi, edi
cmp esi, ebx
jae 0x5f636d
mov dx, word [0x6d7fec]
mov cl, byte [esi + ebp]
xor eax, eax
mov al, dh
xor al, cl
movzx cx, cl
add cx, dx
mov edx, dword [esp + 0x2c]
imul cx, word [0x6d7fee]
add cx, word [0x6d7ff0]
inc esi
inc edi
cmp esi, ebx
mov word [0x6d7fec], cx
mov byte [edi + edx - 1], al
jb 0x5f6332
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x10]
push eax
push ebx
mov byte [edi + ebx], 0
call fcn.00675792
mov edi, dword [sym.imp.user32.dll_CharLowerA]
add esp, 8
push eax
call edi
mov esi, eax
test esi, esi
je 0x5f63cb
mov ebx, dword [esp + 0x30]
test ebx, ebx
je 0x5f63a5
mov ecx, dword [esp + 0x34]
push esi
push ecx
call ebx
add esp, 8
mov ecx, dword [esp + 0x1c]
push esi
call fcn.005f5ff0
lea edx, [esp + 0x10]
push edx
push 0
call fcn.00675792
add esp, 8
push eax
call edi
mov esi, eax
test esi, esi
jne 0x5f6396
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov esi, dword [sym.imp.kernel32.dll_GlobalFree]
push ebx
call esi
push ebp
call esi
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0xc