Function at 0x10004200
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100689ec
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x68
mov eax, dword [0x10077008]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [0x10078874]
mov eax, dword [eax]
mov eax, dword [eax]
test eax, eax
je 0x10004b5e
cmp eax, 2
jne 0x10004277
cmp byte [edi], 0
jne 0x10004277
lea ecx, [ebp - 0x28]
mov byte [edi + 1], 1
call fcn.10061910
mov ecx, dword [eax]
mov dword [edi + 0x28], ecx
mov eax, dword [eax + 4]
mov dword [edi + 0x2c], eax
jmp 0x10004b5e
mov eax, dword [ebx + 8]
mov dword [edi + 4], eax
test eax, eax
je 0x10004b5e
call fcn.1005f100
mov dword [edi + 8], eax
test eax, eax
je 0x10004b5e
mov ecx, eax
call fcn.1005f5a0
cmp byte [eax], 0
jne 0x10004b5e
mov ecx, dword [edi + 8]
call fcn.1005ff10
mov dword [edi + 0xc], eax
test eax, eax
je 0x10004b5e
mov ecx, eax
call fcn.100663f0
test al, al
jne 0x10004b5e
mov eax, dword fs:[0x2c]
mov ecx, dword [0x1007885c]
mov esi, dword [edi + 0xc]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1007c968]
cmp eax, dword [ecx + 4]
jle 0x100043b5
push 0x1007c968
call fcn.10067831
add esp, 4
cmp dword [0x1007c968], 0xffffffff
jne 0x100043b5
mov dword [ebp - 4], 0
mov cl, 0x28
movaps xmm0, xmmword [0x10071680]
mov al, 0x1a
mov byte [ebp - 0x28], 0x77
mov dl, 0x1e
xor al, byte [ebp - 0x28]
mov ch, 0x1b
xor cl, byte [ebp - 0x28]
mov dh, dl
mov byte [ebp - 0x27], al
mov ah, 0x34
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
mov byte [ebp - 0x55], 7
xor ch, cl
mov al, byte [ebp - 0x55]
xor dl, cl
xor al, cl
mov byte [ebp - 0x56], 0x46
mov byte [ebp - 0x21], al
xor ah, cl
mov al, byte [ebp - 0x56]
xor dh, cl
xor al, cl
mov byte [ebp - 0x1f], 0
mov byte [ebp - 0x23], ch
xor ecx, ecx
mov byte [ebp - 0x25], dl
mov byte [ebp - 0x24], ah
mov byte [ebp - 0x22], dh
mov byte [ebp - 0x20], al
mov byte [ebp - 0x1f], 0
movups xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x30], 0x4b4a5544
mov byte [ebp - 0x2c], 0
mov al, byte [ebp - 0x40]
xor byte [ebp + ecx - 0x3f], al
inc ecx
cmp ecx, 0x13
jb 0x10004376
mov ecx, dword [0x1007c134]
lea eax, [ebp - 0x27]
push 0
push eax
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x2c], 0
push eax
call fcn.1005ee80
push 0x1007c968
mov dword [0x1007c934], eax
mov dword [ebp - 4], 0xffffffff
call fcn.100677f2
add esp, 4
mov eax, dword [0x1007c934]
cmp dword [esi + eax], 0
jne 0x100043e7
mov eax, dword [0x10078874]
mov eax, dword [eax]
cmp byte [eax + 0xb], 0
je 0x10004b5e
mov eax, dword [edi + 4]
and dword [eax + 0x24], 0xfffffffe
mov eax, dword [edi + 4]
or dword [eax + 0x24], 0x2000
jmp 0x10004b5e
mov ecx, dword [edi + 0xc]
call fcn.10066130
mov dword [edi + 0x10], eax
test eax, eax
je 0x10004b5e
cmp byte [edi + 1], 0
je 0x10004407
mov ecx, edi
call fcn.10004b80
push dword [edi + 0x14]
mov ecx, edi
call fcn.10004d60
test al, al
mov eax, dword [0x10078874]
je 0x10004b28
mov esi, dword [eax]
cmp dword [esi + 0x38], 0
je 0x1000444f
lea ecx, [edi + 0x28]
call fcn.10061990
mov dword [ebp - 0x44], eax
mov ecx, edx
mov eax, dword [esi + 0x38]
cdq
cmp ecx, edx
jl 0x10004b5e
jg 0x1000444a
cmp dword [ebp - 0x44], eax
jb 0x10004b5e
mov eax, dword [0x10078874]
cmp dword [esi + 0x34], 0
je 0x1000447b
mov esi, dword [eax]
lea ecx, [edi + 0x28]
call fcn.10061990
mov dword [ebp - 0x44], eax
mov ecx, edx
mov eax, dword [esi + 0x34]
cdq
cmp ecx, edx
jg 0x10004b5e
jl 0x1000447b
cmp dword [ebp - 0x44], eax
ja 0x10004b5e
cmp byte [esi + 0x14], 0
je 0x100044d0
mov eax, dword [ebx + 8]
movzx ecx, byte [eax + 0x34]
inc ecx
call fcn.10065400
movss xmm1, dword [0x10070eac]
movss xmm0, dword [0x10070fa0]
call fcn.10065510
movss xmm1, dword [edi + 0x18]
movaps xmm2, xmm0
movss xmm0, dword [edi + 0x20]
addss xmm1, xmm2
addss xmm0, xmm2
movss dword [edi + 0x18], xmm1
movss xmm1, dword [edi + 0x1c]
addss xmm1, xmm2
movss dword [edi + 0x20], xmm0
movss dword [edi + 0x1c], xmm1
mov ecx, dword [edi + 8]
lea eax, [ebp - 0x6c]
push eax
call fcn.10060030
movss xmm1, dword [edi + 0x1c]
movss xmm0, dword [edi + 0x18]
movss xmm2, dword [edi + 0x20]
subss xmm0, dword [eax]
subss xmm1, dword [eax + 4]
subss xmm2, dword [eax + 8]
mulss xmm0, xmm0
mulss xmm1, xmm1
mulss xmm2, xmm2
addss xmm0, xmm1
addss xmm0, xmm2
call fcn.10002bd0
mov ecx, dword [edi + 0x14]
movss dword [ebp - 0x44], xmm0
call fcn.1005f370
movss xmm0, dword [ebp - 0x44]
movss xmm1, dword [eax]
movss xmm2, dword [eax + 4]
movss xmm3, dword [eax + 8]
divss xmm1, xmm0
divss xmm2, xmm0
divss xmm3, xmm0
movss xmm0, dword [edi + 0x18]
addss xmm0, xmm1
movss dword [edi + 0x18], xmm0
movss xmm0, dword [edi + 0x1c]
addss xmm0, xmm2
movss dword [edi + 0x1c], xmm0
movss xmm0, dword [edi + 0x20]
addss xmm0, xmm3
movss dword [edi + 0x20], xmm0
mov ecx, dword [edi + 8]
call fcn.1005f370
movss xmm0, dword [ebp - 0x44]
movss xmm1, dword [eax]
movss xmm2, dword [eax + 4]
movss xmm3, dword [eax + 8]
lea eax, [ebp - 0x6c]
divss xmm1, xmm0
push eax
divss xmm2, xmm0
divss xmm3, xmm0
movss xmm0, dword [edi + 0x18]
subss xmm0, xmm1
movss dword [edi + 0x18], xmm0
movss xmm0, dword [edi + 0x1c]
subss xmm0, xmm2
movss dword [edi + 0x1c], xmm0
movss xmm0, dword [edi + 0x20]
subss xmm0, xmm3
movss dword [edi + 0x20], xmm0
mov ecx, dword [edi + 8]
call fcn.10060030
movss xmm0, dword [edi + 0x18]
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
subss xmm0, dword [eax]
mov dword [ebp - 0x48], 0
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [edi + 0x1c]
subss xmm0, dword [eax + 4]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [edi + 0x20]
subss xmm0, dword [eax + 8]
movss dword [ebp - 0x20], xmm0
call fcn.100291c0
lea edx, [ebp - 0x50]
lea ecx, [ebp - 0x28]
call fcn.10029420
lea ecx, [ebp - 0x50]
call fcn.10029270
mov esi, dword [0x10078874]
mov edx, dword [esi]
cmp byte [edx + 0x40], 0
je 0x100046b9
mov ecx, dword [edi + 8]
call fcn.1005f260
mov ecx, dword [edi + 8]
movss xmm0, dword [eax]
movss dword [ebp - 0x44], xmm0
movss xmm0, dword [eax + 4]
movss dword [ebp - 0x54], xmm0
call fcn.1005fbc0
mov esi, dword [0x10078874]
mov eax, dword [eax]
mov edx, dword [esi]
cmp eax, dword [edx + 0x44]
jl 0x100046b9
mov eax, dword [edx + 0x48]
movss xmm1, dword [0x10070f24]
movss xmm2, dword [ebp - 0x50]
test eax, eax
je 0x10004692
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
mulss xmm0, dword [ebp - 0x44]
subss xmm2, xmm0
movss dword [ebp - 0x50], xmm2
mov eax, dword [edx + 0x4c]
test eax, eax
je 0x100046be
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss xmm1, dword [ebp - 0x4c]
mulss xmm0, dword [ebp - 0x54]
subss xmm1, xmm0
movss dword [ebp - 0x4c], xmm1
jmp 0x100046c3
movss xmm2, dword [ebp - 0x50]
movss xmm1, dword [ebp - 0x4c]
mov eax, dword [edx + 0x20]
cmp eax, 1
jne 0x100047fc
mov eax, dword [edi + 4]
movss xmm5, dword [0x10070fb0]
movss xmm0, dword [ebp - 0x48]
movss xmm3, dword [0x10070f64]
subss xmm2, dword [eax + 0xc]
subss xmm1, dword [eax + 0x10]
subss xmm0, dword [eax + 0x14]
comiss xmm5, xmm2
jbe 0x10004709
nop dword [eax + eax]
addss xmm2, xmm3
comiss xmm5, xmm2
ja 0x10004700
movss xmm4, dword [0x10070f50]
comiss xmm2, xmm4
jbe 0x1000471f
subss xmm2, xmm3
comiss xmm2, xmm4
ja 0x10004716
comiss xmm5, xmm1
jbe 0x1000472d
addss xmm1, xmm3
comiss xmm5, xmm1
ja 0x10004724
comiss xmm1, xmm4
jbe 0x1000473b
subss xmm1, xmm3
comiss xmm1, xmm4
ja 0x10004732
comiss xmm5, xmm0
jbe 0x10004749
addss xmm0, xmm3
comiss xmm5, xmm0
ja 0x10004740
comiss xmm0, xmm4
jbe 0x10004759
nop
subss xmm0, xmm3
comiss xmm0, xmm4
ja 0x10004750
movss xmm3, dword [edx + 0x24]
xorps xmm4, xmm4
comiss xmm3, xmm4
movsd xmm6, qword [0x100719b0]
movss xmm5, dword [0x10070f40]
jbe 0x100047b3
comiss xmm4, xmm2
divss xmm3, xmm5
jbe 0x100047a5
xorps xmm0, xmm0
cvtss2sd xmm0, xmm2
andps xmm0, xmm6
cvtpd2ps xmm0, xmm0
comiss xmm3, xmm0
jbe 0x10004795
movaps xmm3, xmm0
movss xmm0, dword [eax + 0xc]
subss xmm0, xmm3
movss dword [ebp - 0x50], xmm0
jmp 0x100047b3
minss xmm2, xmm3
addss xmm2, dword [eax + 0xc]
movss dword [ebp - 0x50], xmm2
movss xmm2, dword [edx + 0x28]
comiss xmm2, xmm4
jbe 0x100048d4
comiss xmm4, xmm1
divss xmm2, xmm5
jbe 0x100047e9
xorps xmm0, xmm0
cvtss2sd xmm0, xmm1
andps xmm0, xmm6
cvtpd2ps xmm0, xmm0
comiss xmm2, xmm0
jbe 0x100048c6
movaps xmm2, xmm0
jmp 0x100048c6
minss xmm1, xmm2
addss xmm1, dword [eax + 0x10]
movss dword [ebp - 0x4c], xmm1
jmp 0x100048d4
cmp eax, 2
jne 0x100048d4
mov eax, dword [edi + 4]
movss xmm5, dword [0x10070fb0]
movss xmm3, dword [eax + 0xc]
movss xmm0, dword [eax + 0x14]
subss xmm3, xmm2
movss xmm2, dword [eax + 0x10]
subss xmm0, dword [ebp - 0x48]
subss xmm2, xmm1
movss xmm1, dword [0x10070f64]
comiss xmm5, xmm3
jbe 0x10004849
nop dword [eax]
addss xmm3, xmm1
comiss xmm5, xmm3
ja 0x10004840
movss xmm4, dword [0x10070f50]
comiss xmm3, xmm4
jbe 0x1000485f
subss xmm3, xmm1
comiss xmm3, xmm4
ja 0x10004856
comiss xmm5, xmm2
jbe 0x1000486d
addss xmm2, xmm1
comiss xmm5, xmm2
ja 0x10004864
comiss xmm2, xmm4
jbe 0x1000487b
subss xmm2, xmm1
comiss xmm2, xmm4
ja 0x10004872
comiss xmm5, xmm0
jbe 0x10004889
addss xmm0, xmm1
comiss xmm5, xmm0
ja 0x10004880
comiss xmm0, xmm4
jbe 0x10004899
nop
subss xmm0, xmm1
comiss xmm0, xmm4
ja 0x10004890
movss xmm0, dword [edx + 0x2c]
xorps xmm1, xmm1
comiss xmm0, xmm1
movss xmm4, dword [edx + 0x30]
jbe 0x100048bd
divss xmm3, xmm0
movss xmm0, dword [eax + 0xc]
subss xmm0, xmm3
movss dword [ebp - 0x50], xmm0
comiss xmm4, xmm1
jbe 0x100048d4
divss xmm2, xmm4
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm2
movss dword [ebp - 0x4c], xmm0
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x48], 0
call fcn.10029270
mov eax, dword [0x10078870]
cmp dword [eax + 0x2c], 2
jne 0x10004a97
mov ecx, dword [edi + 8]
call fcn.1005f260
movss xmm0, dword [eax]
addss xmm0, dword [ebp - 0x50]
movss dword [ebp - 0x54], xmm0
movss xmm0, dword [eax + 4]
lea eax, [ebp - 0x24]
addss xmm0, dword [ebp - 0x4c]
push eax
mov eax, dword [0x1007c124]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
movss dword [ebp - 0x44], xmm0
push dword [eax]
call dword [sym.imp.USER32.dll_ScreenToClient]
movss xmm0, dword [ebp - 0x54]
mulss xmm0, dword [0x10070dc0]
movss dword [ebp - 0x54], xmm0
call fcn.100041d0
movss dword [ebp - 0x60], xmm0
movss xmm0, dword [ebp - 0x54]
call fcn.10002bb0
movss dword [ebp - 0x5c], xmm0
movss xmm0, dword [ebp - 0x44]
mulss xmm0, dword [0x10070dc0]
movss dword [ebp - 0x44], xmm0
call fcn.100041d0
movss dword [ebp - 0x54], xmm0
movss xmm0, dword [ebp - 0x44]
call fcn.10002bb0
mov ecx, dword [edi + 8]
lea eax, [ebp - 0x78]
movaps xmm1, xmm0
movss xmm0, dword [ebp - 0x5c]
mulss xmm1, xmm0
push eax
movss dword [ebp - 0x5c], xmm1
movss xmm1, dword [ebp - 0x54]
mulss xmm1, xmm0
movss xmm0, dword [ebp - 0x60]
xorps xmm0, xmmword [0x100719c0]
movss dword [ebp - 0x54], xmm1
movss dword [ebp - 0x60], xmm0
call fcn.10060030
movss xmm2, dword [edi + 0x18]
movss xmm0, dword [edi + 0x1c]
movss xmm1, dword [edi + 0x20]
subss xmm0, dword [eax + 4]
subss xmm2, dword [eax]
subss xmm1, dword [eax + 8]
mulss xmm0, xmm0
mulss xmm2, xmm2
mulss xmm1, xmm1
addss xmm0, xmm2
addss xmm0, xmm1
call fcn.10002bd0
mov ecx, dword [edi + 8]
lea eax, [ebp - 0x38]
movaps xmm1, xmm0
mulss xmm1, dword [ebp - 0x5c]
push eax
movss dword [ebp - 0x5c], xmm1
movaps xmm1, xmm0
mulss xmm1, dword [ebp - 0x54]
movss dword [ebp - 0x44], xmm1
movss xmm1, dword [ebp - 0x60]
mulss xmm1, xmm0
movss dword [ebp - 0x60], xmm1
call fcn.10060030
movss xmm0, dword [ebp - 0x5c]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
addss xmm0, dword [eax]
mov dword [ebp - 0x48], 0
movss dword [ebp - 0x6c], xmm0
movss xmm0, dword [eax + 4]
addss xmm0, dword [ebp - 0x44]
movss dword [ebp - 0x68], xmm0
movss xmm0, dword [eax + 8]
addss xmm0, dword [ebp - 0x60]
movss dword [ebp - 0x64], xmm0
lea edx, [ebp - 0x50]
lea ecx, [ebp - 0x6c]
call fcn.10064170
test al, al
je 0x10004ad2
cvttss2si eax, dword [ebp - 0x4c]
sub eax, dword [ebp - 0x20]
push eax
cvttss2si eax, dword [ebp - 0x50]
sub eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_SetCursorPos]
jmp 0x10004ad2
mov eax, dword [edi + 4]
movss xmm0, dword [ebp - 0x50]
movss dword [eax + 0xc], xmm0
movss xmm0, dword [ebp - 0x4c]
movss dword [eax + 0x10], xmm0
movss xmm0, dword [ebp - 0x48]
movss dword [eax + 0x14], xmm0
cmp dword [edx + 0x64], 0
jne 0x10004ad8
mov ecx, dword [0x10078a9c]
mov eax, dword [edi + 4]
add eax, 0xc
push eax
mov edx, dword [ecx]
mov eax, dword [edx + 0x50]
call eax
mov esi, dword [0x10078874]
mov eax, dword [esi]
cmp byte [eax + 8], 0
je 0x10004af1
mov eax, dword [edi + 4]
and dword [eax + 0x24], 0xffffdfff
mov eax, dword [edi + 4]
or dword [eax + 0x24], 1
mov eax, dword [esi]
cmp byte [eax + 9], 0
je 0x10004b17
mov eax, dword [edi + 4]
mov dword [eax + 0x18], 0
mov eax, dword [edi + 4]
mov dword [eax + 0x1c], 0
mov eax, dword [edi + 4]
mov dword [eax + 0x20], 0
mov eax, dword [esi]
cmp byte [eax + 0xa], 0
je 0x10004b5e
mov eax, dword [edi + 4]
or dword [eax + 0x24], 4
jmp 0x10004b5e
mov eax, dword [eax]
cmp byte [eax + 0xc], 0
jne 0x10004b5e
cmp dword [eax + 0x3c], 0
je 0x10004b5a
lea ecx, [edi + 0x28]
call fcn.10061990
mov ecx, dword [0x10078874]
mov esi, edx
mov dword [ebp - 0x5c], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x3c]
cdq
cmp esi, edx
jl 0x10004b5e
jg 0x10004b5a
cmp dword [ebp - 0x5c], eax
jb 0x10004b5e
mov byte [edi + 1], 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100671ce
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4