Function at 0x40ac20
Capabilities:
Encode data using xor

Disassembly:
xor dword [0x46c93c], 0x52b391f0
movzx eax, word [0x479c38]
mov ecx, dword [0x46fb94]
cwde
and ecx, eax
and ecx, 0xa788949f
mov dword [0x46fb94], ecx
movzx eax, word [0x47c8ba]
push edi
mov edi, dword [esp + 0x10]
and eax, 0x633a4fa
mov word [0x47c8ba], ax
test edi, edi
jle 0x40af77
mov eax, 0xffffa639
mov word [0x47f77c], ax
mov ecx, dword [0x4661c8]
mov eax, dword [0x465824]
mov edx, dword [0x471964]
imul ecx, eax
mov eax, dword [0x46ca08]
push ebx
mov ebx, dword [esp + 0xc]
add eax, 0x29d266a4
push esi
xor edx, ecx
and eax, 0x4371d2b4
mov esi, dword [ebx]
dec dword [0x471964]
and esi, 0x3f
dec dword [0x4661c8]
inc dword [0x465824]
mov dword [esp + 0x18], esi
cmp eax, edx
jle 0x40acc4
or dword [0x4713d8], 0x95f2481f
inc dword [0x461f1c]
mov eax, dword [0x461f1c]
mov ecx, dword [0x4740ac]
add eax, 0x5347c20a
push ebp
mov ebp, 0x40
or ecx, 0xbba67e37
sub ebp, esi
cmp eax, ecx
jg 0x40ad0a
movsx eax, word [0x481558]
mov ecx, dword [0x4712b0]
sar eax, 3
and ecx, eax
and ecx, 0x7e900003
add dword [0x4616f4], ecx
add dword [ebx], edi
movzx eax, word [0x47edbc]
and eax, 0xcad59293
mov word [0x47edbc], ax
mov eax, dword [0x467660]
xor eax, dword [0x45a870]
xor eax, 0xf1634c4b
mov dword [0x45a870], eax
cmp dword [ebx], edi
jae 0x40ad3a
inc dword [ebx + 4]
movsx ecx, word [0x47a7ec]
mov eax, dword [0x45c680]
or ecx, 0x5b99bc26
xor eax, 0x893e7d8
cmp eax, ecx
jle 0x40ad5f
xor dword [0x459db8], 0xe87ab0e
test esi, esi
je 0x40ae75
cmp edi, ebp
jl 0x40ae75
dec dword [0x45d9fc]
mov eax, dword [0x45d9fc]
mov ecx, dword [0x460c40]
mov esi, dword [esp + 0x18]
imul eax, eax, 0x5bbc2525
push ebp
push esi
sub ecx, eax
mov eax, dword [0x467cb0]
sar eax, 6
sub ecx, eax
mov eax, dword [esp + 0x24]
add eax, 0x28
mov dword [0x460c40], ecx
add eax, ebx
push eax
call fcn.0042cc50
or dword [0x464ec0], 0x70398dd2
lea eax, [ebx + 0x28]
push eax
push ebx
call fcn.00412590
inc dword [0x46b6b8]
add esp, 0x14
mov eax, dword [0x46b6b8]
mov ecx, dword [0x4650b4]
imul eax, eax, 0x5daa5a5
sub ecx, eax
movsx eax, word [0x476402]
add eax, 0x51c526a3
cmp eax, ecx
jne 0x40ae20
mov ecx, dword [0x46403c]
mov eax, dword [0x4704b0]
sub ecx, eax
movsx edx, word [0x475a5a]
mov eax, dword [0x463f50]
xor edx, ecx
not eax
imul eax, eax, 0x6594bfdc
cmp eax, edx
jge 0x40ae2a
and dword [0x4680d8], 0x50100257
jmp 0x40ae2a
mov dword [0x460e1c], 0x37589dca
mov eax, dword [0x4748fc]
add esi, ebp
not eax
cmp eax, 0x5c59a761
je 0x40ae55
mov eax, dword [0x4734ac]
or eax, dword [0x45d864]
or eax, 0x9f53484
mov dword [0x4734ac], eax
inc dword [0x45d864]
sub edi, ebp
mov dword [0x46a020], 0x5ff390a3
and dword [0x474104], 0x8e8402b0
mov dword [esp + 0x1c], 0
jmp 0x40ae79
mov esi, dword [esp + 0x18]
cmp edi, 0x40
jl 0x40aee1
mov ebp, edi
shr ebp, 6
mov eax, ebp
neg eax
shl eax, 6
add edi, eax
lea esp, [esp]
imul eax, dword [0x4702ec], 0x460ae2a0
push esi
push ebx
add eax, 0xcbb2a359
and dword [0x4724c8], eax
dec dword [0x4702ec]
call fcn.00412590
and dword [0x4687e4], 0x91340b5
add esp, 8
movzx eax, word [0x4788da]
add esi, 0x40
xor eax, 0x11100421
mov word [0x4788da], ax
add dword [0x460f28], 0x2e52e9f9
dec ebp
jne 0x40ae90
mov ax, word [0x480262]
movzx ecx, word [0x47c6ec]
cwde
sub ecx, eax
sub ecx, 0x6d3b15cd
mov word [0x47c6ec], cx
dec word [0x480262]
pop ebp
test edi, edi
jle 0x40af65
mov eax, dword [0x45fa1c]
not eax
cmp eax, 0x20028020
jge 0x40af40
dec dword [0x466f8c]
mov eax, dword [0x466f8c]
cmp eax, 0xb7f8b8d2
jge 0x40af36
xor dword [0x46c3f8], 0xdf7f2f6f
jmp 0x40af40
xor dword [0x463c74], 0x948ac399
mov eax, dword [esp + 0x18]
push edi
add eax, 0x28
add eax, ebx
push esi
push eax
call fcn.0042cc50
dec dword [0x474370]
add esp, 0xc
mov eax, dword [0x474370]
and dword [0x466358], eax
mov eax, dword [0x46bcfc]
add eax, dword [0x4642a8]
pop esi
mov dword [0x46bcfc], eax
pop ebx
pop edi
ret