Function at 0x466791
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
mov eax, dword [esp + 0x24]
push ebx
push ebp
push esi
mov esi, 1
mov ebp, ecx
cmp eax, esi
push edi
mov dword [esp + 0x1c], ebp
jl 0x4669c0
test esi, esi
mov dword [esp + 0x14], 0
jle 0x4669b3
xor edi, edi
lea ebx, [ebp + 0x102e4]
mov eax, dword [esp + 0x14]
xor ecx, ecx
add eax, edi
cdq
idiv esi
shl edx, 4
lea eax, [edx + ebp + 0x10311]
mov dl, byte [ebx + ecx]
mov byte [eax + ecx], dl
inc ecx
cmp ecx, esi
jle 0x4667dc
inc edi
inc ebx
cmp edi, esi
jl 0x4667c7
push esi
mov ecx, ebp
call fcn.004669e1
test eax, eax
jne 0x46680b
mov eax, dword [esp + 0x14]
inc eax
cmp eax, esi
mov dword [esp + 0x14], eax
jl 0x4667bf
jmp 0x4669b3
mov eax, dword [esp + 0x28]
mov byte [esp + 0x18], 0
test eax, eax
mov dword [esp + 0x14], 0
jle 0x4668b2
xor bl, bl
xor ecx, ecx
mov byte [esp + 0x13], bl
xor edi, edi
mov al, byte [ecx + ebp + 0x104f1]
test al, al
je 0x466860
and eax, 0xff
xor edx, edx
mov ebx, 0xff
mov dl, byte [eax + 0x1001cdf4]
mov eax, edx
add eax, edi
cdq
idiv ebx
mov bl, byte [esp + 0x13]
xor bl, byte [edx + 0x1001ccf4]
mov byte [esp + 0x13], bl
mov edx, dword [esp + 0x14]
inc ecx
add edi, edx
cmp ecx, esi
jl 0x46682e
mov eax, ecx
mov ecx, 0xff
imul eax, edx
cdq
idiv ecx
mov dl, byte [edx + 0x1001ccf4]
xor dl, bl
jne 0x46689d
mov eax, dword [esp + 0x18]
and eax, ecx
mov cl, byte [esp + 0x14]
mov byte [eax + ebp + 0x10302], cl
mov al, byte [esp + 0x18]
inc al
mov byte [esp + 0x18], al
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x466824
mov edx, dword [esp + 0x18]
and edx, 0xff
cmp esi, edx
jne 0x4669b3
mov dword [esp + 0x14], 0
xor edi, edi
mov eax, dword [esp + 0x14]
xor ecx, ecx
add eax, edi
cdq
idiv esi
shl edx, 4
mov dword [esp + 0x20], edx
lea ebx, [edx + ebp + 0x10311]
jmp 0x4668ed
mov ebp, dword [esp + 0x1c]
xor eax, eax
mov al, byte [ecx + ebp + 0x10302]
mov ebp, 0xff
imul eax, edi
cdq
idiv ebp
inc ecx
inc ebx
cmp ecx, esi
mov dl, byte [edx + 0x1001ccf4]
mov byte [ebx - 1], dl
jl 0x4668e9
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
add eax, esi
mov cl, byte [edi + ebp + 0x102e4]
inc edi
cmp edi, esi
mov byte [eax + ebp + 0x10311], cl
jl 0x4668ce
push esi
mov ecx, ebp
call fcn.004669e1
test eax, eax
jne 0x466948
mov eax, dword [esp + 0x14]
inc eax
cmp eax, esi
mov dword [esp + 0x14], eax
jl 0x4668cc
jmp 0x4669b3
mov ebx, dword [esp + 0x30]
mov edi, 0xfffefcfe
lea eax, [ebp + 0x10302]
sub edi, ebp
mov ecx, dword [esp + 0x28]
xor edx, edx
mov dl, byte [eax]
sub ecx, edx
mov dl, byte [eax + 0x1ef]
xor byte [ecx + ebx - 1], dl
lea ecx, [ecx + ebx - 1]
inc eax
lea ecx, [edi + eax]
cmp ecx, esi
jl 0x466959
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push ebx
push edx
push eax
mov ecx, ebp
call fcn.004665b1
test eax, eax
jne 0x4669cc
lea eax, [ebp + 0x10302]
mov edx, dword [esp + 0x28]
xor ecx, ecx
mov cl, byte [eax]
sub edx, ecx
lea ecx, [edx + ebx - 1]
mov dl, byte [eax + 0x1ef]
xor byte [ecx], dl
inc eax
lea ecx, [eax + edi]
cmp ecx, esi
jl 0x466995
mov eax, dword [esp + 0x34]
inc esi
cmp esi, eax
jle 0x4667af
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x10
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x14
ret 0x10