Function at 0x41c040
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
test edx, edx
je 0x41c4ca
test eax, eax
je 0x41c4ca
cmp esi, 0x10
je 0x41c081
cmp esi, 0x18
je 0x41c066
cmp esi, 0x20
jne 0x41c4ca
cmp esi, 0x10
je 0x41c081
cmp esi, 0x18
je 0x41c07a
cmp esi, 0x20
jne 0x41c08d
lea ecx, [esi - 0x12]
jmp 0x41c086
mov ecx, 0xc
jmp 0x41c086
mov ecx, 0xa
mov word [eax + 0x100], cx
movzx ecx, byte [edx]
push ebx
push edi
movzx edi, byte [edx + 1]
shl ecx, 8
xor ecx, edi
movzx edi, byte [edx + 2]
shl ecx, 8
xor ecx, edi
movzx edi, byte [edx + 3]
shl ecx, 8
xor ecx, edi
mov dword [eax], ecx
movzx edi, byte [edx + 4]
movzx ebx, byte [edx + 5]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 6]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 7]
shl edi, 8
xor edi, ebx
mov dword [eax + 4], edi
movzx edi, byte [edx + 8]
movzx ebx, byte [edx + 9]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0xa]
lea ecx, [eax + 4]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0xb]
shl edi, 8
xor edi, ebx
mov dword [eax + 8], edi
movzx edi, byte [edx + 0xc]
movzx ebx, byte [edx + 0xd]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0xe]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0xf]
shl edi, 8
xor edi, ebx
mov dword [eax + 0xc], edi
cmp esi, 0x10
jne 0x41c1f7
mov esi, edi
shr edi, 8
mov edx, esi
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x529350]
and edi, 0xff
xor edx, dword [edi*4 + 0x528f50]
mov edi, esi
shr edi, 0x18
xor edx, dword [edi*4 + 0x528750]
mov edi, esi
and edi, 0xff
xor edx, dword [edi*4 + 0x528b50]
mov edi, dword [ecx]
xor edx, dword [eax]
xor edx, 0x1000000
xor edi, edx
mov dword [eax + 0x10], edx
mov edx, dword [eax + 8]
xor edx, edi
mov dword [eax + 0x18], edx
xor edx, esi
mov dword [eax + 0x14], edi
mov dword [eax + 0x1c], edx
mov esi, 4
mov edx, dword [ecx + 0x18]
add ecx, 0x10
mov eax, edx
shr eax, 0x10
and eax, 0xff
mov eax, dword [eax*4 + 0x529350]
mov edi, edx
shr edi, 8
and edi, 0xff
xor eax, dword [edi*4 + 0x528f50]
mov edi, edx
and edx, 0xff
shr edi, 0x18
xor eax, dword [edi*4 + 0x528750]
add esi, 4
xor eax, dword [edx*4 + 0x528b50]
xor eax, dword [esi + 0x52a74c]
xor eax, dword [ecx - 4]
mov dword [ecx + 0xc], eax
mov edx, dword [ecx]
xor edx, eax
mov dword [ecx + 0x10], edx
mov eax, dword [ecx + 4]
xor eax, edx
mov dword [ecx + 0x14], eax
mov edx, dword [ecx + 8]
xor edx, eax
mov dword [ecx + 0x18], edx
cmp esi, 0x28
jne 0x41c184
pop edi
pop ebx
xor eax, eax
pop esi
ret
movzx edi, byte [edx + 0x10]
movzx ebx, byte [edx + 0x11]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x12]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x13]
shl edi, 8
xor edi, ebx
mov dword [eax + 0x10], edi
movzx edi, byte [edx + 0x14]
movzx ebx, byte [edx + 0x15]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x16]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x17]
shl edi, 8
xor edi, ebx
mov dword [eax + 0x14], edi
cmp esi, 0x18
jne 0x41c335
mov ecx, dword [ecx]
mov esi, edi
mov edx, esi
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x529350]
shr edi, 8
and edi, 0xff
xor edx, dword [edi*4 + 0x528f50]
mov edi, esi
shr edi, 0x18
xor edx, dword [edi*4 + 0x528750]
and esi, 0xff
xor edx, dword [esi*4 + 0x528b50]
mov esi, 4
xor edx, dword [eax]
xor edx, 0x1000000
xor ecx, edx
mov dword [eax + 0x18], edx
mov edx, dword [eax + 8]
xor edx, ecx
mov dword [eax + 0x1c], ecx
mov ecx, dword [eax + 0xc]
xor ecx, edx
mov dword [eax + 0x20], edx
mov dword [eax + 0x24], ecx
add eax, 0x28
jmp 0x41c2b0
mov ecx, dword [eax - 0x18]
xor ecx, dword [eax - 4]
mov edx, dword [eax - 0x14]
xor edx, ecx
mov dword [eax], ecx
mov dword [eax + 4], edx
mov edx, dword [eax + 4]
add eax, 0x18
mov ecx, edx
shr ecx, 0x10
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x529350]
mov edi, edx
shr edi, 8
and edi, 0xff
xor ecx, dword [edi*4 + 0x528f50]
mov edi, edx
and edx, 0xff
shr edi, 0x18
xor ecx, dword [edi*4 + 0x528750]
add esi, 4
xor ecx, dword [edx*4 + 0x528b50]
xor ecx, dword [esi + 0x52a74c]
xor ecx, dword [eax - 0x28]
mov dword [eax - 0x10], ecx
mov edx, dword [eax - 0x24]
xor edx, ecx
mov dword [eax - 0xc], edx
mov ecx, dword [eax - 0x20]
xor ecx, edx
mov dword [eax - 8], ecx
mov edx, dword [eax - 0x1c]
xor edx, ecx
mov dword [eax - 4], edx
cmp esi, 0x20
jne 0x41c2b0
pop edi
pop ebx
xor eax, eax
pop esi
ret
movzx edi, byte [edx + 0x18]
movzx ebx, byte [edx + 0x19]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x1a]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x1b]
shl edi, 8
xor edi, ebx
mov dword [eax + 0x18], edi
movzx edi, byte [edx + 0x1c]
movzx ebx, byte [edx + 0x1d]
shl edi, 8
xor edi, ebx
movzx ebx, byte [edx + 0x1e]
movzx edx, byte [edx + 0x1f]
shl edi, 8
xor edi, ebx
shl edi, 8
xor edi, edx
mov dword [eax + 0x1c], edi
cmp esi, 0x20
jne 0x41c1f1
mov ecx, dword [ecx]
mov esi, edi
mov edx, esi
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x529350]
shr edi, 8
and edi, 0xff
xor edx, dword [edi*4 + 0x528f50]
mov edi, esi
shr edi, 0x18
xor edx, dword [edi*4 + 0x528750]
and esi, 0xff
xor edx, dword [esi*4 + 0x528b50]
mov esi, 4
xor edx, dword [eax]
xor edx, 0x1000000
xor ecx, edx
mov dword [eax + 0x20], edx
mov edx, dword [eax + 8]
xor edx, ecx
mov dword [eax + 0x24], ecx
mov ecx, dword [eax + 0xc]
xor ecx, edx
mov dword [eax + 0x28], edx
mov dword [eax + 0x2c], ecx
add eax, 0x30
lea esp, [esp]
mov edx, dword [eax - 4]
ror edx, 8
mov ecx, edx
shr ecx, 0x10
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x529350]
mov edi, edx
shr edi, 8
and edi, 0xff
xor ecx, dword [edi*4 + 0x528f50]
mov edi, edx
and edx, 0xff
shr edi, 0x18
xor ecx, dword [edi*4 + 0x528750]
add eax, 0x20
xor ecx, dword [edx*4 + 0x528b50]
mov edx, dword [eax - 0x3c]
xor ecx, dword [eax - 0x40]
add esi, 4
xor edx, ecx
mov dword [eax - 0x20], ecx
mov ecx, dword [eax - 0x38]
xor ecx, edx
mov dword [eax - 0x1c], edx
mov edx, dword [eax - 0x34]
xor edx, ecx
mov dword [eax - 0x18], ecx
mov dword [eax - 0x14], edx
mov edx, dword [eax - 0x14]
mov ecx, edx
shr ecx, 0x10
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x529350]
mov edi, edx
shr edi, 8
and edi, 0xff
xor ecx, dword [edi*4 + 0x528f50]
mov edi, edx
and edx, 0xff
shr edi, 0x18
xor ecx, dword [edi*4 + 0x528750]
xor ecx, dword [edx*4 + 0x528b50]
xor ecx, dword [esi + 0x52a74c]
xor ecx, dword [eax - 0x30]
mov dword [eax - 0x10], ecx
mov edx, dword [eax - 0x2c]
xor edx, ecx
mov dword [eax - 0xc], edx
mov ecx, dword [eax - 0x28]
xor ecx, edx
mov dword [eax - 8], ecx
mov edx, dword [eax - 0x24]
xor edx, ecx
mov dword [eax - 4], edx
cmp esi, 0x1c
jne 0x41c3f0
pop edi
pop ebx
xor eax, eax
pop esi
ret
or eax, 0xffffffff
pop esi
ret