Function at 0x401660
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
sub esp, 0x14
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov cx, word [0x49a658]
mov ax, cx
mov edx, eax
dec edx
mov cx, dx
mov word [0x49a658], cx
mov edx, dword [0x490784]
imul eax, edx
mov cx, word [0x49af0c]
mov dx, cx
or edx, eax
mov cx, dx
mov word [0x49af0c], cx
mov eax, dword [0x49629c]
mov edx, eax
inc edx
mov dword [0x49629c], edx
mov edx, 0xcdc74097
sub edx, eax
mov eax, dword [0x49452c]
xor eax, edx
mov dword [0x49452c], eax
mov eax, dword [0x492cb8]
mov edx, eax
dec edx
mov dword [0x492cb8], edx
mov edx, 0xf9615c2f
sub edx, eax
xor edx, 0x4ed5db30
mov eax, dword [0x495260]
mov esi, dword [0x4922ec]
sar esi, 7
imul eax, esi
cmp edx, eax
jg 0x401710
mov ax, word [0x498cfc]
mov cx, ax
and ecx, 0xc863
mov ax, cx
mov word [0x498cfc], ax
mov eax, 0xeae43f52
mov ecx, dword [esp + 0x10]
mov edx, esp
mov dword [edx], ecx
mov dword [esp + 4], eax
call fcn.00452bb0
mov dword [esp + 8], eax
mov si, word [0x498d78]
movsx eax, si
mov ecx, 0xd87918c7
sub ecx, eax
mov eax, dword [0x4974d0]
or eax, ecx
mov dword [0x4974d0], eax
mov eax, dword [esp + 8]
dec eax
mov dword [esp + 8], eax
mov eax, dword [0x491e68]
inc eax
mov dword [0x491e68], eax
add eax, 0x7226bf84
mov ecx, dword [esp + 4]
cmp ecx, eax
jle 0x401784
mov ax, word [0x499158]
mov cx, ax
or ecx, 0x7090
mov ax, cx
mov word [0x499158], ax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
movsx eax, byte [ecx + eax]
cmp eax, 0x22
jne 0x401911
mov eax, 0x55bb3127
mov ecx, dword [0x4976e4]
mov edx, ecx
dec edx
mov dword [0x4976e4], edx
imul ecx, ecx, 0x9c4298c6
cmp eax, ecx
jl 0x401825
mov eax, dword [0x49772c]
lea eax, [eax + eax - 0x3c8067cc]
mov cx, word [0x49a2b2]
mov dx, cx
dec edx
mov si, dx
mov word [0x49a2b2], si
movsx edx, cx
mov cx, word [0x49859a]
movsx edi, cx
shl edi, 4
and edi, 0xa466c5db
xor edx, edi
cmp eax, edx
jg 0x401820
mov eax, dword [0x4955d8]
or eax, 0x4e92c590
cmp eax, 0x491498e2
jne 0x401816
jmp 0x40181b
jmp 0x40181b
jmp 0x401820
jmp 0x401825
mov eax, dword [esp + 0x10]
mov byte [eax], 0x22
mov eax, dword [0x491978]
inc eax
mov dword [0x491978], eax
cmp eax, 0x8788200
je 0x401856
mov eax, dword [0x495b24]
or eax, 0x134ea250
mov dword [0x495b24], eax
jmp 0x401877
mov eax, dword [0x490cfc]
mov ecx, eax
dec ecx
mov dword [0x490cfc], ecx
add eax, 0x82ec00ac
mov ecx, dword [0x4955a4]
and ecx, eax
mov dword [0x4955a4], ecx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
mov byte [ecx + eax], 0
mov eax, dword [0x494394]
or eax, 0x2e533aa8
mov dword [0x494394], eax
mov dword [0x49327c], 0x7c097ba6
mov eax, dword [esp + 8]
dec eax
mov dword [esp + 8], eax
mov eax, dword [0x4929dc]
xor eax, 0x4019e27e
mov dword [0x4929dc], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
movsx eax, byte [ecx + eax]
cmp eax, 0x22
jne 0x401892
mov eax, dword [0x495588]
mov ecx, eax
inc ecx
mov dword [0x495588], ecx
mov dx, word [0x4980cc]
mov cx, dx
or ecx, eax
mov dx, cx
mov word [0x4980cc], dx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
lea eax, [eax + ecx + 1]
mov dword [esp + 0xc], eax
mov eax, dword [0x495d74]
and eax, 0x41dabf99
mov dword [0x495d74], eax
jmp 0x401a03
mov eax, 0xfcf5d829
mov ecx, dword [0x490dfc]
mov edx, dword [0x4962f0]
imul ecx, edx
cmp eax, ecx
jne 0x401937
mov dword [0x495eb4], 0x270872ee
mov eax, 0xe03efea9
mov ecx, dword [esp + 0x10]
mov byte [ecx], 0x20
mov dx, word [0x499976]
mov cx, dx
dec ecx
mov si, cx
mov word [0x499976], si
movsx ecx, dx
cmp eax, ecx
je 0x401973
mov eax, dword [0x49606c]
inc eax
mov dword [0x49606c], eax
mov dword [0x495cd4], eax
jmp 0x401978
mov eax, dword [0x49000c]
add eax, 0xfd7ebbff
mov dword [0x49000c], eax
mov eax, dword [esp + 8]
dec eax
mov dword [esp + 8], eax
mov cx, word [0x499342]
mov ax, cx
xor eax, 0xf66f
mov cx, ax
mov word [0x499342], cx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
movsx eax, byte [ecx + eax]
cmp eax, 0x20
jne 0x401978
mov ax, word [0x49a69e]
movsx ecx, ax
shl ecx, 4
add ecx, 0xd9a1b4ad
mov edx, dword [0x490704]
shl edx, 8
sub ecx, edx
mov dword [0x49711c], ecx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x10]
lea ecx, [ecx + edx + 1]
mov dword [esp + 0xc], ecx
mov ecx, dword [0x492dbc]
add ecx, 0x2ff3f708
mov dword [0x492dbc], ecx
mov eax, dword [0x490fd8]
imul eax, eax, 0x6021828
mov dword [0x490fd8], eax
mov eax, dword [esp + 0xc]
add esp, 0x14
pop esi
pop edi
ret