Function at 0x41a7b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
cmp esi, 0x24
ja 0x41a929
cmp esi, 1
je 0x41a929
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
mov byte [ecx + eax - 1], 0
test ebx, ebx
je 0x41a85c
add ecx, eax
dec ecx
cmp esi, 0xa
je 0x41a867
cmp esi, 0x10
jne 0x41a840
cmp ebx, 0x100
jb 0x41a8cf
mov eax, ebx
nop
nop
movzx edx, bl
movzx edx, word [edx + edx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
mov word [ecx - 2], dx
add ecx, 0xfffffffe
shr eax, 8
cmp ebx, 0xffff
mov ebx, eax
ja 0x41a800
cmp eax, 0xf
ja 0x41a8da
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
jmp 0x41a8c9
mov eax, ebx
xor edx, edx
div esi
movzx edx, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], dl
dec ecx
cmp ebx, esi
mov ebx, eax
jae 0x41a840
jmp 0x41a929
add ecx, eax
mov byte [ecx - 2], 0x30
jmp 0x41a926
cmp ebx, 0x64
jb 0x41a8fd
mov esi, 0x51eb851f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
mul esi
shr edx, 5
imul edi, edx, 0x64
mov eax, ebx
sub eax, edi
mov edi, eax
and edi, 2
mov ebp, eax
or eax, 2
imul eax, edi
xor edi, 2
and ebp, 0x7d
imul ebp, edi
movzx eax, word [ebp + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
cmp ebx, 0x270f
mov ebx, edx
ja 0x41a880
cmp edx, 9
ja 0x41a904
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], al
dec ecx
jmp 0x41a929
mov eax, ebx
cmp eax, 0xf
jbe 0x41a828
mov edx, eax
and edx, 0xfd
mov esi, eax
and esi, 2
or eax, 2
imul eax, esi
xor esi, 2
imul esi, edx
movzx eax, word [esi + eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
jmp 0x41a922
mov edx, ebx
cmp edx, 9
jbe 0x41a8c2
mov eax, edx
and eax, 0x7d
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
xor esi, 2
imul esi, eax
movzx eax, word [esi + edx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
mov eax, ecx
pop esi
pop edi
pop ebx
pop ebp
ret