Function at 0x51ef94
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 0x51f3be
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x49dbb0]
call fcn.0049dcb0
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x51f3a1
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.0049dd50
mov eax, dword [ebp - 0xc]
mov dword [eax + 0x18], 1
xor ecx, ecx
mov edx, 0x51f3d4
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f068
mov dword [ebp - 8], 1
mov dword [ebp - 0x10], 0x59965c
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f053
xor eax, eax
push ebp
push 0x51f049
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.0049e3d8
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 0x51f053
inc dword [ebp - 8]
add dword [ebp - 0x10], 4
cmp dword [ebp - 8], 0x15
jne 0x51f009
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
xor ecx, ecx
mov edx, 0x51f418
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f0e8
mov dword [ebp - 8], 0x15
mov dword [ebp - 0x14], 0x5996ac
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f0d3
xor eax, eax
push ebp
push 0x51f0c9
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.0049e3d8
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 0x51f0d3
inc dword [ebp - 8]
add dword [ebp - 0x14], 4
cmp dword [ebp - 8], 0x19
jne 0x51f089
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
xor ecx, ecx
mov edx, 0x51f45c
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f1dd
mov dword [ebp - 8], 0x19
mov dword [ebp - 0x18], 0x5996bc
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f157
xor eax, eax
push ebp
push 0x51f14d
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.0049e3d8
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 0x51f157
inc dword [ebp - 8]
add dword [ebp - 0x18], 4
cmp dword [ebp - 8], 0x2d
jne 0x51f10d
mov dword [ebp - 8], 0x3e
mov ebx, 0x599750
mov edx, dword [ebx]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f192
mov edx, dword [ebx]
mov eax, dword [ebp - 0xc]
call fcn.0049e3d8
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 0x51f170
mov edx, dword [0x599764]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f1c4
mov edx, dword [0x599764]
mov eax, dword [ebp - 0xc]
call fcn.0049e3d8
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.0051e020
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
xor ecx, ecx
mov edx, 0x51f4a4
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f25d
mov dword [ebp - 8], 0x2d
mov dword [ebp - 0x1c], 0x59970c
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f248
xor eax, eax
push ebp
push 0x51f23e
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.0049e3d8
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 0x51f248
inc dword [ebp - 8]
add dword [ebp - 0x1c], 4
cmp dword [ebp - 8], 0x36
jne 0x51f1fe
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
xor ecx, ecx
mov edx, 0x51f4ec
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f2dd
mov dword [ebp - 8], 0x36
mov dword [ebp - 0x20], 0x599730
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f2c8
xor eax, eax
push ebp
push 0x51f2be
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.0049e3d8
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 0x51f2c8
inc dword [ebp - 8]
add dword [ebp - 0x20], 4
cmp dword [ebp - 8], 0x3d
jne 0x51f27e
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
xor ecx, ecx
mov edx, 0x51f538
mov eax, dword [ebp - 0xc]
call fcn.0049ddb8
test al, al
je 0x51f340
mov edx, dword [0x59974c]
mov eax, dword [ebp - 0xc]
call fcn.0049e4cc
test al, al
je 0x51f338
xor eax, eax
push ebp
push 0x51f32e
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [0x59974c]
mov eax, dword [ebp - 0xc]
call fcn.0049e3d8
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 0x51f338
mov eax, dword [ebp - 0xc]
call fcn.0049dd20
mov edx, 0x80000002
mov eax, dword [ebp - 0xc]
call fcn.0049dd50
mov dword [ebp - 8], 0x41
mov ebx, 0x59975c
mov ecx, dword [ebx]
lea eax, [ebp - 0x24]
mov edx, 0x51f57c
call fcn.00405184
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0xc]
call fcn.0049e574
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 0x51f359
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x51f3a8
mov eax, dword [ebp - 0xc]
call fcn.00403f0c
ret