Function at 0x464be0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x5be9a0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0x14]
xor ecx, ecx
push esi
push edi
cmp ebx, ecx
jne 0x464c23
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
mov dword [ecx], 1
mov dword [eax + 4], 1
lea esp, [ebp - 0x38]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004bc40c
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
cmp eax, ecx
jne 0x464c44
mov edx, dword [ebp + 8]
mov dword [edx + 4], ecx
lea esp, [ebp - 0x38]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004bc40c
mov esp, ebp
pop ebp
ret
jge 0x464c52
mov dword [ebp - 0x24], 1
test bl, 1
jne 0x464c55
mov dword [ebp - 0x24], ecx
mov edi, dword [ebp + 0xc]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
mov edx, dword [ebp + 8]
xor eax, eax
cmp dword [edx + 8], edi
mov dword [ebp + 0x10], esi
sete al
mov dword [ebp - 0x14], ecx
mov dword [ebp - 8], eax
mov eax, dword [edi]
test eax, eax
jne 0x464c99
lea esp, [esp]
mov eax, dword [edi + 4]
add edi, 4
add ecx, ebx
dec esi
mov dword [ebp - 0xc], eax
test eax, eax
je 0x464c80
mov dword [ebp + 0xc], edi
mov dword [ebp + 0x10], esi
mov dword [ebp - 0x14], ecx
bsf ecx, eax
shr eax, cl
mov dword [ebp - 0x20], ecx
mov ebx, ecx
imul ecx, dword [ebp + 0x14]
mov dword [ebp - 0x18], ecx
and dword [ebp - 0x18], 0x1f
shr ecx, 5
add dword [ebp - 0x14], ecx
mov edx, 1
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x10], edx
cmp esi, edx
je 0x464cff
cmp esi, 2
jne 0x464d6d
mov edi, dword [edi + 4]
test ebx, ebx
je 0x464ced
mov ecx, 0x20
sub ecx, ebx
mov edx, edi
shl edx, cl
or eax, edx
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0xc], eax
mov ecx, ebx
shr edi, cl
test edi, edi
jne 0x464d5c
mov dword [ebp + 0x10], 1
mov esi, dword [ebp + 0x10]
cmp eax, 0xffff
ja 0x464d24
test byte [ebp + 0x14], 1
je 0x464d12
imul edx, eax
mov dword [ebp - 0x10], edx
shr dword [ebp + 0x14], 1
je 0x464d24
imul eax, eax
mov dword [ebp - 0xc], eax
cmp eax, 0xffff
jbe 0x464d06
cmp dword [ebp - 0x18], 0
je 0x464de1
cmp edx, 1
je 0x464de1
mov edi, dword [ebp - 0x18]
mov ecx, 0x20
sub ecx, edi
mov ebx, edx
shr ebx, cl
test ebx, ebx
jne 0x464de1
mov ecx, edi
shl edx, cl
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x10], edx
jmp 0x464de1
lea ecx, [ebp - 0x2c]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], edi
mov dword [ebp - 0xc], edi
jmp 0x464dde
cmp dword [ebp - 8], 0
jne 0x464d77
test ebx, ebx
je 0x464dd7
lea eax, [esi*4]
cmp eax, 0x10000
jae 0x464d91
call fcn.004bd130
mov eax, esp
mov dword [ebp - 8], eax
jmp 0x464da1
push eax
lea edx, [ebp - 0x20]
push edx
call fcn.0045f700
add esp, 8
mov dword [ebp - 8], eax
test ebx, ebx
jne 0x464db2
push esi
push edi
push eax
call fcn.00460010
add esp, 0xc
jmp 0x464dcf
push ebx
push esi
push edi
push eax
call fcn.00463ea0
mov ecx, dword [ebp - 8]
xor eax, eax
add esp, 0x10
cmp dword [ecx + esi*4 - 4], eax
sete al
sub esi, eax
mov dword [ebp + 0x10], esi
mov edx, dword [ebp - 8]
mov dword [ebp + 0xc], edx
mov edi, edx
mov eax, dword [edi + esi*4 - 4]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
bsr ecx, eax
mov eax, ecx
mov edx, esi
shl edx, 5
lea ebx, [edx + eax - 0x1f]
mov edx, dword [ebp + 0x14]
imul ebx, edx
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x14]
shr ebx, 5
lea eax, [ebx + ecx + 5]
mov ecx, dword [ebp + 8]
cmp eax, dword [ecx]
jle 0x464e19
push eax
push ecx
call fcn.00460100
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
add esp, 8
mov edi, dword [ecx + 8]
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x464e31
mov eax, edi
mov dword [eax], 0
add eax, 4
dec ecx
jne 0x464e25
mov eax, dword [ebp - 0x14]
lea edi, [edi + eax*4]
test edx, edx
jne 0x464e48
mov ecx, dword [ebp - 0x10]
mov dword [edi], ecx
lea esi, [edx + 1]
jmp 0x464fed
lea eax, [ebx + 5]
cmp esi, 1
jle 0x464e55
test dl, 1
jne 0x464e5d
lea eax, [ebx + 5]
cdq
sub eax, edx
sar eax, 1
add eax, eax
add eax, eax
cmp eax, 0x10000
jae 0x464e71
call fcn.004bd130
mov ebx, esp
jmp 0x464e80
push eax
lea edx, [ebp - 0x20]
push edx
call fcn.0045f700
add esp, 8
mov ebx, eax
bsr eax, dword [ebp + 0x14]
mov ecx, eax
dec ecx
mov edx, 1
rol edx, cl
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 8], edx
cmp esi, 1
jne 0x464f3d
test cl, 1
jne 0x464eab
mov eax, edi
mov edi, ebx
mov ebx, eax
mov edx, dword [ebp - 0xc]
mov dword [edi], edx
mov esi, 1
test ecx, ecx
js 0x464f14
lea esp, [esp]
push esi
push edi
push ebx
call fcn.004638c0
mov ecx, dword [ebp + 0x14]
xor eax, eax
add esi, esi
add esp, 0xc
cmp dword [ebx + esi*4 - 4], eax
sete al
sub esi, eax
mov eax, edi
mov edi, ebx
mov ebx, eax
test dword [ebp - 8], ecx
je 0x464f01
mov edx, dword [ebp - 0xc]
push edx
push esi
push edi
push edi
call fcn.00463c30
xor ecx, ecx
add esp, 0x10
test eax, eax
setne cl
mov dword [edi + esi*4], eax
add esi, ecx
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
dec eax
ror edx, 1
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], edx
test eax, eax
jns 0x464ec0
mov eax, dword [ebp - 0x10]
cmp eax, 1
je 0x464fed
push eax
push esi
push edi
push edi
call fcn.00463c30
xor ecx, ecx
add esp, 0x10
test eax, eax
setne cl
mov dword [edi + esi*4], eax
add esi, ecx
jmp 0x464fed
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x10], 0
jmp 0x464f50
mov ecx, eax
and ecx, 0x1f
mov edx, 0x96696996
shr edx, cl
shr eax, 5
xor dword [ebp - 0x10], edx
test eax, eax
jne 0x464f50
mov eax, dword [ebp - 0x10]
xor eax, dword [ebp - 0x1c]
test al, 1
je 0x464f76
mov eax, edi
mov edi, ebx
mov ebx, eax
mov ecx, dword [ebp + 0xc]
push esi
push ecx
push edi
call fcn.00460010
add esp, 0xc
cmp dword [ebp - 0x1c], 0
jl 0x464fed
lea ebx, [ebx]
push esi
push edi
push ebx
call fcn.004638c0
mov ecx, dword [ebp + 0x14]
xor edx, edx
add esi, esi
add esp, 0xc
cmp dword [ebx + esi*4 - 4], edx
mov eax, edi
sete dl
mov edi, ebx
mov dword [ebp - 0x10], eax
mov ebx, eax
sub esi, edx
test dword [ebp - 8], ecx
je 0x464fda
mov ebx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ebx
push edx
push esi
push edi
push eax
call fcn.00462b00
add esp, 0x14
neg eax
sbb eax, eax
inc eax
sub ebx, eax
add esi, ebx
mov ebx, edi
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
dec eax
ror ecx, 1
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], ecx
test eax, eax
jns 0x464f90
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x464ffd
push eax
call fcn.0045f730
add esp, 4
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x46501c
push eax
push esi
push edi
push edi
call fcn.00460ee0
xor edx, edx
add esp, 0x10
test eax, eax
setne dl
mov dword [edi + esi*4], eax
add esi, edx
add esi, dword [ebp - 0x14]
cmp dword [ebp - 0x24], 0
je 0x465027
neg esi
mov eax, dword [ebp + 8]
mov dword [eax + 4], esi
lea esp, [ebp - 0x38]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004bc40c
mov esp, ebp
pop ebp
ret