Function at 0x40fff3
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2d4
push ebx
push ebp
push esi
mov ebp, edx
mov dword [esp + 0xc], 0x5d726d24
push edi
mov esi, ecx
mov byte [esp + 0x14], 0x2b
xor edx, edx
mov al, byte [esp + edx + 0x10]
xor al, 1
movzx eax, al
mov word [esp + edx*2 + 0x44], ax
inc edx
cmp edx, 5
jl 0x410010
push dword [esp + 0x2e8]
xor eax, eax
mov word [esp + 0x52], ax
movzx eax, word [0x42b8f0]
and eax, 0x42f241f6
mov dword [0x42b8a8], eax
lea eax, [esp + 0x48]
push eax
call fcn.0042318b
pop ecx
pop ecx
movzx ecx, word [0x42b918]
mov edi, eax
sub ecx, 0x507fcaaf
mov dword [esp + 0x10], edi
mov dword [0x42b89c], ecx
imul ecx, dword [0x42b8a8], 0x27fa
mov word [0x42b918], cx
test edi, edi
je 0x410531
movzx ecx, byte [0x42b8c9]
mov eax, 0x6cff
imul ecx, eax
mov edx, 0x54e1cc7b
mov eax, 0xaff0
add word [0x42b8f0], ax
movzx eax, byte [0x42b8c9]
imul eax, eax, 0xdedd5d1d
mov word [0x42b918], cx
xor ecx, ecx
inc ecx
mov dword [0x42b89c], eax
lea eax, [esp + 0x90]
push eax
push edi
call fcn.0041568d
call eax
mov ebx, eax
cmp ebx, 0xffffffff
je 0x410509
mov dword [esp + 0x18], 0x36313213
xor ecx, ecx
mov word [esp + 0x1c], 0x3b22
mov byte [esp + 0x1e], 0x23
mov al, byte [esp + ecx + 0x18]
xor al, 0x57
movzx eax, al
mov word [esp + ecx*2 + 0x50], ax
inc ecx
cmp ecx, 7
jl 0x4100ee
movzx ecx, word [0x42b8a8]
xor eax, eax
push dword [esp + 0x2ec]
mov word [esp + 0x62], ax
mov edx, ebp
lea eax, [ecx + 0x4ef4]
and ecx, 0x8378
mov word [0x42b918], ax
movzx eax, ax
or eax, 0xce2552e9
mov word [0x42b8f0], cx
mov dword [0x42b89c], eax
mov ecx, esi
lea eax, [esp + 0x54]
push eax
push dword [esp + 0x2f0]
call fcn.0041053c
mov al, byte [0x42b918]
add esp, 0xc
xor al, 0x7b
xor ecx, ecx
mov byte [0x42b8c9], al
mov edx, 0x17299c7b
imul eax, dword [0x42b8a8], 0x1f1b
inc ecx
mov word [0x42b918], ax
call fcn.0041568d
mov dword [esp + 0x40], eax
mov edx, 0xff
mov word [esp + 0x20], 0x6c6c
mov edi, esi
push 0x2e
pop eax
mov word [esp + 0x24], ax
xor eax, eax
mov word [esp + 0x26], ax
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x20]
sub ax, 0x3e
and ax, dx
mov word [esp + ecx*2 + 0x18], ax
inc ecx
cmp ecx, 2
jl 0x4101a1
mov ecx, dword [0x42b89c]
xor eax, eax
mov word [esp + 0x1c], ax
mov al, byte [0x42b8f0]
sub al, 7
mov byte [0x42b8c9], al
lea eax, [ecx + 0x4571]
mov word [0x42b918], ax
lea eax, [ecx + 0x7f725f45]
mov dword [0x42b8a8], eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0xc0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x4104ae
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0xc0]
push eax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x4104ae
movzx eax, byte [0x42b8a8]
imul eax, eax, 0x2d
test byte [esp + 0x90], 0x10
mov byte [0x42b8c9], al
je 0x4104c5
mov cx, word [0x42b8f0]
mov eax, 0xa7bd
add word [0x42b918], ax
movzx eax, cx
xor cl, 0xf6
add eax, 0x664612c3
mov dword [0x42b8a8], eax
movzx eax, cl
mov ecx, 0x5818
add ax, cx
mov word [0x42b8f0], ax
mov al, byte [0x42b89c]
sub al, 0x12
mov byte [0x42b8c9], al
lea eax, [esp + 0xbc]
push eax
call fcn.0040581e
pop ecx
push 7
pop esi
cmp eax, esi
jb 0x4104c5
mov dword [esp + 0x28], 0xf0f9e4c6
xor ecx, ecx
mov word [esp + 0x2c], 0xfaff
mov byte [esp + 0x2e], 0xf3
mov al, byte [esp + ecx + 0x28]
xor al, 0x96
movzx eax, al
mov word [esp + ecx*2 + 0x60], ax
inc ecx
cmp ecx, esi
jl 0x4102ac
xor eax, eax
mov dword [esp + 0x30], 0x808784a5
mov word [esp + 0x6e], ax
xor ecx, ecx
mov word [esp + 0x34], 0x8d94
mov byte [esp + 0x36], 0x95
mov al, byte [esp + ecx + 0x30]
xor al, 0xe1
movzx eax, al
mov word [esp + ecx*2 + 0x70], ax
inc ecx
cmp ecx, esi
jl 0x4102dc
mov ecx, dword [0x42b8a8]
xor eax, eax
mov word [esp + 0x7e], ax
mov eax, dword [0x42b89c]
and eax, 0xbb8
mov word [0x42b8f0], ax
lea edx, [ecx + 0x39]
movzx eax, word [0x42b918]
or eax, 0x1f6f9823
mov byte [0x42b8c9], dl
mov dword [0x42b89c], eax
imul eax, ecx, 0x6691ad74
mov ecx, 0x6afa
push 0xe
mov dword [0x42b8a8], eax
movzx eax, dl
sub ax, cx
mov word [0x42b918], ax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0xc4]
push eax
call fcn.004022e4
add esp, 0xc
test eax, eax
je 0x41037c
push 0xe
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0xc4]
push eax
call fcn.004022e4
add esp, 0xc
test eax, eax
jne 0x4104c5
mov dword [esp + 0x38], 0xa9c0b972
xor ecx, ecx
mov word [esp + 0x3c], 0xb972
mov edx, 0xff
mov byte [esp + 0x3e], 0xc0
movzx eax, byte [esp + ecx + 0x38]
sub ax, 0x4d
and ax, dx
mov word [esp + ecx*2 + 0x80], ax
inc ecx
cmp ecx, esi
jl 0x410397
xor eax, eax
mov ecx, 0x5552
mov word [esp + 0x8e], ax
mov ax, word [0x42b918]
and ax, cx
movzx ecx, ax
mov word [0x42b918], ax
lea eax, [ecx + 0xa9fc3fa]
and cl, 0xc2
mov dword [0x42b89c], eax
movzx eax, cl
and eax, 0x276cf92b
mov byte [0x42b8c9], cl
mov dword [0x42b8a8], eax
lea eax, [esp + 0xbc]
push eax
push dword [esp + 0x2ec]
lea eax, [esp + 0x88]
push eax
call fcn.0042318b
mov ecx, dword [0x42b8a8]
mov esi, eax
or ecx, 0x6ac8
add esp, 0xc
movzx edx, cx
mov word [0x42b918], cx
movzx ecx, word [0x42b8f0]
xor ecx, 0x510f8b8f
mov dword [0x42b8a8], ecx
test esi, esi
je 0x4104c5
push dword [esp + 0x2ec]
and ecx, 0x7cf7
xor ecx, 0x4bdcb875
imul eax, ecx, 0xcb12f220
mov ecx, edi
mov dword [0x42b8a8], eax
lea eax, [edx - 0x55b]
and eax, 0x8b3d
mov edx, ebp
mov word [0x42b8f0], ax
lea eax, [esp + 0xc0]
push eax
push esi
call fcn.0041053c
mov al, byte [0x42b918]
add esp, 0xc
sub al, 0x1f
mov byte [0x42b8c9], al
movzx eax, word [0x42b8f0]
and eax, 0x40aaf186
push esi
mov dword [0x42b8a8], eax
call fcn.004056f0
pop ecx
jmp 0x4104c5
mov al, byte [0x42b918]
and al, 0x70
mov byte [0x42b8c9], al
mov eax, 0x3bf0
mov word [0x42b8f0], ax
lea eax, [esp + 0x90]
push eax
push ebx
call dword [esp + 0x48]
mov edx, 0xff
test eax, eax
jne 0x410190
movzx edx, word [0x42b8f0]
mov eax, 0x792c
imul edx, eax
xor ecx, ecx
push ebx
inc ecx
mov word [0x42b8f0], dx
mov edx, 0x83fbc401
call fcn.0041568d
call eax
mov edi, dword [esp + 0x10]
movzx eax, byte [0x42b8c9]
mov ecx, 0x8f7f
and ax, cx
mov word [0x42b918], ax
mov eax, 0x3c9f
xor word [0x42b8f0], ax
push edi
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2d4
ret