Function at 0x7985e4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd0
push ebx
push esi
push edi
mov esi, eax
xor ecx, ecx
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x1c]
lea edx, [ebp - 0x2d]
mov ecx, 0x1d
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov dl, 1
mov eax, dword [0x481c74]
call fcn.00408a94
mov dword [ebp - 0xc], eax
mov dl, 1
mov eax, dword [0x481c74]
call fcn.00408a94
mov dword [ebp - 0x10], eax
mov dl, 1
mov eax, dword [0x639cc0]
call fcn.0063abbc
mov dword [ebp - 8], eax
mov dl, 0x78
mov eax, dword [ebp - 8]
call fcn.0063ad4c
mov eax, esi
mov edx, dword [eax]
call dword [edx]
sub eax, 0x1d
sbb edx, 0
push edx
push eax
mov edx, esi
mov eax, dword [ebp - 0x10]
call fcn.004a26f4
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0x10]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
call fcn.0065ede0
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
xor edx, edx
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 4]
xor eax, eax
mov dword [ebp - 0x15], eax
lea edx, [ebp - 0x2d]
mov ecx, 0x1d
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x10]
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx]
push edx
push eax
mov edx, dword [ebp - 0xc]
mov eax, esi
call fcn.004a26f4
mov eax, dword [ebp - 0xc]
xor edx, edx
mov dword [ebp - 0xc], edx
call fcn.00408ac4
mov eax, dword [ebp - 0x10]
xor edx, edx
mov dword [ebp - 0x10], edx
call fcn.00408ac4
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [ebp - 8], edx
call fcn.00408ac4
mov eax, esi
mov edx, dword [eax]
call dword [edx]
mov edi, eax
dec edi
sub edi, 0x1d
jl 0x798774
inc edi
mov ebx, 0x1d
mov eax, dword [esi + 4]
add eax, ebx
movzx eax, byte [eax]
mov byte [ebp - 1], al
ror byte [ebp - 1], 3
mov eax, ebx
imul ebx
push ecx
mov ecx, 3
cdq
idiv ecx
pop ecx
mov ecx, ebx
lea edx, [ecx + ecx*4]
add dx, cx
add ax, dx
movzx edx, byte [ebp - 0x11]
add edx, edx
add edx, edx
add edx, edx
add ax, dx
add ax, 0xdb
mov ecx, eax
mov eax, ebx
push ecx
mov ecx, 0xf
cdq
idiv ecx
pop ecx
movzx eax, byte [edx + 0x8c0048]
xor byte [ebp - 1], al
movzx eax, byte [ebp - 1]
not al
xor al, cl
mov byte [ebp - 1], al
mov eax, 1
mov edx, dword [esi + 4]
add edx, ebx
lea ecx, [ebp - 1]
xchg ecx, eax
call fcn.00407394
inc ebx
dec edi
jne 0x798701
xor eax, eax
mov dword [ebp - 0x15], eax
mov eax, esi
mov edx, dword [eax]
call dword [edx]
mov edi, eax
dec edi
test edi, edi
jl 0x7987ac
inc edi
xor ebx, ebx
mov eax, dword [ebp - 0x15]
xor edx, edx
push edx
push eax
mov eax, dword [esi + 4]
add eax, ebx
movzx eax, byte [eax]
imul ebx
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
mov dword [ebp - 0x15], eax
inc ebx
dec edi
jne 0x798789
xor ecx, ecx
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x1c]
lea edx, [ebp - 0x2d]
mov ecx, 0x1d
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x10]
xor ecx, ecx
xor edx, edx
mov eax, esi
mov ebx, dword [eax]
call dword [ebx + 0x1c]
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret