Function at 0x489870
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x79f528
mov eax, dword fs:[0]
push eax
sub esp, 0x78
mov eax, dword [0x831184]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
xorps xmm0, xmm0
lea ecx, [ebp - 0x28]
push 0
movups xmmword [ebp - 0x28], xmm0
movq qword [ebp - 0x18], xmm0
call fcn.007725c0
sub esp, 0x18
mov dword [ebp - 4], 0
mov ecx, esp
mov dword [ebp - 0x5c], esp
push 1
call fcn.00772350
mov byte [ebp - 4], 1
xor ecx, ecx
mov dword [ebp - 0x4c], 7
mov dword [ebp - 0x48], 0xdfd9cfdf
mov dword [ebp - 0x44], 0xb0c1c1c4
lea eax, [ecx - 0x57]
xor byte [ebp + ecx - 0x48], al
inc ecx
mov eax, dword [ebp - 0x4c]
cmp ecx, eax
jb 0x4898e3
mov byte [ebp + eax - 0x48], 0
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x48]
push eax
call fcn.00772ae0
mov ecx, eax
mov byte [ebp - 4], 0
call fcn.00772890
sub esp, 0x18
lea eax, [esi + 0x20]
mov ecx, esp
mov dword [ebp - 0x5c], esp
push eax
call fcn.00772080
mov byte [ebp - 4], 2
xor ecx, ecx
mov eax, 4
mov dword [ebp - 0x48], 0xcddfcbcd
mov dword [ebp - 0x4c], eax
mov byte [ebp - 0x44], 0xad
mov word [ebp - 0x43], cx
mov byte [ebp - 0x41], cl
nop
lea eax, [ecx - 0x57]
xor byte [ebp + ecx - 0x48], al
inc ecx
mov eax, dword [ebp - 0x4c]
cmp ecx, eax
jb 0x489940
mov byte [ebp + eax - 0x48], 0
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x48]
push eax
call fcn.00772ae0
mov ecx, eax
mov byte [ebp - 4], 0
call fcn.00772890
sub esp, 0x18
lea eax, [esi + 8]
mov ecx, esp
mov dword [ebp - 0x5c], esp
push eax
call fcn.00772080
mov byte [ebp - 4], 3
mov eax, 5
mov dword [ebp - 0x4c], eax
xor ecx, ecx
mov dword [ebp - 0x48], 0xc9c7c3cf
mov dword [ebp - 0x44], 0xaede
lea eax, [ecx - 0x57]
xor byte [ebp + ecx - 0x48], al
inc ecx
mov eax, dword [ebp - 0x4c]
cmp ecx, eax
jb 0x489998
mov byte [ebp + eax - 0x48], 0
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x48]
push eax
call fcn.00772ae0
mov ecx, eax
mov byte [ebp - 4], 0
call fcn.00772890
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x28]
call fcn.00774be0
mov byte [ebp - 4], 4
lea edx, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
mov edi, dword [ebp - 0x30]
cmovae edx, dword [ebp - 0x40]
xor ecx, ecx
mov dword [ebp - 0x58], 9
mov dword [ebp - 0x54], 0xc400c0
mov dword [ebp - 0x50], 0xc300cd
mov dword [ebp - 0x4c], 0xc40083
mov dword [ebp - 0x48], 0xdf00dc
mov dword [ebp - 0x44], 0xb200df
nop dword [eax]
lea eax, [ecx + 0xa9]
xor word [ebp + ecx*2 - 0x54], ax
inc ecx
mov eax, dword [ebp - 0x58]
cmp ecx, eax
jb 0x489a10
xor ecx, ecx
mov word [ebp + eax*2 - 0x54], cx
mov ecx, dword [esi]
test ecx, ecx
jne 0x489a3c
mov dword [0x83faac], 0x10000
jmp 0x489aa8
cmp dword [ecx], 2
je 0x489a4d
mov dword [0x83faac], 0x80000
jmp 0x489aa8
mov ecx, dword [ecx + 4]
lea eax, [ebp - 0x54]
push 3
push edi
push edx
push eax
call fcn.00618ca0
mov dword [0x83faac], eax
test eax, eax
jne 0x489aa8
mov ecx, dword [esi]
test ecx, ecx
je 0x489a78
cmp dword [ecx], 1
jne 0x489a78
call fcn.006157a0
jmp 0x489a7d
call fcn.00619a90
lea ecx, [ebp - 0x40]
call fcn.00407a10
lea ecx, [ebp - 0x28]
call fcn.007727c0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0076eb7e
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x84]
push eax
call fcn.00489ae0
mov ecx, eax
call fcn.004131e0
push eax
lea ecx, [ebp - 0x4c]
call fcn.0041f340
push 0x826c10
lea eax, [ebp - 0x4c]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
int3