Function at 0x401e60
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov al, byte [esp + 0x48]
mov edx, dword [esp + 0x44]
mov byte [esp + 0x2b], al
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ecx
mov edx, ecx
mov esi, dword [0x493d54]
mov edi, esi
inc edi
mov dword [0x493d54], edi
imul esi, esi, 0xfb382ae1
or esi, 0x6733323b
mov edi, dword [0x493a30]
and edi, esi
mov dword [0x493a30], edi
mov esi, dword [0x494f88]
shl esi, 8
and esi, 0xa40e200
or esi, 0xb5ab0df7
mov edi, dword [0x495cd8]
and edi, esi
mov dword [0x495cd8], edi
mov esi, dword [0x49765c]
shr esi, 9
imul esi, esi, 0x4b378ebb
add esi, 0xaa472456
mov bx, word [0x490ee0]
mov di, bx
imul edi, esi
mov bx, di
mov word [0x490ee0], bx
mov esi, dword [esp + 0x24]
mov dword [ecx + 0x2020], esi
mov bx, word [0x48fc24]
mov cx, bx
and ecx, 0x9f72
mov bx, cx
mov word [0x48fc24], bx
mov dword [esp + 0x10], edx
mov eax, dword [0x491694]
add eax, 0xe821268c
mov dword [0x491694], eax
call fcn.004023f0
mov dword [esp + 0x18], eax
mov eax, dword [0x491178]
imul eax, eax, 0x1ad72944
add eax, 0xd6e553e7
mov cx, word [0x490c2a]
mov dx, cx
sub edx, eax
mov cx, dx
mov word [0x490c2a], cx
cmp dword [esp + 0x18], 0
setne al
xor al, 0xff
test al, 1
jne 0x401f1d
mov eax, dword [0x491354]
add eax, 0xa43da1c2
mov dword [0x491354], eax
call fcn.004023f0
mov dword [esp + 0x1c], eax
mov cx, word [0x490bf4]
movsx eax, cx
mov edx, dword [0x493b2c]
xor eax, edx
not eax
mov dword [0x493b2c], eax
mov bl, byte [esp + 0x2b]
mov byte [esp + 0x1c], bl
mov eax, dword [0x496ce8]
or eax, 0x3dc5a7be
mov dword [0x496ce8], eax
mov eax, dword [esp + 0x18]
mov edx, esp
mov dword [edx], eax
call fcn.00430ca0
mov edx, dword [esp + 0x1c]
xor edx, eax
mov dword [esp + 0x1c], edx
mov eax, dword [0x494ccc]
and eax, 0x90082c01
mov dword [0x494ccc], eax
mov eax, dword [0x48d9c8]
mov edx, dword [esp + 0x10]
mov esi, dword [edx + 0x2020]
mov edi, esp
lea ebp, [esp + 0x18]
mov dword [edi + 4], ebp
mov dword [edi], esi
mov dword [edi + 0xc], 0
mov dword [edi + 8], 8
call eax
sub esp, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [0x49291c]
imul eax, eax, 0x559394ce
mov dword [0x492268], eax
cmp dword [esp + 0x14], 8
je 0x40208f
mov eax, 0x5a023851
mov cx, word [0x4909cc]
mov dx, cx
dec edx
mov si, dx
mov word [0x4909cc], si
movsx edx, cx
sub edx, 0x62a9dff0
xor edx, 0xc5a850cc
cmp eax, edx
jge 0x402067
mov eax, dword [0x496200]
add eax, 0x2a4cf8a1
mov dword [0x496200], eax
mov ecx, dword [esp + 0x10]
call fcn.004018d0
mov ecx, dword [0x4967e4]
add ecx, 0x56aa37f7
mov dword [0x4967e4], ecx
mov dword [esp + 0x2c], 0xffffffff
jmp 0x4021ac
mov ax, word [0x48ee54]
movsx ecx, ax
mov edx, dword [0x497478]
mov esi, edx
inc esi
mov dword [0x497478], esi
lea ecx, [ecx + edx + 0x307b0867]
mov edx, dword [0x497744]
sub edx, ecx
mov dword [0x497744], edx
mov bl, byte [esp + 0x2b]
movzx ecx, bl
mov edx, esp
mov dword [edx], ecx
mov ecx, dword [esp + 0x10]
call fcn.00401c90
sub esp, 4
test al, 1
jne 0x402112
mov eax, dword [0x491418]
sar eax, 4
add eax, 0x4f8ad65d
mov dword [0x495c10], eax
mov ecx, dword [esp + 0x10]
call fcn.004018d0
mov eax, dword [0x4921a8]
and eax, 0x98b6d9ce
mov dword [0x4921a8], eax
mov dword [esp + 0x2c], 0xfffffffe
jmp 0x4021ac
mov eax, dword [0x4961b0]
mov ecx, eax
dec ecx
mov dword [0x4961b0], ecx
or eax, 0xd6c5e20e
mov dword [0x492a24], eax
mov eax, dword [esp + 0x10]
mov dword [eax], 0
mov ecx, dword [0x496db0]
imul ecx, ecx, 0xffad79bf
mov dword [0x496db0], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 4], ecx
mov ecx, dword [0x494df0]
and ecx, 0x650b4409
mov dword [0x494df0], ecx
mov dword [eax + 0x100c], 0
mov ecx, dword [0x497ce8]
or ecx, 0xb11ee4d6
mov dword [0x497ce8], ecx
mov ecx, dword [eax + 0x201c]
mov edx, dword [esp + 0x18]
mov esi, esp
mov dword [esi], edx
call ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x1010], eax
mov eax, dword [0x491d8c]
and eax, 0xf93f1f86
mov dword [0x491d8c], eax
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x2c]
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret 8