Function at 0x41efc0
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 0x41f146
cmp esi, 1
je 0x41f146
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
mov byte [ecx + eax - 1], 0
test ebx, ebx
je 0x41f06c
add ecx, eax
dec ecx
cmp esi, 0xa
je 0x41f077
cmp esi, 0x10
jne 0x41f050
cmp ebx, 0x100
jb 0x41f0e6
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 0x41f010
cmp eax, 0xf
ja 0x41f0f1
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
jmp 0x41f0e0
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 0x41f050
jmp 0x41f146
add ecx, eax
mov byte [ecx - 2], 0x30
jmp 0x41f143
cmp ebx, 0x64
jb 0x41f114
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 ebp, eax
xor ebp, 2
mov edi, eax
or edi, 0x7d
and edi, ebp
mov ebp, eax
and ebp, 2
or eax, 2
imul eax, ebp
xor ebp, 2
imul edi, ebp
movzx eax, word [edi + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
cmp ebx, 0x270f
mov ebx, edx
ja 0x41f090
cmp edx, 9
ja 0x41f11b
movzx eax, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ecx - 1], al
dec ecx
jmp 0x41f146
mov eax, ebx
cmp eax, 0xf
jbe 0x41f038
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 0x41f13f
mov edx, ebx
cmp edx, 9
jbe 0x41f0d9
mov eax, edx
and eax, 2
mov esi, edx
and esi, 0x7d
mov edi, edx
xor edi, 2
add edi, edx
sub edi, esi
imul edi, eax
xor eax, 2
imul eax, esi
movzx eax, word [edi + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [ecx - 2], ax
add ecx, 0xfffffffe
mov eax, ecx
pop esi
pop edi
pop ebx
pop ebp
ret