Function at 0x41c880
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
inc word [0x47a9fc]
mov ax, word [0x47a9fc]
cwde
and eax, 0xc9dcdec2
or eax, dword [0x4638f8]
mov dword [0x4638f8], eax
dec dword [0x45859c]
mov eax, dword [0x45859c]
add eax, 0x1349e2e3
or eax, 0x7abc07ab
cmp eax, 0x156d501f
jge 0x41c8c8
and dword [0x464c60], 0xbd97c028
mov eax, dword [0x468820]
sar eax, 0xa
imul eax, eax, 0xff256e7c
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
and dword [0x45b9b4], eax
mov eax, esi
add dword [0x4672b4], 0xa074dda2
mov edi, dword [ebp + 8]
cdq
and edx, 0x1f
mov dword [ebp - 4], 0
push edi
lea ebx, [edx + eax]
mov eax, esi
and eax, 0x1f
sar ebx, 5
mov dword [ebp + 0xc], eax
imul eax, dword [0x461a40], 0x77378951
add eax, 0xd6f7fb63
xor dword [0x457b78], eax
inc dword [0x461a40]
call fcn.004195c0
imul ecx, dword [0x46644c], 0x7a135faf
add eax, esi
add esp, 4
mov dword [0x46644c], ecx
mov ecx, dword [edi + 4]
shl ecx, 5
cmp ecx, eax
jge 0x41c968
add eax, 0x1f
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
push eax
push edi
call fcn.00406060
add esp, 8
test eax, eax
jne 0x41cb2b
inc dword [0x4609f0]
mov ecx, dword [0x4609f0]
dec word [0x47187a]
movzx eax, word [0x47187a]
sub ecx, eax
movzx eax, word [0x470294]
xor ecx, eax
mov word [0x470294], cx
movzx eax, word [0x475ef4]
movsx ecx, word [0x47b5f8]
cwde
sub ecx, eax
movzx eax, word [0x478b86]
sub ecx, eax
add ecx, 0x4bd75b64
mov word [0x47b5f8], cx
dec word [0x478b86]
test ebx, ebx
jle 0x41ca30
add dword [0x45c15c], 0xd7e235c6
mov eax, dword [edi + 4]
dec eax
cmp eax, ebx
jl 0x41c9f2
mov esi, eax
sub esi, ebx
shl esi, 2
nop
mov edx, dword [edi + 8]
lea esi, [esi - 4]
mov ecx, dword [esi + edx + 4]
mov dword [edx + eax*4], ecx
dec eax
cmp eax, ebx
jge 0x41c9e0
dec word [0x470d0a]
mov cx, word [0x470d0a]
movsx ecx, cx
xor ecx, dword [0x45a2fc]
mov dword [0x45a2fc], ecx
test eax, eax
js 0x41ca20
mov ecx, dword [edi + 8]
mov dword [ecx + eax*4], 0
dec eax
jns 0x41ca13
mov eax, dword [0x458db8]
xor eax, 0x89a47cfb
sub dword [0x45949c], eax
imul eax, dword [0x4594dc], 0x96f6ba57
mov edx, dword [ebp + 0xc]
mov dword [0x4594dc], eax
test edx, edx
jle 0x41cb13
inc dword [0x45d6c8]
mov ecx, 0xc0223c0c
mov eax, dword [0x45d6c8]
sub ecx, eax
add ecx, dword [0x46ef30]
mov dword [0x46ef30], ecx
cmp ebx, dword [edi + 4]
jge 0x41caef
mov esi, 0x20
sub esi, edx
jmp 0x41ca80
add dword [0x45f044], 0xd90ce5d6
mov ecx, esi
mov eax, dword [edi + 8]
mov edx, dword [eax + ebx*4]
movzx eax, word [0x472c3c]
cwde
add dword [0x45b39c], eax
mov eax, dword [edi + 8]
shr edx, cl
mov ecx, dword [ebp + 0xc]
shl dword [eax + ebx*4], cl
mov eax, dword [0x468880]
or eax, dword [0x460250]
mov ecx, dword [ebp - 4]
or eax, 0x8aab9599
mov dword [0x468880], eax
mov eax, dword [edi + 8]
mov dword [ebp - 4], edx
or dword [eax + ebx*4], ecx
inc ebx
mov eax, dword [0x467d10]
mov word [0x4774be], ax
movzx eax, word [0x47a7e8]
xor eax, 0xf1094bc3
mov word [0x47a7e8], ax
cmp ebx, dword [edi + 4]
jl 0x41ca80
imul eax, dword [0x459c44], 0x7b0485b6
mov ecx, dword [0x46b3c8]
add eax, 0x1b94bf3d
imul ecx, eax
mov dword [0x46b3c8], ecx
dec dword [0x459c44]
movsx ecx, word [0x471ca0]
and ecx, 0xfdd0ec70
shl ecx, 4
or dword [0x45b564], ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret