Function at 0x681e90
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 0x681ec7
lea esi, [edi + 4]
mov ebp, 0x100
mov eax, dword [esi]
test eax, eax
je 0x681eba
push eax
mov ecx, ebx
call fcn.006820e0
add esi, 4
dec ebp
jne 0x681eac
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 0x681f78
mov edx, dword [esp + 0x2c]
mov ax, word [0x7a456c]
mov cl, byte [0x7a456e]
push 0
push 0x80
push 3
push 0
push 1
push closesocket
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 0x681f78
lea eax, [esp + 0x18]
push eax
push esi
call dword [sym.imp.kernel32.dll_GetFileSize]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x681f71
test ebx, ebx
je 0x681f71
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 0x681f84
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 [0x7a9e80], 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 [0x7a9e82]
add dx, word [0x7a9e84]
inc esi
cmp esi, 8
mov cx, dx
mov word [0x7a9e80], cx
jb 0x681f9a
lea eax, [esp + 0x20]
push 0x7aa288
push eax
mov byte [esp + 0x2c], 0
call dword [sym.imp.kernel32.dll_lstrcmpA]
test eax, eax
je 0x68200c
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 0x68204d
mov dx, word [0x7a9e80]
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 [0x7a9e82]
add cx, word [0x7a9e84]
inc esi
inc edi
cmp esi, ebx
mov word [0x7a9e80], cx
mov byte [edi + edx - 1], al
jb 0x682012
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x10]
push eax
push ebx
mov byte [edi + ebx], 0
call fcn.00728aa9
mov edi, dword [sym.imp.user32.dll_CharLowerA]
add esp, 8
push eax
call edi
mov esi, eax
test esi, esi
je 0x6820ab
mov ebx, dword [esp + 0x30]
test ebx, ebx
je 0x682085
mov ecx, dword [esp + 0x34]
push esi
push ecx
call ebx
add esp, 8
mov ecx, dword [esp + 0x1c]
push esi
call fcn.00681cd0
lea edx, [esp + 0x10]
push edx
push 0
call fcn.00728aa9
add esp, 8
push eax
call edi
mov esi, eax
test esi, esi
jne 0x682076
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