Function at 0x45ff90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
cmp dword [ebp + 0xc], 9
mov eax, 0x2aaaaaab
mov edx, dword [0x4b4f90]
cmovbe edx, dword [ebp + 0xc]
push ebx
push esi
mov dword [0x4b4f90], edx
push edi
mov edi, ecx
mov ecx, dword [edi + 0x14]
mov dword [ebp - 4], edi
mov edx, dword [edi + 0xa8]
lea esi, [edi + 4]
add edx, 5
imul edx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
dec eax
add eax, dword [edi]
cdq
idiv dword [edi]
mov edx, eax
mov dword [ebp - 0x10], edx
cmp ecx, 0xb
jb 0x45fff9
mov dword [esi + 0x10], 0xb
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x45fff3
mov eax, dword [esi]
mov byte [eax + 0xb], 0
jmp 0x46000d
mov eax, 0xb
sub eax, ecx
mov ecx, esi
push 0
push eax
call fcn.004576b0
mov edx, dword [ebp - 0x10]
cmp dword [esi + 0x14], 0x10
mov ecx, esi
jb 0x460017
mov ecx, dword [esi]
lea eax, [edx + 0x30]
mov byte [ecx + 7], al
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x460027
mov eax, dword [esi]
mov byte [eax + 9], 0x30
cmp edx, 1
jle 0x460056
mov al, byte [0x4b4f90]
mov ecx, esi
add al, 0x30
movzx eax, al
push eax
call fcn.00432030
mov eax, dword [0x4b4f90]
mov ecx, 0xa
inc eax
cdq
idiv ecx
mov dword [0x4b4f90], edx
push 0x2c
mov ecx, esi
call fcn.00432030
mov al, byte [edi + 0xac]
cmp al, 0x3f
je 0x460071
push eax
mov ecx, esi
call fcn.00432030
push 0x2c
mov ecx, esi
call fcn.00432030
mov eax, dword [edi + 0x14]
lea ebx, [edi + 0xb4]
mov ecx, dword [ebx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 4]
mov dword [ebp - 0x1c], ebx
cmp ecx, eax
je 0x4600a2
push ebx
push eax
push ecx
call fcn.00422810
mov eax, dword [ebx]
add esp, 0xc
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0xc], ecx
test eax, eax
jle 0x460266
dec eax
mov dword [ebp - 0x18], eax
nop dword [eax]
mov edx, dword [esi + 0x10]
mov ebx, dword [ebp - 0x14]
cmp ebx, edx
ja 0x4600dd
mov dword [esi + 0x10], ebx
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x4600d7
mov eax, dword [esi]
mov byte [eax + ebx], 0
jmp 0x4600ee
mov eax, ebx
mov ecx, esi
push 0
sub eax, edx
push eax
call fcn.004576b0
mov ecx, dword [ebp + 0xc]
cmp dword [esi + 0x14], 0x10
mov eax, esi
jb 0x4600f8
mov eax, dword [esi]
inc byte [eax + 9]
xor ebx, ebx
cmp ecx, dword [ebp - 8]
jge 0x46018b
lea edi, [ecx + ecx*2]
add edi, edi
nop dword [eax + eax]
mov edx, dword [ebp - 4]
cmp ebx, dword [edx]
jge 0x460188
mov ecx, dword [ebp - 4]
mov eax, edi
sar eax, 3
movzx edx, byte [eax + edx + 0x1c]
movzx eax, byte [eax + ecx + 0x1d]
mov ecx, 0xa
shl edx, 8
or edx, eax
imul eax, dword [ebp + 0xc], 0xfffe
and al, 7
sub cl, al
mov eax, dword [ebp - 4]
shr edx, cl
mov ecx, edi
and edx, 0x3f
sub ecx, dword [eax + 0xa8]
add ecx, 6
test ecx, ecx
jle 0x46015e
mov eax, 0xff
shl eax, cl
and edx, eax
cmp edx, 0x28
mov ecx, esi
setae al
lea eax, [eax*8 + 0x30]
add al, dl
movzx eax, al
push eax
call fcn.00432030
mov ecx, dword [ebp + 0xc]
inc ebx
inc ecx
add edi, 6
mov dword [ebp + 0xc], ecx
cmp ecx, dword [ebp - 8]
jl 0x460110
mov edi, dword [ebp - 4]
push 0x2c
mov ecx, esi
call fcn.00432030
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0xc], eax
jne 0x4601ac
mov eax, dword [ebp - 8]
lea eax, [eax + eax*2]
add eax, eax
sub eax, dword [edi + 0xa8]
jmp 0x4601ae
xor eax, eax
add al, 0x30
mov ecx, esi
movzx eax, al
push eax
call fcn.00432030
mov edx, dword [esi + 0x10]
xor ebx, ebx
lea ecx, [ebx + 1]
cmp edx, ecx
jbe 0x4601eb
cmp dword [esi + 0x14], 0x10
jb 0x4601e0
mov edi, dword [esi]
nop
movsx eax, byte [edi + ecx]
inc ecx
xor ebx, eax
cmp ecx, edx
jb 0x4601d0
jmp 0x4601eb
movsx eax, byte [ecx + esi]
inc ecx
xor ebx, eax
cmp ecx, edx
jb 0x4601e0
push 0x2a
mov ecx, esi
call fcn.00432030
mov ecx, ebx
mov edx, 0x37
sar ecx, 4
mov eax, 0x30
cmp ecx, 0xa
cmovge eax, edx
add al, cl
mov ecx, esi
movzx eax, al
push eax
call fcn.00432030
and ebx, 0xf
mov ecx, esi
cmp ebx, 0xa
sbb al, al
and al, 0xf9
add al, 0x37
add al, bl
movzx eax, al
push eax
call fcn.00432030
mov ebx, dword [ebp - 0x1c]
push esi
mov eax, dword [ebx + 4]
cmp eax, dword [ebx + 8]
je 0x460248
mov ecx, eax
call fcn.00414290
add dword [ebx + 4], 0x18
jmp 0x460250
push eax
mov ecx, ebx
call fcn.0045f6a0
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0xc]
inc eax
mov edi, dword [ebp - 4]
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x10]
jl 0x4600c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8