Function at 0x458684
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x3c
mov ebx, edx
mov ebp, eax
xor ecx, ecx
mov byte [esp + 0x10], cl
mov byte [esp + 0x11], cl
movsx eax, byte [0x8342cc]
test eax, eax
jne 0x4586b6
movsx ecx, byte [0x834310]
test ecx, ecx
jne 0x4586b6
mov ecx, 1
jmp 0x4586b8
xor ecx, ecx
neg ecx
inc ecx
cmp eax, 1
je 0x45897e
xor eax, eax
neg eax
inc eax
imul ecx, eax
movsx ecx, cl
cmp byte [0x8342d4], 1
je 0x4586dc
test ecx, ecx
jne 0x4586f2
mov byte [esp + 0x38], 3
mov byte [esp + 0x39], 1
mov byte [esp + 0x3a], 2
mov byte [esp + 0x3b], 3
jmp 0x458706
mov byte [esp + 0x38], 3
mov byte [esp + 0x39], 1
mov byte [esp + 0x3a], 3
mov byte [esp + 0x3b], 2
xor eax, eax
mov esi, ebx
mov ebx, eax
jmp 0x45870f
inc ebx
movsx ecx, bl
cmp ecx, 4
jge 0x458975
movsx ecx, byte [esp + ecx + 0x38]
test ecx, ecx
je 0x45895b
cmp ecx, 1
je 0x45875c
cmp ecx, 2
jne 0x458743
lea eax, [esp + 8]
mov edx, esi
call fcn.00440660
test eax, eax
jne 0x458771
jmp 0x45870e
cmp ecx, 3
jne 0x45870e
mov eax, esi
call fcn.0044063c
movsx eax, al
test eax, eax
jne 0x458948
jmp 0x45870e
lea eax, [esp + 8]
mov edx, esi
call fcn.00440950
test eax, eax
jne 0x458954
jmp 0x45870e
mov ebx, esi
test eax, eax
jle 0x458900
movsx ecx, byte [esp + 0x10]
cmp ecx, 1
je 0x4588f0
cmp ecx, 2
je 0x4588e0
cmp ecx, 3
je 0x4588d0
cmp ecx, 4
je 0x4588c0
mov eax, 0xfffffffe
movsx ecx, al
test ecx, ecx
jne 0x4588a6
mov ebx, dword [ebp + 0x44]
mov eax, ebx
call fcn.0043a9f0
push 0x24
call fcn.00403564
pop ecx
mov edx, eax
mov dword [ebx + 0x108], edx
test edx, edx
je 0x458890
mov eax, dword [esp + 0xc]
mov dword [edx + 0x14], eax
mov ecx, dword [eax + 8]
mov dword [edx], ecx
mov ebx, dword [eax + 0xc]
mov dword [edx + 4], ebx
mov ebp, dword [eax + 0x10]
mov dword [edx + 8], ebp
mov ebx, dword [eax + 0x14]
mov dword [edx + 0xc], ebx
mov ebx, dword [eax + 0x18]
mov dword [edx + 0x10], ebx
lea ebx, [eax + 0x20]
mov dword [edx + 0x18], ebx
lea ebx, [ecx + ecx]
add ebx, ebx
lea ebx, [eax + ebx + 0x20]
mov dword [edx + 0x1c], ebx
lea ebx, [ecx + ecx]
add ebx, ebx
add ebx, ebx
lea ebx, [eax + ebx + 0x20]
mov dword [edx + 0x20], ebx
test ecx, ecx
jle 0x458886
xor eax, eax
mov ecx, dword [edx + 0x1c]
lea ebx, [eax + eax]
mov ecx, dword [ecx + eax*4]
test ecx, ecx
jle 0x45884e
xor ebp, ebp
mov esi, dword [edx + 0x14]
mov edi, dword [edx + 0x18]
add esi, dword [edi + ebx*2]
mov ecx, ebp
and ecx, 0xf
add ecx, 0x10
xor byte [esi + ebp], cl
mov ecx, dword [edx + 0x1c]
mov ecx, dword [ecx + ebx*2]
inc ebp
cmp ebp, ecx
jl 0x45882f
mov ebp, dword [edx + 0x20]
cmp dword [ebp + ebx*2], 0
jle 0x458881
xor ebp, ebp
jmp 0x458862
mov ecx, dword [edx + 0x1c]
mov ecx, dword [ecx + ebx*2]
mov esi, dword [edx + 0x14]
mov edi, dword [edx + 0x18]
add esi, dword [edi + ebx*2]
add esi, ecx
mov ecx, ebp
and ecx, 0xf
add ecx, 0x10
xor byte [esi + ebp], cl
mov ecx, dword [edx + 0x20]
inc ebp
cmp ebp, dword [ecx + ebx*2]
jl 0x45885c
inc eax
cmp eax, dword [edx]
jl 0x458820
xor eax, eax
add esp, 0x3c
pop ebx
pop ebp
pop esi
pop edi
ret
push 1
push 0x186aa
call fcn.0046c778
xor eax, eax
add esp, 0x44
pop ebx
pop ebp
pop esi
pop edi
ret
push ebx
push 1
push 0x1964a
call fcn.0046c6ec
mov eax, 0xffffffff
add esp, 0x48
pop ebx
pop ebp
pop esi
pop edi
ret
lea eax, [esp + 8]
mov edx, ebx
call fcn.0040bbe8
jmp 0x4587a9
lea eax, [esp + 8]
mov edx, ebx
call fcn.0040bc68
jmp 0x4587a9
lea eax, [esp + 8]
mov edx, ebx
call fcn.0040bce0
jmp 0x4587a9
lea eax, [esp + 8]
mov edx, ebx
call fcn.0040c63c
jmp 0x4587a9
je 0x458933
cmp eax, 0xffffffff
je 0x45891e
cmp eax, 0xfffffffe
jne 0x4588a6
push ebx
push 1
push 0xdbfb0
call fcn.0046c71c
add esp, 0xc
jmp 0x4588a6
push ebx
push 1
push 0x1964a
call fcn.0046c71c
add esp, 0xc
jmp 0x4588a6
push ebx
push 1
push 0x1967c
call fcn.0046c71c
add esp, 0xc
jmp 0x4588a6
mov ebx, esi
mov byte [esp + 0x10], 1
jmp 0x458773
mov ebx, esi
jmp 0x458773
lea eax, [esp + 8]
mov edx, esi
call fcn.004409a8
test eax, eax
je 0x45870e
mov ebx, esi
jmp 0x458773
mov ebx, esi
xor eax, eax
jmp 0x458773
movsx eax, byte [0x834314]
test eax, eax
jne 0x4586c4
mov eax, 1
jmp 0x4586c6