Function at 0x495f20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xac
mov ecx, dword [ebp + 0x14]
mov eax, dword [0x754040]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [ecx + 4]
test esi, esi
jle 0x496466
mov eax, ecx
mov edx, dword [ecx]
mov ecx, dword [edx]
mov dword [ebp - 0x9c], ecx
test cl, 1
je 0x496466
cmp dword [eax + 0xc], 0
jne 0x496458
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0xc], 0
jne 0x496474
mov ebx, dword [eax]
mov eax, dword [eax + 4]
cmp eax, esi
mov dword [ebp - 0x94], esi
mov ecx, esi
cmovb ecx, eax
mov dword [ebp - 0xa0], eax
test eax, eax
mov dword [ebp - 0xa8], edx
je 0x4963ab
xor esi, esi
xor eax, eax
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0xa4], ecx
mov ecx, dword [edx + eax*4]
mov edx, dword [ebx + eax*4]
mov ebx, edx
xor ebx, ecx
mov edi, edx
sub edi, ecx
lea ecx, [ebx - 1]
xor edi, edx
or edi, ebx
not ebx
and ecx, ebx
mov ebx, dword [ebp - 0x98]
xor edi, edx
mov edx, dword [ebp - 0xa8]
sar ecx, 0x1f
sar edi, 0x1f
or edi, 1
xor esi, edi
and esi, ecx
mov ecx, dword [ebp - 0xa4]
xor esi, edi
inc eax
cmp ecx, eax
jne 0x495fa6
mov ecx, dword [ebp - 0x94]
mov edi, dword [ebp - 0xa0]
cmp edi, ecx
jb 0x49638e
ja 0x4963bc
test esi, esi
jns 0x496474
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 4]
test eax, eax
jle 0x496493
mov ecx, dword [ecx]
cmp dword [ecx + eax*4 - 4], 0
je 0x4961d3
lea esi, [eax - 1]
shl esi, 5
mov eax, dword [ecx + eax*4 - 4]
xor ebx, ebx
test eax, eax
setne bl
mov ecx, eax
shr ecx, 0x10
cmp eax, 0x10000
cmovb ecx, eax
mov eax, 0
setae al
shl eax, 4
mov dword [ebp - 0x98], eax
mov eax, ecx
shr eax, 8
xor edx, edx
cmp ecx, 0x100
cmovb eax, ecx
setae dl
mov dword [ebp - 0xa4], edx
mov edi, eax
shr edi, 4
xor ecx, ecx
cmp eax, 0x10
cmovb edi, eax
setae cl
mov dword [ebp - 0xa0], ecx
mov eax, edi
shr eax, 2
xor edx, edx
cmp edi, 4
cmovb eax, edi
setae dl
xor ecx, ecx
cmp eax, 2
setae cl
or ebx, esi
add ebx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xa4]
lea eax, [ebx + eax*8]
mov esi, dword [ebp - 0xa0]
lea eax, [eax + esi*4]
lea ebx, [eax + edx*2]
add ebx, ecx
je 0x4963e1
mov esi, dword [ebp + 0x18]
pcmpeqd xmm0, xmm0
movdqu xmmword [ebp - 0x20], xmm0
movdqu xmmword [ebp - 0x2c], xmm0
movdqu xmmword [ebp - 0x3c], xmm0
movdqu xmmword [ebp - 0x4c], xmm0
movdqu xmmword [ebp - 0x5c], xmm0
movdqu xmmword [ebp - 0x6c], xmm0
movdqu xmmword [ebp - 0x7c], xmm0
movdqu xmmword [ebp - 0x8c], xmm0
cmp byte [esi + 0x14], 0
jne 0x496113
mov ecx, dword [esi + 8]
mov edx, esi
mov esi, dword [esi + 0x10]
cmp ecx, dword [edx + 0xc]
je 0x49633c
mov eax, dword [edx + 4]
mov dword [eax + ecx*4], esi
inc dword [edx + 8]
mov esi, edx
push esi
call fcn.00495c50
add esp, 4
mov edi, eax
push esi
call fcn.00495c50
add esp, 4
mov dword [ebp - 0x90], eax
xor ecx, ecx
test edi, edi
je 0x4965b3
mov edx, eax
mov eax, 0
test edx, edx
je 0x496301
mov ecx, dword [ebp + 0x1c]
xor eax, eax
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x49658b
cmp ebx, 0x29f
mov dword [ebp - 0x9c], eax
ja 0x4964a0
cmp ebx, 0xef
ja 0x4964af
cmp ebx, 0x4f
ja 0x4964be
xor eax, eax
cmp ebx, 0x18
setae al
lea eax, [eax*2 + 1]
mov dword [ebp - 0xa4], eax
push esi
mov eax, dword [ebp - 0xa8]
push eax
push eax
push dword [ebp + 0xc]
mov esi, edx
push edx
call fcn.004966c0
add esp, 0x14
xor ecx, ecx
test eax, eax
je 0x4963b4
cmp dword [ebp - 0xa4], 2
jae 0x4964cd
dec ebx
mov dword [ebp - 0x98], 0
lea esi, [ebx - 1]
jmp 0x496215
lea edx, [eax - 1]
cmp eax, 1
mov eax, edx
jg 0x496019
jmp 0x4963e1
test byte [ebp - 0x98], 1
je 0x49620b
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push edi
push edi
push edi
call fcn.004966c0
add esp, 0x14
test eax, eax
je 0x4963b2
sub ebx, 1
jb 0x4962e3
dec esi
test ebx, ebx
js 0x4961e6
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov ecx, ebx
shr ecx, 5
cmp ecx, eax
jae 0x4961e6
mov edx, dword [ebp + 0x10]
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
bt ecx, ebx
jae 0x4961e6
cmp dword [ebp - 0xa4], 2
jb 0x496246
test ebx, ebx
jne 0x4965ba
xor esi, esi
xor eax, eax
inc eax
test byte [ebp - 0x98], 1
jne 0x496284
and eax, 0xfffffffe
push dword [ebp + eax*2 - 0x90]
push edi
call fcn.00495aa0
add esp, 8
test eax, eax
je 0x4963b2
cmp ebx, esi
je 0x4962e3
not esi
add ebx, esi
mov al, 1
mov dword [ebp - 0x98], eax
jmp 0x4961ce
mov dword [ebp - 0x94], esi
xor esi, esi
dec esi
mov dword [ebp - 0xa0], eax
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push edi
push edi
push edi
call fcn.004966c0
add esp, 0x14
test eax, eax
je 0x4963b2
inc esi
cmp dword [ebp - 0x94], esi
mov eax, dword [ebp - 0xa0]
jne 0x496293
mov esi, dword [ebp - 0x94]
and eax, 0xfffffffe
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push dword [ebp + eax*2 - 0x90]
push edi
push edi
call fcn.004966c0
add esp, 0x14
jmp 0x496267
mov esi, dword [ebp + 0x18]
push esi
push dword [ebp - 0xa8]
push edi
push dword [ebp + 8]
call fcn.00496860
add esp, 0x10
mov ecx, eax
mov eax, dword [ebp - 0x9c]
mov edi, ecx
push eax
call fcn.00496a60
add esp, 4
cmp byte [esi + 0x14], 0
jne 0x496325
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
lea edx, [ecx - 1]
mov dword [esi + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov dword [esi + 0x10], eax
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00550b46
mov eax, edi
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x49657d
cmp edi, 0x3fffffff
ja 0x49657d
lea eax, [edi*4]
push eax
mov eax, dword [ebp + 0x18]
push dword [eax + 4]
call fcn.0050c5c0
add esp, 8
test eax, eax
je 0x49657d
mov edx, dword [ebp + 0x18]
mov dword [edx + 4], eax
mov dword [edx + 0xc], edi
mov ecx, dword [edx + 8]
jmp 0x49610b
xor eax, eax
or eax, dword [edx + edi*4]
inc edi
cmp ecx, edi
jne 0x496390
mov ecx, eax
not ecx
dec eax
and eax, ecx
sar eax, 0x1f
not eax
or esi, eax
jmp 0x496001
xor esi, esi
jmp 0x495fe7
xor ecx, ecx
mov esi, dword [ebp + 0x18]
jmp 0x4962fb
xor eax, eax
or eax, dword [ebx + ecx*4]
inc ecx
cmp dword [ebp - 0xa0], ecx
jne 0x4963be
mov ecx, eax
not ecx
dec eax
and eax, ecx
sar eax, 0x1f
xor esi, 1
and esi, eax
xor esi, 1
jmp 0x496001
mov edx, dword [ebp - 0x9c]
and edx, 0xfffffffe
cmp dword [ebp - 0x94], 1
je 0x496415
mov ecx, dword [ebp - 0x94]
cmp ecx, 3
mov eax, 2
cmovge eax, ecx
xor ecx, ecx
inc ecx
mov esi, dword [ebp - 0xa8]
or edx, dword [esi + ecx*4]
inc ecx
cmp eax, ecx
jne 0x49640d
test edx, edx
je 0x496445
push 1
push dword [ebp + 8]
call fcn.005d0c40
add esp, 8
test eax, eax
je 0x49648c
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], 0
mov eax, dword [ecx]
xor edx, edx
inc edx
mov dword [eax], edx
mov edi, edx
mov dword [ecx + 4], edx
jmp 0x496325
xor eax, eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], eax
mov dword [ecx + 4], eax
xor edi, edi
inc edi
jmp 0x496325
push 0x27e
push 0x6e1eeb
push 0x6d
jmp 0x496480
push 0x27a
push 0x6e1eeb
push 0x68
jmp 0x496480
push 0x283
push 0x6e1eeb
push 0x6b
push 0
push 3
call fcn.00643740
add esp, 0x14
xor edi, edi
jmp 0x496325
je 0x4963e1
mov ecx, dword [ecx]
jmp 0x496024
mov dword [ebp - 0xa4], 6
jmp 0x496195
mov dword [ebp - 0xa4], 5
jmp 0x496195
mov dword [ebp - 0xa4], 4
jmp 0x496195
mov dword [ebp - 0xb0], edi
push dword [ebp + 0x18]
call fcn.00495c50
add esp, 4
mov dword [ebp - 0x98], eax
test eax, eax
je 0x49656d
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push esi
push esi
push dword [ebp - 0x98]
call fcn.004966c0
add esp, 0x14
test eax, eax
je 0x49656d
mov eax, dword [ebp - 0xa4]
mov ecx, eax
dec cl
xor esi, esi
inc esi
mov eax, esi
shl eax, cl
mov dword [ebp - 0x94], eax
push dword [ebp + 0x18]
call fcn.00495c50
add esp, 4
mov dword [ebp + esi*4 - 0x90], eax
test eax, eax
je 0x49656d
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push dword [ebp - 0x98]
push dword [ebp + esi*4 - 0x94]
push eax
call fcn.004966c0
add esp, 0x14
test eax, eax
je 0x49656d
inc esi
cmp dword [ebp - 0x94], esi
mov edi, dword [ebp - 0xb0]
jne 0x496520
jmp 0x4961c3
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp - 0x9c]
xor ecx, ecx
jmp 0x496301
mov esi, dword [ebp + 0x18]
mov word [esi + 0x14], 0x101
jmp 0x496113
push esi
push dword [ebp + 0x14]
mov dword [ebp - 0x98], edx
call fcn.005d2080
mov edx, dword [ebp - 0x98]
add esp, 8
mov dword [ebp - 0xa8], eax
test eax, eax
jne 0x496159
xor ecx, ecx
xor eax, eax
jmp 0x496301
mov dword [ebp - 0xb0], edi
mov dword [ebp - 0x94], 0
xor ecx, ecx
inc ecx
mov dword [ebp - 0xac], ecx
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0xb4], 0
test esi, esi
js 0x49660b
mov ecx, esi
shr ecx, 5
mov dword [ebp - 0xb4], 0
cmp ecx, eax
jae 0x49660b
mov edi, dword [edx + ecx*4]
xor ecx, ecx
bt edi, esi
setb cl
mov dword [ebp - 0xb4], ecx
mov ecx, dword [ebp - 0xac]
sub ecx, dword [ebp - 0x94]
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0xb8], edi
shl dword [ebp - 0xb8], cl
or dword [ebp - 0xb8], 1
cmp dword [ebp - 0xb4], 0
mov ecx, dword [ebp - 0xa0]
cmovne ecx, dword [ebp - 0xb8]
mov dword [ebp - 0xa0], ecx
mov edi, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x94]
cmovne ecx, edi
mov dword [ebp - 0x94], ecx
lea ecx, [edi + 1]
cmp ecx, dword [ebp - 0xa4]
jae 0x49667d
dec esi
cmp dword [ebp - 0xac], ebx
mov dword [ebp - 0xac], ecx
jl 0x4965d9
test byte [ebp - 0x98], 1
jne 0x49669d
mov esi, dword [ebp - 0x94]
mov eax, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xb0]
jmp 0x496254
mov esi, dword [ebp - 0x94]
test esi, esi
mov eax, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xb0]
js 0x4962c4
jmp 0x496284