Function at 0x10099c30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x54
mov eax, dword [0x102220c0]
xor eax, esp
mov dword [esp + 0x50], eax
mov eax, dword [0x10241574]
push ebx
mov ebx, ecx
push esi
mov ecx, dword [eax]
mov dword [esp + 0x1c], ebx
push edi
test ecx, ecx
je 0x1009a6f4
mov eax, dword [ecx]
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x1009a6f4
mov eax, dword [0x10241574]
mov byte [0x10468274], 1
mov ecx, dword [eax]
call fcn.1007d610
mov ecx, dword [0x10240d9c]
mov eax, dword [eax]
mov dword [0x104681bc], eax
mov eax, dword [0x10241574]
mov esi, dword [eax]
mov eax, dword fs:[0x2c]
mov edi, dword [eax + ecx*4]
mov eax, dword [0x102416ec]
cmp eax, dword [edi + 4]
jle 0x10099ce9
push 0x102416ec
call fcn.101b57fd
add esp, 4
cmp dword [0x102416ec], 0xffffffff
jne 0x10099ce9
mov edx, 0xc60bf9f2
mov ecx, 0x1020360d
call fcn.1007d240
mov ecx, eax
call fcn.100cef40
push 0x102416ec
mov dword [0x10241640], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x10241640]
movq xmm0, qword [eax + esi]
mov eax, dword [eax + esi + 8]
mov dword [0x104681c8], eax
mov eax, dword [0x1023fc7c]
movq qword [0x104681c0], xmm0
mov eax, dword [eax + 0x84]
mov dword [eax], 0
mov eax, dword [0x1023fc7c]
mov ecx, dword [eax + 0x1f4]
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [ecx], eax
mov eax, dword [0x1023fc7c]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x1023fc88]
movss xmm0, dword [ecx + 0x10]
mov eax, dword [eax + 0x54]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [ecx + 0x14]
movss dword [esp + 0x28], xmm0
movd xmm0, dword [0x105340b4]
mov dl, byte [eax + 0xa]
mov al, byte [eax + 8]
cvtdq2ps xmm0, xmm0
mov byte [esp + 0x1b], al
mov byte [esp + 0x1a], dl
mulss xmm0, dword [ecx + 0x20]
movss dword [ecx + 0x10], xmm0
xorps xmm0, xmm0
mov eax, dword [0x1023fc88]
mov eax, dword [eax + 0x54]
cmp byte [eax + 0xb], 0
mov eax, dword [0x1023fc7c]
jne 0x10099d90
mov ecx, dword [eax + 0xc]
movss xmm0, dword [ecx + 0x20]
mov eax, dword [eax + 0xc]
movss dword [eax + 0x14], xmm0
mov eax, dword [0x1023fc88]
mov eax, dword [eax + 0x54]
mov byte [eax + 0xa], 0
mov eax, dword [0x1023fc88]
mov eax, dword [eax + 0x54]
mov byte [eax + 8], 1
mov eax, dword [0x10241574]
mov esi, dword [eax]
mov eax, dword [0x104681f4]
cmp eax, dword [edi + 4]
jle 0x10099e02
push 0x104681f4
call fcn.101b57fd
add esp, 4
cmp dword [0x104681f4], 0xffffffff
jne 0x10099e02
mov edx, 0xc60bf9f2
mov ecx, 0x10204f61
call fcn.1007d240
mov ecx, eax
call fcn.100cef40
push 0x104681f4
mov dword [0x104681ec], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x104681ec]
mov eax, dword [eax + esi]
mov esi, dword [ebx + 0x30]
mov dword [esp + 0x2c], eax
mov eax, dword [0x10241574]
mov ebx, dword [eax]
mov eax, dword [0x10468204]
cmp eax, dword [edi + 4]
jle 0x10099e62
push 0x10468204
call fcn.101b57fd
add esp, 4
cmp dword [0x10468204], 0xffffffff
jne 0x10099e62
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 0x44]
call eax
mov edx, 0x10204f00
mov ecx, eax
call fcn.1008ca10
push 0x10468204
mov dword [0x104681f8], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x104681f8]
mov eax, dword [eax + ebx]
mov ebx, eax
mov dword [esp + 0x1c], eax
xor ebx, esi
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [0x1046822c]
cmp eax, dword [edi + 4]
jle 0x10099ec9
push 0x1046822c
call fcn.101b57fd
add esp, 4
cmp dword [0x1046822c], 0xffffffff
jne 0x10099ec9
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov edx, str.m_afButtonLast
mov ecx, eax
call fcn.1008ca10
push 0x1046822c
mov dword [0x10468210], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x10468210]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx], edx
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [0x10468204]
cmp eax, dword [edi + 4]
jle 0x10099f30
push 0x10468204
call fcn.101b57fd
add esp, 4
cmp dword [0x10468204], 0xffffffff
jne 0x10099f30
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov edx, 0x10204f00
mov ecx, eax
call fcn.1008ca10
push 0x10468204
mov dword [0x104681f8], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x104681f8]
mov ecx, dword [esp + 0x14]
mov dword [eax + ecx], esi
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [0x10468230]
cmp eax, dword [edi + 4]
jle 0x10099f93
push 0x10468230
call fcn.101b57fd
add esp, 4
cmp dword [0x10468230], 0xffffffff
jne 0x10099f93
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov edx, str.m_afButtonPressed
mov ecx, eax
call fcn.1008ca10
push 0x10468230
mov dword [0x10468244], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x10468244]
mov ecx, ebx
mov edx, dword [esp + 0x14]
and ecx, esi
mov dword [edx + eax], ecx
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [0x10468228]
cmp eax, dword [edi + 4]
jle 0x10099ffa
push 0x10468228
call fcn.101b57fd
add esp, 4
cmp dword [0x10468228], 0xffffffff
jne 0x10099ffa
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov edx, str.m_afButtonReleased
mov ecx, eax
call fcn.1008ca10
push 0x10468228
mov dword [0x10468238], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x10468238]
not esi
mov ecx, dword [esp + 0x14]
and esi, ebx
push 0
mov dword [ecx + eax], esi
mov eax, dword [0x10241574]
mov ecx, dword [eax]
mov eax, dword [0x1023fc7c]
mov eax, dword [eax + 0x1e4]
call eax
test al, al
je 0x1009a035
mov eax, dword [0x10241574]
mov ecx, dword [eax]
mov eax, dword [ecx]
mov eax, dword [eax + 0x4f8]
call eax
mov eax, dword [0x1023fc88]
xor ebx, ebx
cmp dword [0x10240d90], 2
movq xmm0, qword [str.KOe_SRJL4_20D]
mov esi, dword [eax + 8]
mov eax, dword [0x102050a0]
mov dword [esp + 0x38], eax
mov al, byte [0x102050a4]
mov byte [esp + 0x3c], al
movq qword [esp + 0x30], xmm0
jl 0x1009a166
movaps xmm2, xmmword [0x102149a0]
mov ebx, 8
movaps xmm3, xmmword [0x10214e10]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm1, xmm3
pmuldq xmm0, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x10214a40]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmmword [0x102149e0]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x10214ac0]
movd xmm0, dword [str.KOe_SRJL4_20D]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x10214b30]
xorps xmm1, xmm0
movaps xmm0, xmm2
movd dword [esp + 0x30], xmm1
movaps xmm1, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm1, xmm3
pmuldq xmm0, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x10214a40]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x10214ac0]
movd xmm0, dword [esp + 0x34]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x10214b30]
xorps xmm1, xmm0
movd dword [esp + 0x34], xmm1
mov eax, 0x92492493
mov cl, 1
imul ebx
add edx, ebx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub cl, al
mov al, cl
shl al, 3
sub al, cl
shl al, 3
add al, bl
xor byte [esp + ebx + 0x30], al
inc ebx
cmp ebx, 0xd
jl 0x1009a166
mov eax, dword [esi]
lea ecx, [esp + 0x30]
push ecx
mov ecx, esi
mov eax, dword [eax + 0x3c]
call eax
mov ecx, dword [0x1023fc88]
movups xmm0, xmmword [str.KOeVUSaU5_2]
mov dword [esp + 0x1c], eax
mov esi, dword [ecx + 8]
mov cx, word [0x10205094]
mov word [esp + 0x58], cx
movups xmmword [esp + 0x40], xmm0
movq xmm0, qword [0x1020508c]
movq qword [esp + 0x50], xmm0
test ch, ch
je 0x1009a343
xor ebx, ebx
cmp dword [0x10240d90], 2
jl 0x1009a316
movaps xmm0, xmmword [0x10214b30]
lea edx, [esp + 0x44]
movaps xmm4, xmmword [0x102149a0]
movaps xmm3, xmmword [0x10214e10]
movaps xmm5, xmmword [0x10214a40]
movaps xmmword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x30]
movd xmm0, ebx
lea eax, [ebx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x10214ac0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [esp + ebx + 0x40]
xorps xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ebx + 0x40], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm5
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
andps xmm1, xmmword [0x10214ac0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebx + edx]
xorps xmm1, xmm0
movd dword [ebx + edx], xmm1
add ebx, 8
cmp ebx, 0x18
jl 0x1009a214
cmp ebx, 0x1a
jge 0x1009a343
mov eax, 0x92492493
mov cl, 1
imul ebx
add edx, ebx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub cl, al
mov al, cl
shl al, 3
sub al, cl
shl al, 3
add al, bl
xor byte [esp + ebx + 0x40], al
inc ebx
cmp ebx, 0x1a
jl 0x1009a316
mov eax, dword [esi]
lea ecx, [esp + 0x40]
push ecx
mov ecx, esi
mov eax, dword [eax + 0x3c]
call eax
mov edx, dword [esp + 0x20]
mov al, byte [edx + 0x34]
test al, al
je 0x1009a36c
movsx ecx, al
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov dword [eax + 0x320c], ecx
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov eax, dword [eax + 0x3344]
or dword [edx + 0x30], eax
mov eax, dword [0x10241574]
mov eax, dword [eax]
mov eax, dword [eax + 0x3340]
not eax
and eax, dword [edx + 0x30]
mov dword [edx + 0x30], eax
mov ecx, dword [0x10241574]
push eax
mov ecx, dword [ecx]
call fcn.10099160
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x28]
mov eax, dword [0x10241574]
mov edx, dword [ecx]
push dword [eax]
mov eax, dword [edx + 0xc]
call eax
mov eax, dword [0x1023fc88]
sub esp, 8
mov ecx, dword [eax + 0x54]
mov eax, dword [0x1023fc7c]
mov edx, dword [ecx]
mov eax, dword [eax + 0xc]
movss xmm0, dword [eax + 0x14]
mov eax, dword [0x10241574]
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push dword [eax]
mov eax, dword [edx + 0x48]
call eax
mov eax, dword [0x10241574]
push 0
mov esi, dword [eax]
mov ecx, esi
mov eax, dword [0x1023fc7c]
mov eax, dword [eax + 0x1e4]
call eax
test al, al
je 0x1009a40b
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x4f8]
call eax
mov eax, dword [0x10241574]
mov esi, dword [eax]
mov ebx, dword [esi + 0xfc]
cmp ebx, 0xffffffff
je 0x1009a453
test ebx, ebx
jle 0x1009a453
mov ecx, esi
call fcn.100994e0
cmp ebx, dword [eax]
jg 0x1009a453
mov dword [esi + 0xfc], 0xffffffff
mov ecx, esi
mov eax, dword [0x1023fc7c]
push 0
mov eax, dword [eax + 0x1e8]
call eax
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x22c]
call eax
mov eax, dword [0x1023fc7c]
mov ecx, dword [eax + 0x8c]
mov eax, dword [0x10241574]
mov edx, dword [ecx]
push dword [eax]
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x1023fc88]
mov ebx, dword [esp + 0x20]
mov ecx, dword [eax + 0x54]
mov eax, dword [0x1023fc7c]
mov edx, dword [ecx]
push dword [eax + 0x88]
push dword [eax + 0x8c]
mov eax, dword [0x10241574]
push ebx
push dword [eax]
mov eax, dword [edx + 0x50]
call eax
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x28]
mov eax, dword [0x1023fc7c]
mov edx, dword [ecx]
push dword [eax + 0x88]
mov eax, dword [0x10241574]
push dword [eax]
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x54]
mov eax, dword [0x1023fc7c]
mov edx, dword [ecx]
push dword [eax + 0x88]
mov eax, dword [0x10241574]
push ebx
push dword [eax]
mov eax, dword [edx + 0x54]
call eax
mov eax, dword [0x1023fc7c]
mov ecx, dword [eax + 0x8c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
mov eax, dword [0x10241574]
mov esi, dword [eax]
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x3c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
call eax
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x270]
call eax
test al, al
je 0x1009a570
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x550]
call eax
mov ecx, esi
call fcn.1007d610
test byte [eax], 1
je 0x1009a53b
mov ecx, esi
call fcn.100998d0
mov dword [eax], 0
mov ecx, esi
call fcn.10099470
cmp dword [eax], 0xffffffff
jne 0x1009a555
mov eax, dword [esi]
mov ecx, esi
push 0
mov eax, dword [eax + 0x36c]
call eax
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x370]
call eax
mov eax, dword [0x1023fc7c]
mov ecx, esi
mov eax, dword [eax + 0x1ec]
call eax
mov eax, dword [0x1023fc7c]
mov ecx, esi
mov eax, dword [eax + 0x1f0]
call eax
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x3c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x88]
call eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1009a5a0
mov dword [eax + 0x2c], 0
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x28]
mov eax, dword [0x10241574]
mov edx, dword [ecx]
push dword [eax]
mov eax, dword [edx + 0x10]
call eax
mov eax, dword [0x1023fc7c]
push 0
mov ecx, dword [eax + 0x8c]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov eax, dword [0x1023fc88]
mov ecx, dword [eax + 0x28]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
mov eax, dword [0x1023fc7c]
movss xmm0, dword [esp + 0x24]
mov cl, byte [esp + 0x1a]
mov eax, dword [eax + 0x84]
mov dword [eax], 0xffffffff
mov eax, dword [0x1023fc7c]
mov eax, dword [eax + 0x1f4]
mov dword [eax], 0
mov eax, dword [0x1023fc7c]
mov eax, dword [eax + 0xc]
movss dword [eax + 0x10], xmm0
mov eax, dword [0x1023fc7c]
movss xmm0, dword [esp + 0x28]
mov eax, dword [eax + 0xc]
movss dword [eax + 0x14], xmm0
mov eax, dword [0x1023fc88]
mov eax, dword [eax + 0x54]
mov byte [eax + 0xa], cl
mov eax, dword [0x1023fc88]
mov cl, byte [esp + 0x1b]
mov eax, dword [eax + 0x54]
mov byte [eax + 8], cl
mov eax, dword [0x10241574]
mov ecx, dword [eax]
mov eax, dword [ecx]
mov eax, dword [eax + 0x430]
call eax
mov esi, eax
test esi, esi
je 0x1009a6f4
mov ecx, dword [esi]
mov edx, dword [ecx + 0x71c]
mov ecx, esi
call edx
cmp eax, 9
je 0x1009a6f4
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x71c]
call eax
test eax, eax
je 0x1009a6f4
mov eax, dword [0x10241574]
mov ebx, dword [eax]
mov eax, dword [0x104681f4]
cmp eax, dword [edi + 4]
jle 0x1009a6d5
push 0x104681f4
call fcn.101b57fd
add esp, 4
cmp dword [0x104681f4], 0xffffffff
jne 0x1009a6d5
mov edx, 0xc60bf9f2
mov ecx, 0x10204f61
call fcn.1007d240
mov ecx, eax
call fcn.100cef40
push 0x104681f4
mov dword [0x104681ec], eax
call fcn.101b57ac
add esp, 4
mov eax, dword [0x104681ec]
mov ecx, dword [esp + 0x2c]
mov dword [ebx + eax], ecx
mov ecx, esi
mov eax, dword [esi]
mov eax, dword [eax + 0x790]
call eax
mov byte [0x10468274], 0
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.101b526a
mov esp, ebp
pop ebp
ret