Function at 0x4a8750
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xd0
mov eax, edx
mov edx, dword [edx]
mov esi, ecx
lea ecx, [esp + 0x8c]
mov dword [esp + 0x2c], eax
mov eax, dword [eax + 8]
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
push eax
call fcn.005e69f0
add esp, 4
movsd xmm1, qword [esp + 0x9c]
movsd xmm0, qword [esp + 0xa4]
movq xmm2, qword [esp + 0x8c]
lea edi, [esp + 0x6c]
lea ebx, [esp + 0xac]
mov dword [esp + 0x28], 0
movsd qword [esp + 0xbc], xmm1
movsd xmm1, qword [esp + 0x94]
movsd qword [esp + 0xc4], xmm0
movq qword [esp + 0xac], xmm2
movsd qword [esp + 0xb4], xmm1
nop
mov ecx, edi
mov edx, ebx
call fcn.005db170
cmp dword [esp + 0x6c], 5
je 0x4a87f6
inc dword [esp + 0x28]
jmp 0x4a87e0
mov dword [esp + 0x1c], esi
mov edi, dword [esp + 0x18]
mov edx, 0x4c957f2d
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
add ecx, edi
mov eax, ecx
adc esi, 0
mul edx
mov dword [esp + 8], eax
imul eax, ecx, 0x5851f42d
mov ecx, dword [esp + 0x1c]
add eax, edx
mov edx, edi
imul edi, esi, 0x4c957f2d
add edi, eax
cmp edx, 8
mov ebx, dword [ecx + 8]
mov esi, dword [ecx + 0x14]
mov eax, dword [ecx + 0xc]
mov dword [esp + 4], ebx
mov dword [esp + 0x30], esi
mov esi, dword [ecx + 0x10]
mov ebx, dword [ecx + 0x1c]
mov ecx, dword [ecx + 0x18]
mov dword [esp + 0xc], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x50], ecx
jbe 0x4a8a8f
cmp edx, 0x10
jbe 0x4a8abc
mov eax, dword [esp + 0x10]
mov ebx, 0x5851f42d
mov dword [esp + 0x20], esi
mov eax, dword [edx + eax - 0x10]
xor eax, dword [esp + 8]
xor eax, esi
mov ecx, eax
imul ecx, ebx
mov ebx, edx
mov edx, 0x4c957f2d
mul edx
add edx, ecx
mov ecx, dword [esp + 0x10]
xor eax, dword [esp + 4]
mov esi, dword [ebx + ecx - 0xc]
mov ecx, 0x4c957f2d
xor esi, edi
xor esi, dword [esp + 0x30]
imul esi, ecx
add esi, edx
mov edx, 0x5851f42d
xor esi, dword [esp + 0xc]
mov ebx, esi
shld ebx, eax, 8
shld eax, esi, 8
mov esi, eax
imul ebx, ecx
imul esi, edx
mul ecx
add edx, esi
mov dword [esp + 4], eax
add ebx, edx
mov edx, dword [esp + 8]
xor edi, ebx
xor edx, eax
mov eax, dword [esp + 0x10]
mov ecx, edx
shrd edx, edi, 8
mov dword [esp + 8], edx
mov edx, dword [esp + 0x18]
shld ecx, edi, 0x18
mov edi, dword [esp + 0x18]
mov eax, dword [edx + eax - 8]
mov edx, 0x5851f42d
xor eax, dword [esp + 0x50]
xor eax, ecx
mov esi, eax
imul esi, edx
mov edx, 0x4c957f2d
mul edx
add edx, esi
mov esi, dword [esp + 0x10]
xor eax, dword [esp + 4]
mov edi, dword [edi + esi - 4]
mov esi, 0x4c957f2d
xor edi, dword [esp + 0x24]
xor edi, dword [esp + 8]
imul edi, esi
add edi, edx
mov edx, 0x5851f42d
xor edi, ebx
mov esi, edi
shld esi, eax, 8
shld eax, edi, 8
mov edi, 0x4c957f2d
mov ebx, eax
imul esi, edi
imul ebx, edx
mul edi
add edx, ebx
xor ecx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
add esi, edx
mov edx, dword [esp + 8]
xor edx, esi
mov ebx, edx
shld ebx, ecx, 0x18
shld ecx, edx, 0x18
mov edx, dword [esp + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
mov edi, eax
mov eax, ecx
mov dword [esp + 0x14], edx
mov edx, ecx
mov dword [esp + 4], ecx
mov edx, 0x5851f42d
xor eax, dword [esp + 0x20]
mov dword [esp + 8], edi
xor eax, dword [edi]
mov ecx, eax
imul ecx, edx
mov edx, 0x4c957f2d
mul edx
add edx, ecx
mov ecx, ebx
xor eax, dword [esp + 0xc]
xor ecx, dword [esp + 0x30]
xor ecx, dword [edi + 4]
mov edi, 0x4c957f2d
imul ecx, edi
add ecx, edx
mov edx, 0x5851f42d
xor ecx, esi
mov esi, 0x4c957f2d
mov edi, ecx
shld edi, eax, 8
shld eax, ecx, 8
mov ecx, eax
imul edi, esi
imul ecx, edx
mul esi
mov esi, dword [esp + 8]
add edx, ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], eax
add edi, edx
xor ebx, edi
xor ecx, eax
mov eax, ecx
shrd ecx, ebx, 8
shld eax, ebx, 0x18
mov edx, eax
mov dword [esp + 4], eax
mov eax, dword [esi + 8]
xor eax, dword [esp + 0x50]
xor eax, edx
mov edx, 0x5851f42d
mov ebx, eax
imul ebx, edx
mov edx, 0x4c957f2d
mul edx
add edx, ebx
mov ebx, dword [esi + 0xc]
mov esi, 0x4c957f2d
xor eax, dword [esp + 0xc]
xor ebx, dword [esp + 0x24]
xor ebx, ecx
imul ebx, esi
add ebx, edx
mov edx, 0x5851f42d
xor ebx, edi
mov esi, ebx
shld esi, eax, 8
shld eax, ebx, 8
mov ebx, 0x4c957f2d
mov edi, eax
imul esi, ebx
imul edi, edx
mul ebx
add edx, edi
mov edi, dword [esp + 4]
mov dword [esp + 0xc], eax
add esi, edx
mov edx, dword [esp + 0x14]
xor ecx, esi
mov ebx, ecx
xor edi, eax
mov eax, dword [esp + 8]
add edx, 0xfffffff0
shld ebx, edi, 0x18
shrd ecx, edi, 8
cmp edx, 0x10
lea eax, [eax + 0x10]
ja 0x4a8980
jmp 0x4a8ccf
cmp edx, 1
mov dword [esp + 0x20], esi
jbe 0x4a8bb8
cmp edx, 3
mov esi, edx
jbe 0x4a8bcc
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov eax, dword [edx]
mov edx, dword [esi + edx - 4]
mov dword [esp + 0x14], edx
jmp 0x4a8bea
mov eax, dword [esp + 0x10]
mov ecx, esi
mov ebx, 0x5851f42d
mov edx, 0x4c957f2d
mov esi, dword [eax + 4]
mov eax, dword [eax]
xor eax, dword [esp + 8]
xor esi, edi
xor esi, dword [esp + 0x30]
xor eax, ecx
mov ecx, eax
mul edx
imul ecx, ebx
xor eax, dword [esp + 4]
add edx, ecx
mov ecx, 0x4c957f2d
imul esi, ecx
mov ecx, 0x4c957f2d
add esi, edx
mov edx, 0x5851f42d
xor esi, dword [esp + 0xc]
mov ebx, esi
shld ebx, eax, 8
shld eax, esi, 8
mov esi, eax
imul ebx, ecx
mov ecx, dword [esp + 8]
imul esi, edx
mov edx, 0x4c957f2d
mul edx
add edx, esi
mov dword [esp + 0xc], eax
add ebx, edx
xor ecx, eax
mov edx, dword [esp + 0x18]
xor edi, ebx
mov eax, ecx
shld eax, edi, 0x18
shrd ecx, edi, 8
mov edi, 0x5851f42d
mov dword [esp + 8], ecx
mov esi, eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x10]
xor eax, dword [edx + ecx - 8]
mov ecx, 0x4c957f2d
xor eax, esi
mov esi, eax
mul ecx
imul esi, edi
mov ecx, eax
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
add edx, esi
mov esi, dword [esp + 0x10]
xor ecx, dword [esp + 0xc]
xor eax, dword [edi + esi - 4]
mov edi, dword [esp + 8]
mov esi, 0x4c957f2d
xor eax, edi
imul eax, esi
add eax, edx
xor eax, ebx
mov esi, eax
shld esi, ecx, 8
shld ecx, eax, 8
mov eax, 0x5851f42d
mov ebx, ecx
imul ebx, eax
mov eax, ecx
mov ecx, 0x4c957f2d
mul ecx
mov ecx, 0x4c957f2d
add edx, ebx
imul esi, ecx
jmp 0x4a8cb7
xor ecx, ecx
cmp edx, 1
jne 0x4a8be0
mov eax, dword [esp + 0x10]
movzx eax, byte [eax]
mov dword [esp + 0x14], eax
jmp 0x4a8bea
mov edx, dword [esp + 0x10]
xor ecx, ecx
movzx eax, word [edx]
movzx edx, byte [esi + edx - 1]
mov dword [esp + 0x14], edx
jmp 0x4a8bea
mov dword [esp + 0x14], 0
xor eax, eax
xor eax, dword [esp + 8]
mov ebx, dword [esp + 0x30]
mov esi, ecx
mov dword [esp + 0x30], ecx
mov ecx, 0x5851f42d
xor esi, edi
xor eax, dword [esp + 0x20]
xor esi, ebx
mov ebx, eax
imul ebx, ecx
mov ecx, 0x4c957f2d
mul ecx
imul esi, ecx
mov ecx, 0x4c957f2d
add edx, ebx
xor eax, dword [esp + 4]
add esi, edx
mov edx, 0x5851f42d
xor esi, dword [esp + 0xc]
mov ebx, esi
shld ebx, eax, 8
shld eax, esi, 8
mov esi, eax
imul ebx, ecx
imul esi, edx
mul ecx
mov ecx, dword [esp + 8]
add edx, esi
mov dword [esp + 0xc], eax
add ebx, edx
xor edi, ebx
xor ecx, eax
mov eax, ecx
shrd ecx, edi, 8
shld eax, edi, 0x18
mov edi, ecx
mov ecx, dword [esp + 0x24]
mov edx, eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
xor ecx, dword [esp + 0x30]
xor eax, dword [esp + 0x14]
xor ecx, edi
xor eax, edx
mov edx, 0x5851f42d
mov esi, eax
imul esi, edx
mov edx, 0x4c957f2d
mul edx
add edx, esi
mov esi, 0x4c957f2d
xor eax, dword [esp + 0xc]
imul ecx, esi
add ecx, edx
mov edx, 0x5851f42d
xor ecx, ebx
mov ebx, 0x4c957f2d
mov esi, ecx
shld esi, eax, 8
shld eax, ecx, 8
mov ecx, eax
imul esi, ebx
imul ecx, edx
mul ebx
add edx, ecx
mov ecx, dword [esp + 4]
add esi, edx
mov dword [esp + 0xc], eax
xor edi, esi
mov ebx, edi
xor ecx, eax
shld ebx, ecx, 0x18
shld ecx, edi, 0x18
mov eax, ecx
mov dword [esp + 4], ecx
mov edx, 0x5851f42d
mov edi, 0x4c957f2d
pcmpeqd xmm2, xmm2
xor eax, 0xff
mov ecx, eax
imul ecx, edx
mul edi
add edx, ecx
mov ecx, ebx
xor eax, dword [esp + 0xc]
imul ecx, edi
add ecx, edx
mov edx, 0x4c957f2d
xor ecx, esi
mov esi, ecx
shld esi, eax, 8
shld eax, ecx, 8
mov ecx, 0x5851f42d
mov edi, eax
mul edx
mov dword [esp + 8], eax
mov eax, 0x4c957f2d
imul edi, ecx
imul esi, eax
mov eax, dword [esp + 4]
add edx, edi
add esi, edx
mov edx, 0x4c957f2d
xor ebx, esi
mov edi, ebx
xor eax, dword [esp + 8]
shld edi, eax, 0x18
shld eax, ebx, 0x18
imul ecx, eax
mov ebx, eax
mul edx
xor eax, dword [esp + 8]
add edx, ecx
mov ecx, 0x4c957f2d
imul edi, ecx
mov ecx, ebx
add edi, edx
neg cl
xor edi, esi
mov edx, eax
shrd edx, edi, cl
shr edi, cl
test cl, 0x20
mov ecx, ebx
cmove edi, edx
shl eax, cl
mov ecx, dword [esp + 0x2c]
xor esi, esi
test bl, 0x20
cmovne eax, esi
or eax, edi
mov dword [esp + 0x20], eax
mov edx, dword [ecx + 4]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x44], edx
mov edx, eax
shr edx, 0x19
movd xmm0, edx
mov dword [esp + 0x2c], edx
punpcklbw xmm0, xmm0
mov edi, dword [ecx + 0x20]
mov edx, dword [ecx + 0x30]
pshuflw xmm0, xmm0, 0
pshufd xmm1, xmm0, 0
movdqa xmm0, xmm1
movdqa xmmword [esp + 0x30], xmm1
mov dword [esp + 8], edi
and edi, eax
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
movdqu xmm3, xmmword [eax + edi]
mov dword [esp + 4], eax
lea eax, [ecx + 0x20]
mov ecx, dword [ecx + 0x38]
mov dword [esp + 0x48], eax
pcmpeqb xmm0, xmm3
mov dword [esp + 0xc], ecx
pmovmskb ebx, xmm0
test bx, bx
je 0x4a8e00
mov ecx, dword [esp + 4]
jmp 0x4a8e40
mov ecx, dword [esp + 4]
nop word cs:[eax + eax]
nop
pcmpeqb xmm3, xmm2
pmovmskb eax, xmm3
test eax, eax
jne 0x4a8f25
lea edi, [edi + esi + 0x10]
movdqa xmm0, xmm1
add esi, 0x10
and edi, dword [esp + 8]
movdqu xmm3, xmmword [ecx + edi]
pcmpeqb xmm0, xmm3
pmovmskb ebx, xmm0
test ebx, ebx
je 0x4a8e10
bsf ax, bx
movzx eax, ax
add eax, edi
and eax, dword [esp + 8]
mov dword [esp + 0x24], eax
lea eax, [eax*4]
sub ecx, eax
mov ecx, dword [ecx - 4]
cmp ecx, dword [esp + 0xc]
jae 0x4a91bf
lea eax, [ebx - 1]
and eax, ebx
mov ebx, eax
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x14]
cmp edx, dword [ecx + eax*8 + 0xc]
jne 0x4a8def
push edx
mov ecx, dword [esp + 0x18]
push dword [ecx + eax*8 + 4]
push dword [esp + 0x18]
movdqa xmmword [esp + 0x5c], xmm3
call sub.msvcrt.dll_memcmp
movdqa xmm3, xmmword [esp + 0x5c]
movdqa xmm1, xmmword [esp + 0x3c]
mov edx, dword [esp + 0x24]
pcmpeqd xmm2, xmm2
add esp, 0xc
test eax, eax
jne 0x4a8def
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 4]
mov edx, dword [esp + 0xc]
neg edi
mov ecx, dword [esi + edi*4 - 4]
cmp edx, ecx
jbe 0x4a91e3
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x44], 0
mov dword [edx + eax*8 + 0x14], ecx
mov eax, dword [esi + edi*4 - 4]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi + 0x4c]
mov edi, dword [ecx + eax*4]
je 0x4a8f05
push dword [esp + 0x10]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esi + 0x40]
mov ecx, esi
mov edx, edi
push dword [eax + edi*4]
call fcn.004d8600
add esp, 4
mov ecx, esi
mov edx, eax
call fcn.004d8400
jmp 0x4a911b
mov ebx, dword [esp + 8]
mov eax, ebx
and eax, dword [esp + 0x20]
movdqu xmm0, xmmword [ecx + eax]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x4a8f42
mov esi, dword [esp + 0x1c]
jmp 0x4a8f64
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 4]
mov edx, 0x10
nop
add eax, edx
add edx, 0x10
and eax, ebx
movdqu xmm0, xmmword [edi + eax]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x4a8f50
bsf cx, cx
movzx ecx, cx
add ecx, eax
mov eax, dword [esp + 4]
and ecx, ebx
mov dl, byte [eax + ecx]
test dl, dl
js 0x4a8f9a
movdqa xmm0, xmmword [eax]
pmovmskb eax, xmm0
test eax, eax
je 0x4a8f8c
bsf ax, ax
jmp 0x4a8f90
mov ax, 0x10
mov edi, dword [esp + 4]
movzx ecx, ax
mov dl, byte [edi + ecx]
and dl, 1
cmp dword [esi + 0x28], 0
jne 0x4a8fab
test dl, dl
jne 0x4a9123
neg dl
lea eax, [ecx - 0x10]
mov edi, esi
movsx esi, dl
and eax, ebx
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x2c]
add esi, dword [edi + 0x28]
mov dword [edi + 0x28], esi
mov byte [ebx + ecx], dl
mov byte [eax + ebx + 0x10], dl
mov edx, dword [esp + 0xc]
not ecx
mov eax, dword [edi + 0x2c]
inc eax
mov dword [edi + 0x2c], eax
mov dword [ebx + ecx*4], edx
mov ecx, edx
lea edx, [edi + 0x30]
mov dword [esp + 8], edx
mov edx, dword [edi + 0x34]
cmp ecx, edx
jne 0x4a9072
mov ebx, dword [edi + 0x38]
add eax, esi
mov edx, ecx
sub eax, ebx
sub ecx, ebx
cmp ecx, eax
jae 0x4a9075
add eax, ebx
jb 0x4a91fa
mov edx, 0x18
mov edi, dword [esp + 0xc]
xor ecx, ecx
mul edx
setno cl
mov edx, eax
shl ecx, 2
mov eax, ecx
lea ecx, [edi*8]
test edi, edi
lea esi, [ecx + ecx*2]
je 0x4a9032
mov ecx, dword [esp + 8]
mov edi, dword [ecx]
lea ecx, [esp + 0x6c]
push 4
push esi
push edi
push eax
call fcn.005538a0
add esp, 0x10
cmp dword [esp + 0x6c], 1
je 0x4a91f2
mov eax, 0xaaaaaaab
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x1c]
mul dword [esp + 0x74]
mov dword [esi + 0x30], ecx
shr edx, 4
mov dword [esi + 0x34], edx
mov edi, dword [esp + 0x28]
cmp ebx, edx
je 0x4a907f
jmp 0x4a908d
mov ebx, dword [edi + 0x38]
mov esi, edi
mov edi, dword [esp + 0x28]
cmp ebx, edx
jne 0x4a908d
mov ecx, dword [esp + 8]
mov edx, ebx
call fcn.00556d70
mov ebx, dword [esi + 0x38]
mov eax, dword [esi + 0x30]
mov edx, dword [esp + 0x20]
lea ecx, [ebx + ebx*2]
inc ebx
mov dword [eax + ecx*8], edx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*8 + 4], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*8 + 8], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*8 + 0xc], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx*8 + 0x10], edx
mov dword [eax + ecx*8 + 0x14], edi
mov ecx, dword [esp + 0xc]
mov dword [esi + 0x38], ebx
cmp ebx, ecx
jbe 0x4a91d2
mov edx, dword [esi + 0x54]
mov edi, dword [esi + 0x58]
cmp edx, dword [esi + 0x50]
jne 0x4a90e4
lea ecx, [esi + 0x4c]
call fcn.00556e00
mov edx, dword [esi + 0x54]
mov eax, dword [esi + 0x4c]
mov dword [eax + edx*4], edi
inc edx
mov dword [esi + 0x54], edx
mov edx, dword [esi + 0x48]
cmp edx, dword [esi + 0x44]
jne 0x4a9101
lea ecx, [esi + 0x40]
call fcn.00556e00
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x40]
mov ecx, esi
mov dword [eax + edx*4], edi
inc edx
mov dword [esi + 0x48], edx
mov edx, edi
push edi
call fcn.004d8600
add esp, 4
inc dword [esi + 0x58]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov byte [esp + 8], dl
mov edx, dword [esp + 0x48]
lea ecx, [esp + 0x6c]
push dword [esp + 0xc]
push dword [esp + 0x18]
call fcn.0052e4b0
add esp, 8
mov ebx, dword [esi + 0x20]
mov ecx, dword [esi + 0x24]
mov eax, ebx
mov dword [esp + 4], ecx
and eax, dword [esp + 0x20]
movdqu xmm0, xmmword [ecx + eax]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x4a9184
mov edi, dword [esp + 4]
mov edx, 0x10
nop word cs:[eax + eax]
nop
add eax, edx
add edx, 0x10
and eax, ebx
movdqu xmm0, xmmword [edi + eax]
pmovmskb ecx, xmm0
test ecx, ecx
je 0x4a9170
bsf cx, cx
mov dl, byte [esp + 8]
movzx ecx, cx
add ecx, eax
mov eax, dword [esp + 4]
and ecx, ebx
cmp byte [eax + ecx], 0
js 0x4a8fab
movdqa xmm0, xmmword [eax]
pmovmskb eax, xmm0
test eax, eax
je 0x4a91b3
bsf ax, ax
jmp 0x4a91b7
mov ax, 0x10
movzx ecx, ax
jmp 0x4a8fab
mov edx, dword [esp + 0xc]
push 0x682b94
call fcn.0045a150
add esp, 4
ud2
mov edx, ebx
push 0x682bc4
call fcn.0045a150
add esp, 4
ud2
push 0x6852a4
call fcn.0045a150
add esp, 4
ud2
mov edx, dword [esp + 0x74]
test edx, edx
jne 0x4a9201
call fcn.0040a620
ud2
mov ecx, dword [esp + 0x70]
call fcn.0040a640
ud2