Function at 0x494b50
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x460
mov eax, dword [esp + 0x480]
mov ebx, dword [eax + 0xc]
mov edx, ebx
shl edx, 5
je 0x494ba8
xor ecx, ecx
cmp edx, 0x20000000
setb al
jae 0x494f65
mov esi, ebx
mov cl, al
shl esi, 7
shl ecx, 2
test esi, esi
js 0x494f65
mov ebp, ecx
je 0x494baf
push ecx
push esi
mov edi, edx
call fcn.0040dcd0
mov edx, edi
add esp, 8
mov edi, eax
test edi, edi
jne 0x494bb5
jmp 0x494c18
mov edi, 4
jmp 0x494bb5
mov edi, ecx
test edi, edi
je 0x494c18
mov ecx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
sub ecx, ebx
jb 0x494c1c
test ebx, ebx
je 0x494c1c
mov eax, dword [esp + 0x480]
mov dword [esp], ecx
mov ebp, dword [eax + 8]
xor eax, eax
cmp ebx, 8
jb 0x494c2a
mov eax, ebx
xor ecx, ecx
pcmpeqd xmm0, xmm0
and eax, 0xfffffff8
nop word [eax + eax]
movdqu xmm1, xmmword [ebp + ecx*4]
movdqu xmm2, xmmword [ebp + ecx*4 + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [edi + ecx*4], xmm1
movdqu xmmword [edi + ecx*4 + 0x10], xmm2
add ecx, 8
cmp eax, ecx
jne 0x494bf0
jmp 0x494c34
push ebp
push esi
jmp 0x494c20
ud2
call fcn.005062c0
add esp, 8
ud2
mov ecx, dword [ebp + eax*4]
not ecx
mov dword [edi + eax*4], ecx
inc eax
cmp ebx, eax
jne 0x494c2a
mov eax, dword [esp + 0x480]
or byte [edi], 1
mov ecx, edx
mov dword [esp + 0x10], edx
sub ecx, dword [eax + 0x10]
je 0x494c7f
mov eax, dword [edi + ebx*4 - 4]
mov esi, 1
shl eax, cl
shr eax, cl
cmp ecx, 2
cmovae esi, ecx
mov dword [edi + ebx*4 - 4], eax
nop word cs:[eax + eax]
nop
push ebx
push ebp
push edi
push edi
call fcn.004e4c50
add esp, 0x10
dec esi
jne 0x494c70
cmp dword [esp], ebx
mov dword [esp + 0xc], edi
jb 0x494c1c
mov ecx, dword [esp + 0x478]
mov edx, dword [esp + 0xc]
mov dword [esp + 8], ebp
cmp ebx, ecx
jne 0x494f6c
lea edi, [ecx*4]
lea eax, [edx + ecx*4]
mov esi, edi
mov dword [esp + 4], edi
push edi
push dword [esp + 0x478]
push eax
mov ebx, edx
mov esi, ecx
call fcn.004f5b80
add esp, 0xc
mov edx, dword [esp + 0x10]
mov eax, esi
lea ecx, [ebx + esi*8]
lea edi, [esi + esi]
mov ebx, 2
neg eax
mov dword [esp], eax
sub edx, esi
mov dword [esp + 0x14], edx
mov edx, ebx
mov dword [esp + 0x30], ecx
mov ecx, 1
shr edx, 1
test bl, 1
cmove ecx, edx
cmp dword [esp + 0x10], edi
jb 0x494c1c
mov ebp, dword [esp + 0x478]
lea eax, [ebx - 1]
test bl, 1
cmove eax, edx
mov edx, eax
imul edx, ebp
cmp edi, edx
jb 0x494c1c
imul eax, dword [esp]
add eax, edi
cmp eax, ebp
jb 0x494c1c
mov eax, ecx
imul eax, ebp
cmp edi, eax
jb 0x494c1c
imul ecx, dword [esp]
add esi, ebp
add ecx, esi
cmp ecx, ebp
jb 0x494c1c
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], esi
sub ecx, ebp
cmp ecx, ebp
mov dword [esp + 0x14], ecx
jb 0x494c1c
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x30]
add edi, ebp
inc ebx
lea edx, [ecx + edx*4]
lea eax, [ecx + eax*4]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 4]
add edx, esi
mov dword [esp + 0x28], edx
push ebp
push dword [esp + 0x484]
push dword [esp + 0x10]
push eax
push dword [esp + 0x34]
push esi
call fcn.004950c0
add esp, 0x18
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
cmp ebx, 0x20
jne 0x494ce0
mov eax, dword [esp + 0x478]
test eax, eax
je 0x494de8
xor ebx, ebx
cmp eax, 0x20000000
setb al
jae 0x494f65
mov bl, al
shl ebx, 2
cmp dword [esp + 4], 0
js 0x494f65
je 0x494def
push ebx
push dword [esp + 8]
call fcn.0040dcd0
add esp, 8
test eax, eax
jne 0x494df9
jmp 0x494f7d
mov eax, 4
jmp 0x494df9
mov eax, ebx
test eax, eax
je 0x494f7d
mov ecx, dword [esp + 0x47c]
lea edx, [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 0x3c], edx
mov ebx, dword [ecx + 4]
mov edi, dword [ecx]
mov ecx, dword [esp + 0x480]
test ebx, ebx
mov dword [esp + 0x40], ecx
je 0x494c1c
mov ecx, ebx
mov edx, 0xcccccccd
mov ebp, 0x1b
shl ecx, 5
mov eax, ecx
mul edx
shr edx, 2
lea eax, [edx + edx*4]
sub ecx, eax
mov eax, 0x20
sub eax, ecx
test ecx, ecx
cmovne ebp, eax
push ebp
push 0
push dword [edi + ebx*4 - 4]
call fcn.004e4de0
add esp, 0xc
add ebp, 0xfffffffb
mov dword [esp + 0x34], ebp
push eax
mov ebp, dword [esp + 0x47c]
push ebp
push dword [esp + 0x24]
mov esi, dword [esp + 0x480]
push esi
call fcn.004e4c20
add esp, 0x10
cmp eax, 1
jne 0x494c1c
mov ecx, dword [esp]
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], ebp
lea eax, [edi + ebx*4]
lea ebx, [esp + 0x60]
mov dword [esp + 0x38], 0
lea edx, [esp + 0x50]
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x38]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x44], ecx
lea ecx, [esp + 0x34]
mov dword [esp + 0x48], ecx
lea ecx, [esp + 0x3c]
mov dword [esp + 0x4c], ecx
lea ecx, [esp + 0x44]
push ecx
push ebx
push edi
push eax
push edx
call fcn.00480d80
add esp, 0x14
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
mov edi, dword [esp + 8]
test eax, eax
je 0x494efb
shl eax, 2
push 4
push eax
push dword [esp + 0x60]
call fcn.0040dc90
add esp, 0xc
lea eax, [esp + 0x64]
push 0x3fc
push 0
push eax
call fcn.004f7770
add esp, 0xc
cmp dword [esp + 0x478], 0x101
mov dword [esp + 0x60], 1
jae 0x494c1c
push ebp
push dword [esp + 0x484]
push edi
push ebx
push esi
push esi
call fcn.004950c0
add esp, 0x18
mov eax, dword [esp + 0x18]
test eax, eax
je 0x494f56
shl eax, 2
push 4
push eax
push dword [esp + 0x24]
call fcn.0040dc90
add esp, 0xc
mov eax, esi
mov edx, ebp
add esp, 0x460
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.004ccfb0
ud2
push 0x52681c
push ecx
push ebx
call fcn.004ccfb0
add esp, 0xc
ud2
push ebx
push dword [esp + 8]
jmp 0x494c20