Function at 0x4152d0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x477e58]
mov ecx, 0x319379e2
mov word [0x45c24c], ax
dec dword [0x477e58]
or dword [0x479b24], 0x284d7248
inc dword [0x46a724]
mov eax, dword [0x46a724]
sub ecx, eax
or ecx, dword [0x4759d0]
push ebx
mov ebx, dword [esp + 8]
push esi
mov esi, dword [esp + 0x14]
mov dword [0x4759d0], ecx
cmp ebx, esi
jne 0x4153e7
inc dword [0x47c678]
mov eax, dword [0x47c678]
xor eax, 0xb2580b6c
cmp eax, 0xbeec1f00
jne 0x415344
movzx eax, word [0x45b234]
add eax, 0x3f825e7d
mov word [0x45b234], ax
movsx edx, word [0x461a1e]
mov ecx, 0xecaabe96
mov eax, dword [0x46bce8]
and edx, 0x4209ae8d
dec word [0x461a1e]
sub ecx, eax
dec dword [0x46bce8]
xor edx, 0x2229993d
mov esi, dword [esp + 0x10]
and ecx, 0x60bc283a
cmp ecx, edx
jge 0x4153a1
mov ecx, dword [0x47e6f0]
movzx eax, word [0x4644e4]
add ecx, 0x78873e6e
xor ecx, 0x5545765a
and eax, ecx
mov word [0x4644e4], ax
jmp 0x4153c7
dec dword [0x46dc28]
mov ecx, 0x686e717
mov edx, dword [0x46dc28]
mov eax, dword [0x47f044]
sub ecx, eax
mov eax, dword [0x472fdc]
xor eax, edx
xor eax, ecx
mov dword [0x472fdc], eax
or dword [0x477394], 0x3ca01daa
mov ecx, ebx
movsx eax, word [0x45b9e0]
xor eax, 0xf5adc6a8
and dword [0x466554], eax
jmp 0x4153eb
mov ecx, dword [esp + 0x10]
mov ax, word [0x46527c]
cwde
sub dword [0x470b68], eax
cmp ebx, ecx
je 0x41540e
push ecx
push ebx
call fcn.00404c10
add esp, 8
test eax, eax
jne 0x41566a
movzx eax, word [0x462bd8]
imul eax, eax, 0xe46aac7a
push edi
mov word [0x462bd8], ax
mov edi, dword [esi + 4]
dec edi
js 0x41543b
mov eax, dword [esi + 8]
lea eax, [eax + edi*4]
mov edi, edi
cmp dword [eax], 0
jne 0x41543b
sub eax, 4
dec edi
jns 0x415430
dec dword [0x4670c4]
mov eax, dword [0x4670c4]
cmp eax, 0x3b0bfe92
je 0x415459
mov eax, dword [0x474234]
mov dword [0x46b1ec], eax
jmp 0x415463
mov dword [0x475874], 0x420781b3
push ebp
lea eax, [edi + 1]
push eax
push ebx
call fcn.00416100
mov ebp, eax
add esp, 8
mov dword [esp + 0x1c], ebp
test ebp, ebp
jne 0x415666
mov edx, dword [0x47a764]
mov ecx, dword [0x467510]
xor edx, 0xc0b98c8c
imul ecx, edx
mov dword [0x467510], ecx
mov eax, dword [esi + 8]
xor esi, esi
dec dword [0x4734e8]
mov dword [esp + 0x18], eax
mov eax, dword [0x4734e8]
and eax, 0xd1811723
add eax, dword [0x4716f4]
mov dword [0x4716f4], eax
movsx eax, word [0x464ec2]
mov edx, dword [ebx + 8]
sar eax, 1
add eax, 0x4f893eba
mov dword [0x46a754], eax
mov eax, dword [0x46efd8]
xor eax, 0x7c0595f6
sar eax, 1
cmp eax, dword [0x46637c]
je 0x4154f7
imul eax, dword [0x47c2b4], 0x924983d4
mov dword [0x47c2b4], eax
test edi, edi
js 0x415654
mov ebp, dword [esp + 0x18]
lea ebx, [edi + 1]
sub ebp, edx
mov edi, ebx
lea ebx, [ebx]
movsx ecx, word [0x45ccd2]
movsx eax, word [0x464108]
not ecx
not eax
add ecx, 0x6604723f
add eax, ecx
mov dword [0x47ac40], eax
add dword [edx], esi
inc dword [0x46a550]
mov eax, dword [0x46a550]
imul ecx, eax, 0xb13b0952
mov eax, dword [0x47721c]
and ecx, eax
sub dword [0x47ea00], ecx
inc dword [0x47721c]
cmp dword [edx], esi
movzx eax, word [0x45cf86]
mov ecx, dword [0x46d11c]
sbb esi, esi
cwde
neg esi
xor ecx, eax
xor ecx, 0x5b300168
mov word [0x45cf86], cx
mov eax, dword [edx + ebp]
add dword [edx], eax
movzx eax, word [0x45b6d8]
sub eax, 0xb077b19
mov word [0x45b6d8], ax
mov eax, dword [edx]
cmp eax, dword [edx + ebp]
sbb eax, eax
add dword [0x4797e4], 0x4840466
neg eax
add edx, 4
add esi, eax
dec ebx
jne 0x415510
mov ebx, dword [esp + 0x14]
test esi, esi
mov ebp, dword [esp + 0x1c]
je 0x415654
or dword [0x46999c], 0xb9bc44b1
mov eax, 0xffff90f2
cmp edi, dword [ebx + 4]
jl 0x41561c
xor dword [0x478fd4], 0x18ec891f
lea eax, [edi + 1]
push eax
push ebx
call fcn.00416100
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x415666
imul eax, dword [0x47c0a8], 0xde37b7f8
mov dword [0x46f44c], eax
mov eax, dword [ebx + 8]
lea edx, [eax + edi*4]
mov eax, dword [0x46dfa0]
not eax
imul eax, eax, 0xde90fe68
mov word [0x458d2e], ax
mov eax, 0xffff90f2
xor dword [0x47bb44], 0xd182cb40
add dword [edx], esi
mov word [0x45d720], ax
cmp dword [edx], esi
mov eax, dword [0x46aa60]
sbb esi, esi
and eax, dword [0x469b10]
mov dword [0x46aa60], eax
inc edi
or dword [0x47364c], 0xbfdff5ec
neg esi
jmp 0x4155b8
movzx eax, word [0x45dc58]
add eax, 0x45a4b255
mov word [0x45dc58], ax
mov eax, ebp
pop ebp
pop edi
pop esi
pop ebx
ret