Function at 0x409d50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
push esi
mov ebp, 9
xor esi, esi
xor ebx, ebx
push edi
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0x24], ebp
mov dword [esp + 0x1c], 0x100
xor eax, eax
mov ecx, 0x4620e0
mov edx, 0x45e0e0
mov byte [ecx], al
mov word [edx], 0x100
inc eax
inc ecx
add edx, 2
cmp ax, 0x100
jb 0x409d80
mov ecx, 0xf7f
mov eax, 0x20002000
mov edi, 0x45e2e2
mov dword [esp + 0x10], 1
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edx, dword [0x46612c]
mov eax, dword [0x466128]
cmp edx, eax
jae 0x409dcb
mov al, byte [edx + 0x466130]
inc edx
mov dword [0x46612c], edx
jmp 0x409dd6
call fcn.00409c70
mov edx, dword [0x46612c]
and eax, 0xff
cmp eax, 0xffffffff
je 0x409dfc
mov ecx, esi
add esi, 8
shl eax, cl
mov dword [esp + 0x10], 0
or ebx, eax
cmp esi, 0x18
jle 0x409dad
mov edx, dword [0x46612c]
mov ax, word [0x4329ca]
mov ecx, dword [esp + 0x10]
and eax, ebx
sub esi, 9
shr ebx, 9
test ecx, ecx
mov dword [esp + 0x20], eax
jne 0x409e2d
not al
and eax, 0xff
mov eax, dword [eax*4 + 0x46a138]
xor eax, 0xffffff
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0x4329ca
cmp ebp, esi
jle 0x409e88
cmp esi, 0x18
mov dword [esp + 0x10], 1
jg 0x409e88
cmp edx, dword [0x466128]
jae 0x409e5d
mov al, byte [edx + 0x466130]
inc edx
mov dword [0x46612c], edx
jmp 0x409e68
call fcn.00409c70
mov edx, dword [0x46612c]
and eax, 0xff
cmp eax, 0xffffffff
je 0x409e88
mov ecx, esi
add esi, 8
shl eax, cl
mov dword [esp + 0x10], 0
or ebx, eax
cmp esi, 0x18
jle 0x409e46
mov eax, dword [esp + 0x18]
mov ecx, ebp
sub esi, ebp
mov di, word [eax]
mov eax, dword [esp + 0x10]
and edi, ebx
shr ebx, cl
test eax, eax
mov dword [esp + 0x28], ebx
jne 0x409f36
cmp di, 0x100
jne 0x409fba
cmp ebp, esi
jle 0x409f05
cmp esi, 0x18
mov dword [esp + 0x10], 1
jg 0x409f05
cmp edx, dword [0x466128]
jae 0x409eda
mov al, byte [edx + 0x466130]
inc edx
mov dword [0x46612c], edx
jmp 0x409ee5
call fcn.00409c70
mov edx, dword [0x46612c]
and eax, 0xff
cmp eax, 0xffffffff
je 0x409f05
mov ecx, esi
add esi, 8
shl eax, cl
mov dword [esp + 0x10], 0
or ebx, eax
cmp esi, 0x18
jle 0x409ec3
mov ecx, dword [esp + 0x18]
sub esi, ebp
mov ax, word [ecx]
mov ecx, ebp
and eax, ebx
shr ebx, cl
cmp ax, 1
jne 0x409f42
mov eax, dword [esp + 0x18]
inc ebp
add eax, 2
mov dword [esp + 0x24], ebp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x409e35
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret
cmp ax, 2
jne 0x409f2a
mov ecx, 0x45e2e2
mov edx, 0x1eff
mov ax, word [ecx]
and eax, 0x1fff
cmp ax, 0x100
jbe 0x409f7a
cmp ax, 0x2000
je 0x409f7a
and eax, 0xffff
or byte [eax*2 + 0x45e0e1], 0x40
lea eax, [eax*2 + 0x45e0e0]
add ecx, 2
dec edx
jne 0x409f52
mov ecx, 0x45e2e2
mov edx, 0x1eff
mov ax, word [ecx]
test ah, 0x40
je 0x409f9c
and eax, 0xbfff
mov word [ecx], ax
jmp 0x409fa1
mov word [ecx], 0x2000
add ecx, 2
dec edx
jne 0x409f8a
mov edx, dword [0x46612c]
mov dword [esp + 0x1c], 0x100
jmp 0x409f2a
mov edx, edi
mov eax, 0x4660df
and edx, 0xffff
mov ecx, edi
cmp word [edx*2 + 0x45e0e0], 0x2000
jne 0x409fe5
mov ecx, dword [esp + 0x20]
mov ebp, 1
mov eax, 0x4660de
jmp 0x409fe7
xor ebp, ebp
and ecx, 0xffff
dec eax
mov dl, byte [ecx + 0x4620e0]
mov byte [eax + 1], dl
mov cx, word [ecx*2 + 0x45e0e0]
and ecx, 0x1fff
cmp cx, 0x100
jne 0x409fe7
mov edx, 0x4660df
sub edx, eax
inc eax
test ebp, ebp
je 0x40a020
mov cl, byte [eax]
mov byte [0x4660df], cl
lea ebp, [edx + eax]
mov ecx, eax
cmp eax, ebp
jae 0x40a056
mov ebx, dword [esp + 0x14]
xor edx, edx
mov dl, byte [ecx]
and ebx, 0xff
xor edx, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 8
mov edx, dword [edx*4 + 0x46a138]
xor edx, ebx
inc ecx
cmp ecx, ebp
mov dword [esp + 0x14], edx
jb 0x40a029
mov ebx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov edx, 0x2000
inc ecx
mov ebp, ecx
and ebp, 0xffff
cmp word [ebp*2 + 0x45e0e0], dx
je 0x40a085
inc ecx
mov ebp, ecx
and ebp, 0xffff
cmp word [ebp*2 + 0x45e0e0], dx
jne 0x40a072
mov dl, byte [eax]
mov ax, word [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
and ecx, 0xffff
mov dword [esp + 0x20], edi
mov byte [ecx + 0x4620e0], dl
mov edx, dword [0x46612c]
mov word [ecx*2 + 0x45e0e0], ax
jmp 0x409e35