Function at 0x4220a0
Capabilities:
Encode data using xor

Disassembly:
push esi
sub esp, 0x10
mov eax, dword [esp + 0x18]
mov dword [esp + 0xc], eax
mov eax, dword [0x4a2fb8]
mov ecx, eax
inc ecx
mov dword [0x4a2fb8], ecx
add eax, 0x32f6cfee
mov ecx, dword [0x49f074]
or ecx, eax
mov dword [0x49f074], ecx
mov eax, dword [0x49efb8]
imul eax, eax, 0x2d00da6
mov dword [0x49efb8], eax
mov eax, dword [0x4a1884]
cmp eax, 0xe8016c0e
jle 0x422101
mov eax, dword [0x49d378]
xor eax, 0x3e14
mov cx, ax
mov word [0x49397a], cx
mov eax, dword [esp + 0xc]
mov ecx, esp
mov dword [ecx], eax
call fcn.00451df0
mov dword [esp + 4], eax
mov dx, word [0x4959c8]
mov ax, dx
dec eax
mov si, ax
mov word [0x4959c8], si
movsx eax, dx
add eax, 0x95bee999
mov dx, word [0x495a18]
movsx ecx, dx
shl ecx, 5
sub eax, ecx
mov ecx, dword [0x4a2764]
imul ecx, eax
mov dword [0x4a2764], ecx
mov eax, dword [esp + 4]
dec eax
mov dword [esp + 4], eax
mov eax, dword [0x49f6d0]
and eax, 0xfef8f900
mov dword [0x49f6d0], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
movsx eax, byte [ecx + eax]
cmp eax, 0x22
jne 0x42226c
mov eax, dword [0x4a21a0]
sar eax, 5
mov ecx, dword [0x4a1ed8]
imul eax, ecx
xor eax, 0x76e48448
cmp eax, 0xe51d6d2
jge 0x4221ab
mov eax, dword [0x49ff34]
imul eax, eax, 0x3287fd35
mov dword [0x49ff34], eax
mov eax, 0xaa7589f0
mov ecx, dword [esp + 0xc]
mov byte [ecx], 0x22
mov ecx, dword [0x49bacc]
dec ecx
mov dword [0x49bacc], ecx
cmp eax, ecx
jl 0x4221db
mov eax, dword [0x499c94]
add eax, 0xcc8e8231
mov dword [0x499c94], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
mov byte [ecx + eax], 0
mov eax, dword [0x4a2234]
add eax, 0x5fdb64a2
mov dword [0x4a2234], eax
mov eax, dword [0x49b6cc]
xor eax, 0xcda6b45c
mov dword [0x49b6cc], eax
mov eax, dword [esp + 4]
dec eax
mov dword [esp + 4], eax
mov eax, dword [0x49debc]
add eax, 0x3efdafbe
mov ecx, dword [0x49a224]
sub ecx, eax
mov dword [0x49a224], ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
movsx eax, byte [ecx + eax]
cmp eax, 0x22
jne 0x4221f6
mov eax, dword [0x4a2e68]
shl eax, 9
mov dword [0x49e074], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
lea eax, [eax + ecx + 1]
mov dword [esp + 8], eax
mov eax, dword [0x49f7a8]
xor eax, 0x7d190786
mov dword [0x49f7a8], eax
jmp 0x42240a
mov eax, dword [0x499728]
and eax, 0x9f4dfd68
mov ecx, dword [0x49d674]
imul ecx, eax
mov dword [0x49d674], ecx
mov eax, dword [esp + 0xc]
mov byte [eax], 0x20
mov eax, dword [0x49f648]
imul eax, eax, 0xa8e824a1
mov dword [0x49f648], eax
mov eax, 0xe190cfd8
mov dword [0x4a1004], 0xb4099606
mov ecx, dword [esp + 4]
dec ecx
mov dword [esp + 4], ecx
mov dx, word [0x4957da]
movsx ecx, dx
add ecx, 0xfc547de7
mov esi, dword [0x498d3c]
add ecx, esi
cmp eax, ecx
jne 0x42234a
mov eax, 0x95f85a2b
mov cx, word [0x496654]
mov dx, cx
inc edx
mov si, dx
mov word [0x496654], si
movsx edx, cx
cmp eax, edx
jne 0x42231f
mov eax, 0x59457fc2
mov ecx, dword [0x49ea40]
mov edx, ecx
inc edx
mov dword [0x49ea40], edx
cmp eax, ecx
jg 0x42231a
jmp 0x42231a
jmp 0x422345
mov eax, 0x18e1417f
mov ecx, dword [0x4a1ce8]
mov edx, ecx
dec edx
mov dword [0x4a1ce8], edx
cmp eax, ecx
je 0x422340
jmp 0x422340
jmp 0x422345
jmp 0x422394
mov eax, 0xe3ffbff3
mov ecx, dword [0x49cde0]
imul ecx, ecx, 0x3da78d79
mov edx, dword [0x49d9cc]
add ecx, edx
cmp eax, ecx
jge 0x42238f
mov ax, word [0x4970dc]
movsx ecx, ax
imul ecx, ecx, 0x493182a8
mov edx, 0x20c11832
sub edx, ecx
mov ecx, dword [0x4993c0]
sub ecx, edx
mov dword [0x4993c0], ecx
jmp 0x422394
jmp 0x422399
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
movsx eax, byte [ecx + eax]
cmp eax, 0x20
jne 0x42229c
mov eax, 0xf11da9ae
mov ecx, dword [0x49d6f0]
dec ecx
mov dword [0x49d6f0], ecx
cmp eax, ecx
je 0x4223df
mov eax, dword [0x49a3f4]
mov ecx, dword [0x49d3ec]
and eax, ecx
and eax, 0x74dece8b
mov dword [0x49d3ec], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
lea eax, [eax + ecx + 1]
mov dword [esp + 8], eax
mov eax, dword [0x49be48]
sar eax, 0xa
add eax, 0x52e4d935
mov ecx, dword [0x49c9a4]
and ecx, eax
mov dword [0x49c9a4], ecx
mov ax, word [0x494cb8]
movsx ecx, ax
shl ecx, 8
and ecx, 0x75628d00
mov edx, dword [0x4a051c]
xor ecx, edx
xor ecx, 0xc968b8de
mov dword [0x4a051c], ecx
mov eax, dword [esp + 8]
add esp, 0x10
pop esi
ret