Function at 0x427ef0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x664
mov eax, dword [0x4b3080]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [ebp - 0x664], eax
xor esi, esi
mov eax, dword [edx + 0x98]
push edi
mov edi, ecx
mov dword [ebp - 0x630], edx
mov ecx, dword [edx + 0x9c]
mov dword [ebp - 0x638], edi
mov dword [ebp - 0x634], 0
lea eax, [eax + ecx*2]
mov ecx, dword [edi + 0x2be0]
movsx eax, word [eax*2 + 0x492194]
mov dword [ebp - 0x60c], eax
mov eax, dword [edx + 0xa0]
mov edx, dword [edx + 0x20]
mov dword [ebp - 0x654], eax
lea eax, [edi + 0x1538]
mov dword [ebp - 0x614], ecx
mov dword [ebp - 0x61c], eax
test ecx, ecx
jle 0x427fc0
mov ebx, eax
mov eax, dword [ebp + 0xc]
nop word [eax + eax]
mov eax, dword [eax + esi*4]
lea ebx, [ebx + 4]
imul edx, edx, 0xbb38435
shl eax, 0xa
add eax, dword [ebp - 0x60c]
add edx, 0x3619636b
mov ecx, edx
sar ecx, 0x1f
xor eax, ecx
sub eax, ecx
mov dword [ebx - 4], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0x2be0]
mov dword [ebp - 0x614], ecx
add edx, dword [eax + esi*4]
inc esi
cmp esi, ecx
jl 0x427f80
jmp 0x427fc6
mov dword [ebp - 0x61c], eax
lea eax, [edi + 0x1cb8]
xor ebx, ebx
mov dword [ebp - 0x620], eax
lea eax, [edi + 0x2438]
lea eax, [eax + ecx*2]
mov dword [ebp - 0x624], ebx
mov dword [ebp - 0x644], eax
lea eax, [edi + 0x1318]
mov dword [ebp - 0x658], eax
mov esi, dword [ebp - 0x630]
mov eax, ebx
shr eax, 1
shl eax, 5
lea ecx, [esi + 0x24]
add ecx, eax
mov eax, dword [edi + 0x2be8]
add eax, eax
mov dword [ebp - 0x60c], ecx
push eax
push ecx
lea eax, [ebp - 0x24]
push eax
call fcn.004674e0
mov ecx, dword [esi + ebx*4 + 0x10]
lea eax, [ebx + 0xa]
lea eax, [eax + eax*4]
mov dword [ebp - 0x660], ecx
lea eax, [esi + eax*2]
mov edi, 1
add esp, 0xc
mov dword [ebp - 0x640], eax
mov eax, dword [esi + 0x9c]
cmp ecx, edi
mov dword [ebp - 0x608], eax
cmovg edi, ecx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
test eax, 0xffff0000
je 0x42806c
sar eax, 0x10
mov ecx, eax
call fcn.0041f280
jmp 0x428076
mov ecx, eax
call fcn.0041f280
add eax, 0x10
lea ecx, [eax - 1]
mov dword [ebp - 0x610], eax
shl edi, cl
mov eax, 0x1fffffff
mov esi, edi
cdq
sar esi, 0x10
idiv esi
movzx edi, di
mov ebx, eax
movsx edx, bx
imul edi, edx
mov ecx, edx
imul ecx, esi
mov esi, ebx
sar esi, 0xf
inc esi
shl ebx, 0x10
sar esi, 1
sar edi, 0x10
add edi, ecx
mov ecx, 0x1d
neg edi
shl edi, 3
movzx eax, di
imul esi, edi
imul eax, edx
sar edi, 0x10
imul edi, edx
sar eax, 0x10
add esi, eax
mov eax, dword [ebp - 0x610]
dec eax
add esi, edi
sub ecx, eax
add esi, ebx
test ecx, ecx
jg 0x428115
neg ecx
mov eax, 0x80000000
mov edx, 0x7fffffff
sar eax, cl
sar edx, cl
cmp eax, edx
jle 0x428100
cmp esi, eax
jg 0x428111
cmp esi, edx
mov eax, esi
cmovl eax, edx
shl eax, cl
jmp 0x428122
cmp esi, edx
jle 0x42810a
mov eax, edx
shl eax, cl
jmp 0x428122
cmp esi, eax
cmovl esi, eax
mov eax, esi
shl eax, cl
jmp 0x428122
cmp ecx, 0x20
jge 0x428120
mov eax, esi
sar eax, cl
jmp 0x428122
xor eax, eax
mov edi, dword [ebp - 0x638]
mov ecx, 0x7fff
cmp eax, ecx
mov ebx, 0x10000
mov dword [ebp - 0x628], ebx
cmovl ecx, eax
mov edx, dword [edi + 0x414]
mov dword [ebp - 0x62c], ecx
cmp ecx, edx
je 0x42815e
push ecx
call fcn.00427dd0
mov ebx, eax
add esp, 4
mov dword [ebp - 0x628], ebx
cmp dword [edi + 0x350c], 0
mov eax, dword [ebp - 0x608]
je 0x4281c1
cmp dword [edi + 0x3510], 0
jne 0x4281c1
cmp eax, 1
jne 0x4281c1
mov ecx, dword [ebp - 0x624]
cmp ecx, 2
jae 0x428375
mov eax, dword [ebp - 0x640]
xorps xmm0, xmm0
mov edx, 0x1000
mov dword [ebp - 0x608], 0
movq qword [eax], xmm0
mov word [eax + 8], 0
mov word [eax + 4], dx
mov edx, dword [ebp - 0x630]
mov eax, dword [edi + 0x2bb8]
mov dword [edx + ecx*4], eax
jmp 0x4281d5
test eax, eax
jne 0x428375
mov ecx, dword [ebp - 0x624]
mov edx, dword [ebp - 0x630]
mov edx, dword [edx + ecx*4]
xor eax, eax
cmp dword [ebp - 0x654], 4
mov dword [ebp - 0x634], edx
setge al
lea eax, [eax*2 + 1]
test ecx, eax
jne 0x428304
mov esi, dword [edi + 0x2be8]
mov ebx, dword [edi + 0x2be0]
mov edi, ebx
sub edi, esi
sub edi, edx
lea eax, [esi*4]
sub edi, 2
push eax
lea eax, [ebp - 0x424]
push 0
push eax
call fcn.00467a60
mov edx, dword [ebp - 0x60c]
mov eax, ebx
push esi
mov esi, dword [ebp - 0x624]
sub eax, edi
sar ebx, 2
push eax
imul ebx, esi
lea eax, [ebp - 0x3e4]
lea eax, [eax + edi*2]
push eax
lea eax, [ebp - 0x424]
push eax
add ebx, edi
mov edi, dword [ebp - 0x638]
add ebx, 0x121c
lea ecx, [edi + ebx*2]
call fcn.00430970
mov ebx, dword [ebp - 0x62c]
add esp, 0x1c
shl ebx, 0x10
test esi, esi
jne 0x428286
mov eax, dword [ebp - 0x630]
sar ebx, 0xe
movsx eax, word [eax + 0x8c]
imul ebx, eax
mov eax, dword [ebp - 0x634]
xor esi, esi
add eax, 2
test eax, eax
jle 0x428375
mov eax, dword [ebp - 0x614]
movzx edx, bx
sar ebx, 0x10
add eax, 0x105
mov dword [ebp - 0x60c], edx
lea eax, [edi + eax*4]
mov dword [ebp - 0x610], eax
nop dword [eax]
mov eax, dword [edi + 0x2be0]
sub eax, esi
inc esi
movsx ecx, word [ebp + eax*2 - 0x3e6]
mov eax, ebx
imul edx, ecx
imul eax, ecx
sar edx, 0x10
add edx, eax
mov eax, dword [ebp - 0x610]
mov dword [eax], edx
sub eax, 4
mov edx, dword [ebp - 0x60c]
mov dword [ebp - 0x610], eax
mov eax, dword [ebp - 0x634]
add eax, 2
cmp esi, eax
jl 0x4282c0
jmp 0x428375
cmp ebx, 0x10000
je 0x428375
lea eax, [edx + 2]
mov dword [ebp - 0x60c], eax
test eax, eax
jle 0x428375
mov esi, dword [ebp - 0x614]
movzx eax, bx
mov dword [ebp - 0x618], eax
mov eax, ebx
sar eax, 0x10
add edi, 0x414
mov dword [ebp - 0x63c], eax
lea esi, [edi + esi*4]
mov edi, dword [ebp - 0x60c]
mov edx, dword [esi]
lea esi, [esi - 4]
movsx ecx, word [esi + 4]
mov eax, dword [ebp - 0x618]
sar edx, 0xf
inc edx
imul eax, ecx
sar edx, 1
imul edx, ebx
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x63c]
imul eax, ecx
add edx, eax
mov dword [esi + 4], edx
sub edi, 1
jne 0x428342
mov ebx, dword [ebp - 0x628]
mov edi, 0x10
mov esi, dword [ebp - 0x658]
movzx eax, bx
mov dword [ebp - 0x60c], eax
mov eax, ebx
sar eax, 0x10
mov dword [ebp - 0x618], eax
nop word [eax + eax]
mov ecx, dword [esi]
lea esi, [esi + 4]
movsx edx, word [esi - 4]
sar ecx, 0xf
mov eax, edx
imul eax, dword [ebp - 0x60c]
inc ecx
imul edx, dword [ebp - 0x618]
sar ecx, 1
imul ecx, ebx
sar eax, 0x10
add ecx, eax
add ecx, edx
mov dword [esi - 4], ecx
sub edi, 1
jne 0x4283a0
cmp dword [ebp - 0x608], 0
mov edi, dword [ebp - 0x638]
mov eax, dword [ebp - 0x62c]
mov dword [edi + 0x414], eax
jne 0x4285b2
mov ebx, dword [ebp - 0x614]
mov ecx, ebx
sub ecx, dword [ebp - 0x634]
add ecx, 0x108
mov dword [ebp - 0x618], 0
cmp dword [edi + 0x2be4], 0
lea ecx, [edi + ecx*4]
mov dword [ebp - 0x610], ecx
jle 0x4285d1
mov edx, dword [ebp - 0x61c]
lea eax, [ebx + 0x106]
lea eax, [edi + eax*4]
mov dword [ebp - 0x60c], edx
mov dword [ebp - 0x63c], eax
mov eax, dword [ebp - 0x620]
sub eax, edx
mov dword [ebp - 0x65c], eax
nop dword [eax]
mov eax, dword [ecx - 0x10]
mov edx, dword [ebp - 0x640]
mov dword [ebp - 0x64c], eax
mov edi, dword [ecx - 4]
add dword [ebp - 0x610], 4
movsx eax, word [edx + 8]
mov dword [ebp - 0x650], eax
mov eax, dword [ecx - 0xc]
mov dword [ebp - 0x628], eax
movsx eax, word [edx + 6]
movsx ebx, word [edx + 4]
movsx esi, word [edx + 2]
mov edx, dword [ecx]
mov dword [ebp - 0x648], eax
mov eax, dword [ecx - 8]
mov dword [ebp - 0x62c], eax
mov eax, dword [ebp - 0x640]
inc dword [ebp - 0x614]
movsx ecx, word [eax]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [ebp - 0x608], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [ebp - 0x608], eax
mov eax, dword [ebp - 0x62c]
movzx eax, ax
imul eax, ebx
sar eax, 0x10
add dword [ebp - 0x608], eax
mov eax, dword [ebp - 0x628]
movzx eax, ax
imul eax, dword [ebp - 0x648]
sar eax, 0x10
add dword [ebp - 0x608], eax
mov eax, dword [ebp - 0x64c]
movzx eax, ax
imul eax, dword [ebp - 0x650]
sar eax, 0x10
add dword [ebp - 0x608], eax
mov eax, dword [ebp - 0x62c]
mov ecx, dword [ebp - 0x608]
sar eax, 0x10
add ecx, edx
imul eax, ebx
add ecx, edi
mov edx, dword [ebp - 0x60c]
mov edi, dword [ebp - 0x638]
add ecx, eax
mov eax, dword [ebp - 0x628]
sar eax, 0x10
imul eax, dword [ebp - 0x648]
add ecx, eax
mov eax, dword [ebp - 0x64c]
sar eax, 0x10
imul eax, dword [ebp - 0x650]
add ecx, eax
mov eax, dword [edx]
sar ecx, 3
inc ecx
sar ecx, 1
add eax, ecx
mov ecx, dword [ebp - 0x65c]
mov dword [edx + ecx], eax
add edx, 4
mov ecx, dword [ebp - 0x63c]
shl eax, 6
mov dword [ebp - 0x60c], edx
mov dword [ecx], eax
add ecx, 4
mov eax, dword [ebp - 0x618]
inc eax
mov dword [ebp - 0x63c], ecx
cmp eax, dword [edi + 0x2be4]
mov dword [ebp - 0x618], eax
mov ecx, dword [ebp - 0x610]
jl 0x428450
jmp 0x4285d1
mov eax, dword [edi + 0x2be4]
mov edx, dword [ebp - 0x61c]
shl eax, 2
push eax
push edx
push dword [ebp - 0x620]
call fcn.004674e0
add esp, 0xc
push dword [edi + 0x2be4]
mov edx, dword [ebp - 0x620]
lea eax, [ebp - 0x24]
push dword [edi + 0x2be8]
lea ecx, [ebp - 0x604]
push eax
lea eax, [edi + 0x1318]
push eax
call fcn.00428730
mov ecx, dword [edi + 0x2be4]
add esp, 0x10
xor esi, esi
test ecx, ecx
jle 0x42867e
mov eax, dword [ebp - 0x660]
mov ebx, eax
sar ebx, 0xf
inc ebx
cwde
sar ebx, 1
mov dword [ebp - 0x60c], eax
mov edx, dword [ebp + esi*4 - 0x604]
mov ecx, edx
movzx eax, dx
imul eax, dword [ebp - 0x60c]
sar ecx, 0x10
imul ecx, dword [ebp - 0x60c]
imul edx, ebx
sar eax, 0x10
add eax, ecx
add eax, edx
sar eax, 9
inc eax
sar eax, 1
cmp eax, 0x7fff
jle 0x42865c
mov eax, 0x7fff
jmp 0x428669
cmp eax, 0xffff8000
mov ecx, 0xffff8000
cmovl eax, ecx
mov ecx, dword [ebp - 0x644]
mov word [ecx + esi*2], ax
inc esi
mov ecx, dword [edi + 0x2be4]
cmp esi, ecx
jl 0x428621
movups xmm0, xmmword [edi + ecx*4 + 0x1318]
mov esi, dword [ebp - 0x644]
lea eax, [ecx*4]
mov ebx, dword [ebp - 0x624]
add dword [ebp - 0x61c], eax
inc ebx
add dword [ebp - 0x620], eax
mov dword [ebp - 0x624], ebx
lea esi, [esi + ecx*2]
mov dword [ebp - 0x644], esi
movups xmmword [edi + 0x1318], xmm0
movups xmm0, xmmword [edi + ecx*4 + 0x1328]
movups xmmword [edi + 0x1328], xmm0
movups xmm0, xmmword [edi + ecx*4 + 0x1338]
movups xmmword [edi + 0x1338], xmm0
movups xmm0, xmmword [edi + ecx*4 + 0x1348]
movups xmmword [edi + 0x1348], xmm0
cmp ebx, 4
jl 0x427ff5
mov ecx, dword [edi + 0x2be0]
lea eax, [ecx + ecx]
add ecx, 0x121c
push eax
lea eax, [edi + ecx*2]
push eax
push dword [ebp - 0x664]
call fcn.004674e0
mov ecx, dword [ebp - 4]
add esp, 0xc
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004661fb
mov esp, ebp
pop ebp
ret