Function at 0x4192d3
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x83c
push ebx
push esi
push edi
xor ebx, ebx
cmp dword [ebp + 8], ebx
mov edi, ecx
mov dword [ebp - 0x1c], edi
je 0x4197ef
cmp dword [ebp + 0x14], 0xff
jl 0x41930b
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00418e5e
jmp 0x4197ef
cmp dword [ebp + 0x14], 1
jl 0x4197ef
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x18], ebx
cmp eax, ebx
mov dword [ebp - 0x14], ebx
je 0x41932d
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], eax
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x419343
lea edi, [ebp - 0x10]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp + 8]
jmp 0x41936d
mov esi, dword [ebp + 8]
mov al, byte [esi + 0x42]
cmp al, bl
je 0x419352
mov ecx, dword [esi + 0x48]
jmp 0x419354
xor ecx, ecx
cmp al, bl
je 0x41935d
mov eax, dword [esi + 0x44]
jmp 0x41935f
xor eax, eax
push ecx
push eax
push ebx
lea eax, [ebp - 0x10]
push ebx
push eax
call dword [sym.imp.USER32.dll_SetRect]
cmp byte [esi + 0x42], bl
je 0x4197ef
cmp dword [esi + 0x4c], 0x20
jne 0x4197ef
mov cl, byte [edi + 0x42]
cmp cl, bl
je 0x41938c
mov eax, dword [edi + 0x4c]
jmp 0x41938e
xor eax, eax
cmp eax, 0x20
jne 0x4197ef
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x18]
sub eax, dword [ebp - 0x10]
add eax, esi
js 0x4197ef
cmp cl, bl
je 0x4193b1
mov eax, dword [edi + 0x44]
jmp 0x4193b3
xor eax, eax
cmp esi, eax
jg 0x4197ef
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
sub eax, dword [ebp - 0xc]
add eax, edx
js 0x4197ef
cmp cl, bl
je 0x4193d5
mov eax, dword [edi + 0x48]
jmp 0x4193d7
xor eax, eax
cmp edx, eax
jg 0x4197ef
cmp esi, ebx
jge 0x4193f5
sub dword [ebp - 0x10], esi
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 8]
mov dword [ebp - 0x18], ebx
jg 0x4197ef
cmp edx, ebx
jge 0x41940b
sub dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 4]
mov dword [ebp - 0x14], ebx
jg 0x4197ef
cmp dword [ebp - 0x10], ebx
jge 0x419419
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], ebx
sub dword [ebp - 0x18], eax
cmp dword [ebp - 0xc], ebx
jge 0x419427
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0xc], ebx
sub dword [ebp - 0x14], eax
cmp cl, bl
je 0x419430
mov eax, dword [edi + 0x44]
jmp 0x419432
xor eax, eax
mov edx, dword [ebp - 8]
sub edx, dword [ebp - 0x10]
add edx, dword [ebp - 0x18]
cmp edx, eax
jle 0x419453
cmp cl, bl
je 0x419448
mov eax, dword [edi + 0x44]
jmp 0x41944a
xor eax, eax
sub eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x10]
mov dword [ebp - 8], eax
cmp cl, bl
je 0x41945c
mov eax, dword [edi + 0x48]
jmp 0x41945e
xor eax, eax
mov edx, dword [ebp - 4]
sub edx, dword [ebp - 0xc]
add edx, dword [ebp - 0x14]
cmp edx, eax
jle 0x41947f
cmp cl, bl
je 0x419474
mov eax, dword [edi + 0x48]
jmp 0x419476
xor eax, eax
sub eax, dword [ebp - 0x14]
add eax, dword [ebp - 0xc]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
cmp dword [ebp - 0x10], eax
jge 0x4197ef
mov eax, dword [ebp - 4]
cmp dword [ebp - 0xc], eax
jge 0x4197ef
call fcn.0041aba0
test al, al
jne 0x4195ed
xor eax, eax
xor ecx, ecx
mov edx, ecx
add ecx, dword [ebp + 0x14]
sar edx, 8
mov dword [ebp + eax*4 - 0x43c], edx
inc eax
cmp eax, 0x100
jl 0x4194a8
push dword [ebp - 0x14]
mov ecx, edi
mov dword [ebp - 0x20], ebx
push dword [ebp - 0x18]
call fcn.00419f33
push dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov dword [ebp + 0x14], eax
push dword [ebp - 0x10]
call fcn.00419f33
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0xc], eax
jmp 0x4195df
mov eax, dword [ebp - 8]
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
pushfd
cld
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp - 0x14]
push ecx
lodsd eax, dword [esi]
mov edx, eax
mov ecx, eax
shr edx, 0x18
mov ebx, dword [ebp - 0x43c]
and eax, 0xff
mov edx, dword [ebx + edx*4]
mov ebx, dword [edi]
push edx
and ebx, 0xff
sub eax, ebx
imul dx
pop edx
sar eax, 8
add eax, ebx
and eax, 0xff
mov dword [ebp - 0x20], eax
mov eax, ecx
mov ebx, dword [edi]
shr eax, 8
mov ecx, eax
and eax, 0xff
shr ebx, 8
push edx
and ebx, 0xff
sub eax, ebx
imul dx
pop edx
sar eax, 8
add eax, ebx
and eax, 0xff
shl ax, 8
or dword [ebp - 0x20], eax
mov eax, ecx
mov ebx, dword [edi]
shr eax, 8
mov ecx, eax
and eax, 0xff
shr ebx, 0x10
push edx
and ebx, 0xff
sub eax, ebx
imul dx
pop edx
sar eax, 8
add eax, ebx
and eax, 0xff
shl eax, 0x10
or dword [ebp - 0x20], eax
shr ecx, 8
mov ebx, dword [edi]
mov eax, ecx
and eax, 0xff
shr ebx, 0x18
and ebx, 0xff
sub eax, ebx
imul dx
sar eax, 8
add eax, ebx
and eax, 0xff
shl eax, 0x18
or eax, dword [ebp - 0x20]
stosd dword es:[edi], eax
pop ecx
dec ecx
je 0x4195c6
jmp 0x419502
popfd
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x54]
add dword [ebp + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x54]
add dword [ebp + 0x10], eax
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp - 4]
jl 0x4194ee
jmp 0x4197ef
xor eax, eax
xor ecx, ecx
mov edx, ecx
add ecx, dword [ebp + 0x14]
xor dl, dl
mov dword [ebp + eax*8 - 0x83c], ebx
shl edx, 8
mov dword [ebp + eax*8 - 0x838], edx
inc eax
cmp eax, 0x100
jl 0x4195f1
push dword [ebp - 0x14]
mov eax, 0xff000000
mov ecx, edi
mov dword [ebp - 0x34], eax
push dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], 0xff0000
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], 0xffff0000
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], 0x10000
call fcn.00419f33
push dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov dword [ebp + 0x14], eax
push dword [ebp - 0x10]
call fcn.00419f33
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp + 0xc], eax
jmp 0x4197e4
mov eax, dword [ebp - 8]
sub eax, dword [ebp - 0x10]
cmp eax, 1
mov dword [ebp - 0x14], eax
jl 0x4197ed
mov ecx, dword [ebp - 0x14]
mov eax, 8
push ecx
mov esi, dword [ebp + 0x10]
shr ecx, 1
mov edi, dword [ebp + 0x14]
lea ebx, [ebp - 0x83c]
je 0x41975a
movq mm0, qword [esi]
movq mm3, qword [ebp - 0x3c]
movq mm7, mm0
pand mm0, qword [ebp - 0x34]
movd edx, mm0
psrlq mm0, 0x35
shr edx, 0x15
movq mm6, qword [ebp - 0x2c]
movq mm4, qword [ebx + edx]
movd edx, mm0
movq mm5, qword [ebx + edx]
movq mm2, mm4
movq mm0, mm5
pcmpeqw mm4, mm6
pcmpeqw mm5, mm6
pand mm4, mm3
pand mm5, mm3
pxor mm4, mm3
pxor mm5, mm3
paddw mm4, qword [ebp - 0x24]
paddw mm5, qword [ebp - 0x24]
paddw mm4, mm2
paddw mm5, mm0
psrlq mm4, 0x10
psrlq mm5, 0x10
movq mm6, mm4
movq mm0, mm5
psrlq mm6, 0x10
psrlq mm0, 0x10
por mm4, mm6
por mm5, mm0
psrlq mm6, 0x10
psrlq mm0, 0x10
por mm4, mm6
por mm5, mm0
por mm4, qword [ebp - 0x24]
por mm5, qword [ebp - 0x24]
movq mm0, mm7
pxor mm7, mm7
movq mm2, qword [edi]
movq mm1, mm0
punpcklbw mm0, mm7
punpckhbw mm1, mm7
movq mm3, mm2
punpcklbw mm2, mm7
punpckhbw mm3, mm7
psubw mm0, mm2
psubw mm1, mm3
pmullw mm0, mm4
pmullw mm1, mm5
psrlw mm0, 8
psrlw mm1, 8
paddb mm0, mm2
paddb mm1, mm3
add esi, eax
packuswb mm0, mm1
movq qword [edi], mm0
add edi, eax
dec ecx
jne 0x419695
pop eax
shr eax, 1
jae 0x4197cc
movd mm0, dword [esi]
movq mm3, qword [ebp - 0x3c]
movq mm7, mm0
pand mm0, qword [ebp - 0x34]
movd edx, mm0
shr edx, 0x15
movq mm6, qword [ebp - 0x2c]
movq mm4, qword [ebx + edx]
movq mm2, mm4
pcmpeqw mm4, mm6
pand mm4, mm3
pxor mm4, mm3
paddw mm4, qword [ebp - 0x24]
paddw mm4, mm2
psrlq mm4, 0x10
movq mm6, mm4
psrlq mm6, 0x10
por mm4, mm6
psrlq mm6, 0x10
por mm4, mm6
por mm4, qword [ebp - 0x24]
movq mm0, mm7
pxor mm7, mm7
movd mm2, dword [edi]
punpcklbw mm0, mm7
movq mm3, mm2
punpcklbw mm2, mm7
psubw mm0, mm2
pmullw mm0, mm4
psrlw mm0, 8
paddb mm0, mm2
packuswb mm0, mm0
movd dword [edi], mm0
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x54]
add dword [ebp + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x54]
add dword [ebp + 0x10], eax
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp - 4]
jl 0x419666
emms
pop edi
pop esi
pop ebx
leave
ret 0x10