Function at 0x514980
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x514daa
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x4a15fc]
call fcn.004a16fc
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x514d8d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0xc]
call fcn.004a179c
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x18], 1
xor ecx, ecx
mov edx, 0x514dc0
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514a54
mov dword [ebp - 8], 1
mov dword [ebp - 0x10], 0x580f78
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514a3f
xor eax, eax
push ebp
push 0x514a35
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514a3f
inc dword [ebp - 8]
add dword [ebp - 0x10], 4
cmp dword [ebp - 8], 0x15
jne 0x5149f5
mov eax, dword [ebp - 0xc]
call fcn.004a176c
xor ecx, ecx
mov edx, 0x514e04
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514ad4
mov dword [ebp - 8], 0x15
mov dword [ebp - 0x14], 0x580fc8
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514abf
xor eax, eax
push ebp
push 0x514ab5
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514abf
inc dword [ebp - 8]
add dword [ebp - 0x14], 4
cmp dword [ebp - 8], 0x19
jne 0x514a75
mov eax, dword [ebp - 0xc]
call fcn.004a176c
xor ecx, ecx
mov edx, 0x514e48
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514bc9
mov dword [ebp - 8], 0x19
mov dword [ebp - 0x18], 0x580fd8
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514b43
xor eax, eax
push ebp
push 0x514b39
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514b43
inc dword [ebp - 8]
add dword [ebp - 0x18], 4
cmp dword [ebp - 8], 0x2d
jne 0x514af9
mov dword [ebp - 8], 0x3e
mov ebx, 0x58106c
mov edx, dword [ebx]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514b7e
mov edx, dword [ebx]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
inc dword [ebp - 8]
add ebx, 4
cmp dword [ebp - 8], 0x41
jne 0x514b5c
mov edx, dword [0x581080]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514bb0
mov edx, dword [0x581080]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov byte [edx + 0x4a], al
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x4a]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x4c]
call fcn.00513a0c
mov eax, dword [ebp - 0xc]
call fcn.004a176c
xor ecx, ecx
mov edx, 0x514e90
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514c49
mov dword [ebp - 8], 0x2d
mov dword [ebp - 0x1c], 0x581028
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514c34
xor eax, eax
push ebp
push 0x514c2a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514c34
inc dword [ebp - 8]
add dword [ebp - 0x1c], 4
cmp dword [ebp - 8], 0x36
jne 0x514bea
mov eax, dword [ebp - 0xc]
call fcn.004a176c
xor ecx, ecx
mov edx, 0x514ed8
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514cc9
mov dword [ebp - 8], 0x36
mov dword [ebp - 0x20], 0x58104c
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514cb4
xor eax, eax
push ebp
push 0x514caa
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514cb4
inc dword [ebp - 8]
add dword [ebp - 0x20], 4
cmp dword [ebp - 8], 0x3d
jne 0x514c6a
mov eax, dword [ebp - 0xc]
call fcn.004a176c
xor ecx, ecx
mov edx, 0x514f24
mov eax, dword [ebp - 0xc]
call fcn.004a1804
test al, al
je 0x514d2c
mov edx, dword [0x581068]
mov eax, dword [ebp - 0xc]
call fcn.004a1f3c
test al, al
je 0x514d24
xor eax, eax
push ebp
push 0x514d1a
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [0x581068]
mov eax, dword [ebp - 0xc]
call fcn.004a1e48
mov edx, dword [ebp - 4]
mov byte [edx + 0x44], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x514d24
mov eax, dword [ebp - 0xc]
call fcn.004a176c
mov edx, 0x80000002
mov eax, dword [ebp - 0xc]
call fcn.004a179c
mov dword [ebp - 8], 0x41
mov ebx, 0x581078
mov ecx, dword [ebx]
lea eax, [ebp - 0x24]
mov edx, 0x514f68
call fcn.00405138
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0xc]
call fcn.004a1fe4
xor al, 1
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov byte [edx + ecx + 7], al
inc dword [ebp - 8]
add ebx, 4
cmp dword [ebp - 8], 0x43
jne 0x514d45
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x514d94
mov eax, dword [ebp - 0xc]
call fcn.00403ec0
ret