Function at 0x459850
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 [0x4b49fc]
cmovbe edx, dword [ebp + 0xc]
push ebx
push esi
mov dword [0x4b49fc], 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 0x4598b9
mov dword [esi + 0x10], 0xb
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x4598b3
mov eax, dword [esi]
mov byte [eax + 0xb], 0
jmp 0x4598cd
mov eax, 0xb
sub eax, ecx
mov ecx, esi
push 0
push eax
call fcn.00450cc0
mov edx, dword [ebp - 0x10]
cmp dword [esi + 0x14], 0x10
mov ecx, esi
jb 0x4598d7
mov ecx, dword [esi]
lea eax, [edx + 0x30]
mov byte [ecx + 7], al
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x4598e7
mov eax, dword [esi]
mov byte [eax + 9], 0x30
cmp edx, 1
jle 0x459916
mov al, byte [0x4b49fc]
mov ecx, esi
add al, 0x30
movzx eax, al
push eax
call fcn.0041ec70
mov eax, dword [0x4b49fc]
mov ecx, 0xa
inc eax
cdq
idiv ecx
mov dword [0x4b49fc], edx
push 0x2c
mov ecx, esi
call fcn.0041ec70
mov al, byte [edi + 0xac]
cmp al, 0x3f
je 0x459931
push eax
mov ecx, esi
call fcn.0041ec70
push 0x2c
mov ecx, esi
call fcn.0041ec70
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 0x459962
push ebx
push eax
push ecx
call fcn.00423d90
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 0x459b26
dec eax
mov dword [ebp - 0x18], eax
nop dword [eax]
mov edx, dword [esi + 0x10]
mov ebx, dword [ebp - 0x14]
cmp ebx, edx
ja 0x45999d
mov dword [esi + 0x10], ebx
mov eax, esi
cmp dword [esi + 0x14], 0x10
jb 0x459997
mov eax, dword [esi]
mov byte [eax + ebx], 0
jmp 0x4599ae
mov eax, ebx
mov ecx, esi
push 0
sub eax, edx
push eax
call fcn.00450cc0
mov ecx, dword [ebp + 0xc]
cmp dword [esi + 0x14], 0x10
mov eax, esi
jb 0x4599b8
mov eax, dword [esi]
inc byte [eax + 9]
xor ebx, ebx
cmp ecx, dword [ebp - 8]
jge 0x459a4b
lea edi, [ecx + ecx*2]
add edi, edi
nop dword [eax + eax]
mov edx, dword [ebp - 4]
cmp ebx, dword [edx]
jge 0x459a48
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 0x459a1e
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.0041ec70
mov ecx, dword [ebp + 0xc]
inc ebx
inc ecx
add edi, 6
mov dword [ebp + 0xc], ecx
cmp ecx, dword [ebp - 8]
jl 0x4599d0
mov edi, dword [ebp - 4]
push 0x2c
mov ecx, esi
call fcn.0041ec70
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0xc], eax
jne 0x459a6c
mov eax, dword [ebp - 8]
lea eax, [eax + eax*2]
add eax, eax
sub eax, dword [edi + 0xa8]
jmp 0x459a6e
xor eax, eax
add al, 0x30
mov ecx, esi
movzx eax, al
push eax
call fcn.0041ec70
mov edx, dword [esi + 0x10]
xor ebx, ebx
lea ecx, [ebx + 1]
cmp edx, ecx
jbe 0x459aab
cmp dword [esi + 0x14], 0x10
jb 0x459aa0
mov edi, dword [esi]
nop
movsx eax, byte [edi + ecx]
inc ecx
xor ebx, eax
cmp ecx, edx
jb 0x459a90
jmp 0x459aab
movsx eax, byte [ecx + esi]
inc ecx
xor ebx, eax
cmp ecx, edx
jb 0x459aa0
push 0x2a
mov ecx, esi
call fcn.0041ec70
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.0041ec70
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.0041ec70
mov ebx, dword [ebp - 0x1c]
push esi
mov eax, dword [ebx + 4]
cmp eax, dword [ebx + 8]
je 0x459b08
mov ecx, eax
call fcn.00414470
add dword [ebx + 4], 0x18
jmp 0x459b10
push eax
mov ecx, ebx
call fcn.00458c90
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 0x459980
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8