Function at 0x41c4c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
cmp edi, 0x24
ja 0x41c64d
cmp edi, 1
je 0x41c64d
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov byte [ecx + eax - 1], 0
test esi, esi
je 0x41c58c
add ecx, eax
dec ecx
cmp edi, 0xa
je 0x41c597
cmp edi, 0x10
jne 0x41c570
cmp esi, 0x100
jb 0x41c602
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, esi
and edx, 0xfd
mov edi, esi
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, edx
or edx, 2
imul edx, edi
movzx edx, word [edx + ebx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
mov word [ecx - 2], dx
add ecx, 0xfffffffe
shr eax, 8
cmp esi, 0xffff
mov esi, eax
ja 0x41c520
cmp eax, 0xf
ja 0x41c60d
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
jmp 0x41c5fc
mov eax, esi
xor edx, edx
div edi
movzx edx, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], dl
dec ecx
cmp esi, edi
mov esi, eax
jae 0x41c570
jmp 0x41c64d
add ecx, eax
mov byte [ecx - 2], 0x30
jmp 0x41c64a
cmp esi, 0x64
jb 0x41c637
mov eax, esi
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, esi
sub ebx, eax
mov ebp, ebx
not ebp
mov eax, ebp
or ebp, 2
add ebp, ebx
inc ebp
and ebx, 0x7d
and eax, 2
imul eax, ebx
mov edi, ebx
xor edi, 0x7d
xor ebx, 0xfffffffd
or ebx, edi
not ebx
imul ebx, ebp
movzx eax, word [ebx + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
cmp esi, 0x270f
mov esi, edx
ja 0x41c5a0
cmp edx, 9
ja 0x41c63e
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], al
dec ecx
jmp 0x41c64d
mov eax, esi
cmp eax, 0xf
jbe 0x41c560
lea edx, [eax + eax]
not edx
add edx, eax
and edx, 2
mov esi, eax
and esi, 0xfd
imul esi, edx
mov edx, eax
and edx, 2
or eax, 2
imul eax, edx
movzx eax, word [esi + eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
jmp 0x41c646
mov edx, esi
cmp edx, 9
jbe 0x41c5f5
movzx eax, word [edx + edx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
mov eax, ecx
pop esi
pop edi
pop ebx
pop ebp
ret