Function at 0x41ba80
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 0x41bc06
cmp edi, 1
je 0x41bc06
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov byte [ecx + eax - 1], 0
test esi, esi
je 0x41bb4c
add ecx, eax
dec ecx
cmp edi, 0xa
je 0x41bb57
cmp edi, 0x10
jne 0x41bb30
cmp esi, 0x100
jb 0x41bbc5
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 0x41bae0
cmp eax, 0xf
ja 0x41bbd0
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
jmp 0x41bbbf
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 0x41bb30
jmp 0x41bc06
add ecx, eax
mov byte [ecx - 2], 0x30
jmp 0x41bc03
cmp esi, 0x64
jb 0x41bbda
mov edi, 0x51eb851f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
mul edi
shr edx, 5
imul ebx, edx, 0x64
mov eax, esi
sub eax, ebx
mov ebx, eax
and ebx, 0x7d
mov ebp, eax
and ebp, 2
or eax, 2
imul eax, ebp
xor ebp, 2
imul ebp, ebx
mov ebx, ebp
and ebx, eax
xor eax, ebp
movzx eax, word [eax + ebx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
cmp esi, 0x270f
mov esi, edx
ja 0x41bb70
cmp edx, 9
ja 0x41bbe1
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], al
dec ecx
jmp 0x41bc06
mov eax, esi
cmp eax, 0xf
jbe 0x41bb20
movzx eax, word [eax + eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
jmp 0x41bbff
mov edx, esi
cmp edx, 9
jbe 0x41bbb8
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