Function at 0x41de70
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 0x41dffc
cmp edi, 1
je 0x41dffc
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov byte [ecx + eax - 1], 0
test esi, esi
je 0x41df3c
add ecx, eax
dec ecx
cmp edi, 0xa
je 0x41df47
cmp edi, 0x10
jne 0x41df20
cmp esi, 0x100
jb 0x41dfaf
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 0x41ded0
cmp eax, 0xf
ja 0x41dfba
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
jmp 0x41dfa9
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 0x41df20
jmp 0x41dffc
add ecx, eax
mov byte [ecx - 2], 0x30
jmp 0x41dff9
cmp esi, 0x64
jb 0x41dfe6
mov edi, 0x51eb851f
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
movzx eax, word [ebp + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
cmp esi, 0x270f
mov esi, edx
ja 0x41df60
cmp edx, 9
ja 0x41dfed
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], al
dec ecx
jmp 0x41dffc
mov eax, esi
cmp eax, 0xf
jbe 0x41df10
lea edx, [eax + eax]
not edx
add edx, eax
and edx, 2
mov esi, eax
and esi, 0xfd
imul esi, edx
mov edx, eax
xor edx, 0xfffffffd
or eax, 2
and edx, eax
imul edx, eax
movzx eax, word [esi + edx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
jmp 0x41dff5
mov edx, esi
cmp edx, 9
jbe 0x41dfa2
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