Function at 0x10041060
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100c2586
mov eax, dword fs:[0]
push eax
sub esp, 0xb8
mov eax, dword [0x100e2040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x1c], esi
mov edi, dword [esi + 0x1c]
mov eax, dword [edi]
sub eax, 0
je 0x100410b8
sub eax, 1
je 0x100410a7
xor ecx, ecx
xor edx, edx
jmp 0x100410c4
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x18]
add ecx, 0x8c
add edx, 0x14
jmp 0x100410c4
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x18]
add ecx, 0x64
add edx, 0xa
mov eax, dword [esi + 4]
add edx, dword [esi + 8]
add eax, ecx
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x18], eax
lea eax, [esi + 0x70]
mov edi, dword [ebp - 0x18]
push 0
push eax
push ecx
mov eax, esp
mov dword [ebp - 0x24], edx
mov byte [eax + 3], cl
mov ecx, 0x101246f8
mov word [eax], 0xcdcd
mov byte [eax + 2], 0xcd
lea eax, [edx - 2]
push eax
lea eax, [edi + 0xc]
push eax
call fcn.100afac0
mov ecx, dword [ebp - 0x1c]
mov esi, dword [esi + 0xc]
add esi, edi
mov word [ebp - 0x14], 0
mov byte [ebp - 0x12], 0
mov eax, dword [ecx + 0x1c]
mov ecx, dword [0x10120f2c]
lea edi, [esi - 0x14]
mov eax, dword [eax + 0xc]
mov byte [ebp - 0x11], al
mov eax, dword [ecx]
push dword [ebp - 0x14]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x48]
mov eax, dword [ebp - 0x24]
add eax, 8
push eax
push esi
mov esi, dword [ebp - 0x24]
push esi
push edi
call edx
mov ecx, dword [ebp - 0x1c]
lea edi, [esi + 7]
mov esi, dword [ebp - 0x18]
add esi, 0xffffffed
mov eax, dword [ecx + 0x88]
add esi, dword [ecx + 0xc]
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx + 0x1c]
mov ecx, dword [0x10120f2c]
mov al, byte [eax + 0xc]
mov byte [ebp - 0x29], al
mov eax, dword [ecx]
push dword [ebp - 0x2c]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [0x10120f2c]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
lea eax, [esi + 0x12]
push eax
mov eax, dword [ebp - 0x24]
inc eax
push eax
push esi
call edx
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
add esi, 0xffffffed
mov word [ebp - 0x14], 0x3232
mov byte [ebp - 0x12], 0x23
mov eax, dword [ecx + 0x1c]
add esi, dword [ecx + 0xc]
mov eax, dword [eax + 0xc]
mov byte [ebp - 0x11], al
mov ecx, dword [0x10120f2c]
push dword [ebp - 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [0x10120f2c]
push 0
push 0x96
push 0
mov eax, dword [ecx]
push edi
mov edx, dword [eax + 0x1ec]
lea eax, [esi + 0x12]
push eax
mov eax, dword [ebp - 0x24]
inc eax
push eax
push esi
call edx
mov edi, dword [ebp - 0x1c]
cmp byte [edi + 0x6c], 0
je 0x10041e29
mov eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
add ecx, 0xc
add eax, 0xa
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0x10]
add eax, ecx
mov ecx, dword [0x10120f2c]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0x1c]
mov edi, dword [ebp - 0x18]
dec edi
mov edx, dword [eax + 0xc]
mov eax, dword [ecx]
mov esi, dword [eax + 0x38]
movzx eax, dl
shl eax, 0x18
or eax, 0x3c3c3c
push eax
call esi
mov ecx, dword [0x10120f2c]
mov esi, dword [ebp - 0x3c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x2c]
add eax, 2
add eax, esi
push eax
mov eax, dword [ebp - 0x14]
add eax, 2
add eax, edi
push eax
push esi
push edi
call edx
mov ecx, dword [ebp - 0x1c]
lea edi, [esi + 1]
mov eax, dword [ecx + 0x1c]
mov ecx, dword [0x10120f2c]
mov edx, dword [eax + 0xc]
mov eax, dword [ecx]
mov esi, dword [eax + 0x38]
movzx eax, dl
shl eax, 0x18
or eax, 0x282828
push eax
call esi
mov ecx, dword [0x10120f2c]
mov esi, dword [ebp - 0x18]
add esi, dword [ebp - 0x14]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x2c]
add eax, edi
push eax
push esi
push edi
mov edi, dword [ebp - 0x18]
push edi
call edx
mov edx, dword [ebp - 0x1c]
mov ecx, dword [0x10120f2c]
mov esi, dword [edx + 0xc]
lea eax, [esi - 8]
add esi, 0xffffffea
movd xmm0, eax
mov eax, dword [edx + 0x10]
cvtdq2ps xmm0, xmm0
add eax, 2
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x3c]
add esi, 5
movss dword [ebp - 0x30], xmm0
movd xmm0, eax
mov eax, dword [ebp - 0x14]
cvtdq2ps xmm0, xmm0
add eax, 0xfffffff2
add edi, eax
mov eax, dword [ecx]
movss dword [ebp - 0x38], xmm0
push dword [edx + 0x88]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
cvttss2si eax, dword [ebp - 0x38]
add esi, eax
add eax, edi
push esi
push eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x3c]
add eax, 5
mov dword [ebp - 0x28], esi
push eax
push edi
call edx
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx + 0x1c]
mov ecx, dword [0x10120f2c]
mov edx, dword [eax + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax + 0x38]
movzx eax, dl
shl eax, 0x18
or eax, 0x1a1a1a
push eax
call edi
mov ecx, dword [0x10120f2c]
mov edx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x34]
mov eax, dword [ecx]
add edx, 5
mov esi, dword [ebp - 0x18]
push edx
mov edx, dword [ebp - 0x14]
add esi, 0xfffffff2
mov eax, dword [eax + 0x48]
add edx, esi
push edx
call eax
mov esi, dword [ebp - 0x20]
xorps xmm0, xmm0
mov eax, dword [ebp - 0x18]
movss xmm2, dword [0x100d6224]
movd xmm3, esi
cvtdq2ps xmm3, xmm3
lea ecx, [eax + 4]
mov dword [ebp - 0x40], ecx
comiss xmm3, xmm0
jbe 0x100413f8
movaps xmm1, xmm2
mov dword [ebp - 0x14], ecx
divss xmm1, xmm3
mov edi, ecx
mov ecx, 0xfffffffc
sub ecx, eax
mov dword [ebp - 0x34], ecx
movss dword [ebp - 0x54], xmm1
mulss xmm1, xmm0
lea ecx, [ebp - 0x44]
movaps xmm3, xmm2
call fcn.10040f10
mov ecx, dword [0x10120f2c]
push dword [eax]
mov edx, dword [ecx]
mov edx, dword [edx + 0x38]
call edx
mov ecx, dword [0x10120f2c]
inc edi
push dword [ebp - 0x28]
mov edx, dword [ebp - 0x3c]
push edi
mov eax, dword [ecx]
add edx, 5
push edx
push dword [ebp - 0x14]
mov eax, dword [eax + 0x40]
call eax
mov eax, dword [ebp - 0x34]
mov esi, dword [ebp - 0x20]
add eax, edi
movss xmm2, dword [0x100d6224]
mov dword [ebp - 0x14], edi
movd xmm0, eax
movd xmm1, esi
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
movss xmm1, dword [ebp - 0x54]
ja 0x10041391
jmp 0x100413fb
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [0x10120f2c]
mov eax, dword [eax + 0x1c]
mov edx, dword [eax + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax + 0x38]
movzx eax, dl
shl eax, 0x18
or eax, 0x3c3c3c
push eax
call edi
mov ecx, dword [0x10120f2c]
push dword [ebp - 0x28]
mov edi, dword [ebp - 0x40]
movd xmm0, esi
mov eax, dword [ecx]
cvtdq2ps xmm0, xmm0
mov edx, dword [eax + 0x48]
cvttss2si eax, xmm0
add eax, edi
push eax
mov eax, dword [ebp - 0x3c]
add eax, 5
push eax
push edi
call edx
movd xmm4, dword [ebp - 0x2c]
xor edx, edx
movss xmm6, dword [ebp - 0x38]
xorps xmm5, xmm5
movss xmm3, dword [ebp - 0x30]
comiss xmm3, xmm5
mov dword [ebp - 0x2c], edx
cvtdq2ps xmm4, xmm4
subss xmm4, xmm6
subss xmm4, dword [0x100d62d8]
movss dword [ebp - 0x28], xmm4
jbe 0x100416bd
mov esi, dword [ebp - 0x1c]
xorps xmm0, xmm0
comiss xmm4, xmm5
mov dword [ebp - 0x54], 0
jbe 0x100416a7
movss xmm1, dword [0x100d6224]
movaps xmm2, xmm5
mov eax, dword [ebp - 0x18]
divss xmm0, xmm3
mov ecx, dword [ebp - 0x40]
lea edi, [eax + 7]
add edi, edx
add ecx, edx
mov dword [ebp - 0x50], ecx
movaps xmm3, xmm1
movss dword [ebp - 0x34], xmm2
divss xmm3, xmm4
movss dword [ebp - 0x5c], xmm0
movss dword [ebp - 0x44], xmm3
comiss xmm5, xmm0
jbe 0x100414cf
movaps xmm7, xmm5
jmp 0x100414d6
movaps xmm7, xmm0
minss xmm7, xmm1
movaps xmm0, xmm3
movaps xmm3, xmm1
mulss xmm0, xmm2
subss xmm3, xmm0
comiss xmm5, xmm3
jbe 0x100414ee
movaps xmm3, xmm5
jmp 0x100414f2
minss xmm3, xmm1
mov ecx, dword [esi + 0xc]
add eax, 0xfffffffd
add eax, ecx
mov dword [ebp - 0x4c], 3
mov dword [ebp - 0x14], 3
cmp edi, eax
jle 0x10041514
sub ecx, edx
sub ecx, 8
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp - 0x24]
mov edi, dword [esi + 0x10]
add eax, 0xe
add eax, edi
movd xmm1, eax
cvtdq2ps xmm1, xmm1
addss xmm1, xmm6
addss xmm1, dword [0x100d62ac]
addss xmm2, xmm1
addss xmm1, xmm4
movaps xmm0, xmm2
addss xmm0, dword [0x100d629c]
comiss xmm0, xmm1
jbe 0x10041555
subss xmm1, xmm2
cvttss2si eax, xmm1
mov dword [ebp - 0x14], eax
movzx eax, byte [esi + 0x8a]
movss xmm0, dword [0x100d6128]
movd xmm6, eax
movzx eax, byte [esi + 0x89]
cvtdq2ps xmm6, xmm6
movd xmm2, eax
movzx eax, byte [esi + 0x88]
cvtdq2ps xmm2, xmm2
movd xmm4, eax
cvtdq2ps xmm4, xmm4
mulss xmm6, xmm0
mulss xmm2, xmm0
mulss xmm4, xmm0
comiss xmm6, xmm2
jbe 0x100415a9
movss xmm5, dword [0x100d640c]
movaps xmm0, xmm6
movaps xmm6, xmm2
movaps xmm2, xmm0
comiss xmm2, xmm4
jbe 0x100415c6
movaps xmm0, xmm4
movaps xmm4, xmm2
movaps xmm2, xmm0
movss xmm0, dword [0x100d63f8]
subss xmm0, xmm5
movaps xmm5, xmm0
movaps xmm1, xmm2
subss xmm2, xmm6
minss xmm1, xmm6
subss xmm4, xmm1
mulss xmm4, dword [0x100d62b4]
addss xmm4, dword [0x100d6108]
divss xmm2, xmm4
addss xmm2, xmm5
movaps xmm0, xmm2
call fcn.10025f10
movaps xmm2, xmm7
lea ecx, [ebp - 0x7c]
movaps xmm1, xmm0
call fcn.10040f10
mov eax, dword [ebp - 0x24]
mov ecx, dword [0x10120f2c]
add eax, 0x10
add eax, edi
push dword [ebp - 0x7c]
movd xmm0, eax
mov eax, dword [ecx]
cvtdq2ps xmm0, xmm0
mov eax, dword [eax + 0x38]
addss xmm0, dword [ebp - 0x38]
addss xmm0, dword [0x100d62ac]
addss xmm0, dword [ebp - 0x34]
cvttss2si edi, xmm0
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x14]
add eax, edi
push eax
mov eax, dword [ebp - 0x4c]
add eax, dword [ebp - 0x50]
push eax
push edi
push dword [ebp - 0x50]
call edx
mov ecx, dword [ebp - 0x54]
xorps xmm5, xmm5
mov edx, dword [ebp - 0x2c]
add ecx, 3
mov eax, dword [ebp - 0x18]
movss xmm4, dword [ebp - 0x28]
movss xmm1, dword [0x100d6224]
movss xmm0, dword [ebp - 0x5c]
lea edi, [edx + 7]
movss xmm6, dword [ebp - 0x38]
lea edi, [edi + eax]
movss xmm3, dword [ebp - 0x44]
mov esi, dword [ebp - 0x1c]
movd xmm2, ecx
cvtdq2ps xmm2, xmm2
mov dword [ebp - 0x54], ecx
comiss xmm4, xmm2
movss dword [ebp - 0x34], xmm2
ja 0x100414c5
movss xmm3, dword [ebp - 0x30]
add edx, 3
mov dword [ebp - 0x2c], edx
movd xmm0, edx
cvtdq2ps xmm0, xmm0
comiss xmm3, xmm0
ja 0x10041480
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x24]
add edi, 0x1c
mov eax, dword [ecx + 0x1c]
add edi, dword [ecx + 0x10]
mov ecx, dword [0x10120f2c]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x18]
add eax, 4
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x44]
movzx eax, al
shl eax, 0x18
or eax, 0x3c3c3c
push eax
call edx
mov ecx, dword [0x10120f2c]
movss xmm0, dword [ebp - 0x28]
addss xmm0, dword [0x100d6224]
mov eax, dword [ecx]
mov edx, dword [eax + 0x48]
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0x30]
addss xmm0, dword [0x100d6278]
add eax, edi
push eax
cvttss2si eax, xmm0
add eax, dword [ebp - 0x2c]
push eax
push edi
push dword [ebp - 0x2c]
call edx
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x24]
add edx, 0x1b
mov eax, dword [ecx + 0x10]
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebp - 0x28]
addss xmm0, dword [0x100d629c]
cvttss2si eax, xmm0
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x1c]
mov ecx, dword [eax + 0xc]
mov eax, dword [0x10120f2c]
movzx edx, cl
mov ecx, dword [ebp - 0x1c]
shl edx, 8
mov eax, dword [eax]
mov edi, dword [eax + 0x38]
movzx eax, byte [ecx + 0x8a]
or edx, eax
movzx eax, byte [ecx + 0x89]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 0x88]
mov ecx, dword [0x10120f2c]
shl edx, 8
or edx, eax
push edx
call edi
mov ecx, dword [0x10120f2c]
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [0x100d6278]
mov edi, dword [ebp - 0x14]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
cvttss2si eax, xmm0
add edi, eax
cvttss2si eax, dword [ebp - 0x30]
push edi
mov dword [ebp - 0x44], edi
add eax, dword [ebp - 0x40]
push eax
push dword [ebp - 0x14]
mov dword [ebp - 0x5c], eax
push dword [ebp - 0x40]
call edx
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx + 0x1c]
mov ecx, dword [0x10120f2c]
mov edx, dword [eax + 0xc]
mov eax, dword [ecx]
mov edi, dword [eax + 0x38]
movzx eax, dl
shl eax, 0x18
or eax, 0x3c3c3c
push eax
call edi
push dword [ebp - 0x44]
mov ecx, dword [0x10120f2c]
push dword [ebp - 0x5c]
push dword [ebp - 0x14]
mov eax, dword [ecx]
push dword [ebp - 0x40]
mov eax, dword [eax + 0x48]
call eax
mov edi, dword [ebp - 0x1c]
mov eax, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov esi, dword [ebp - 0x20]
cmp byte [edi + 0xb0], 0
je 0x1004196f
push 1
call eax
test ax, ax
je 0x10041963
movd xmm0, dword [ebp - 0x2c]
movd xmm1, dword [0x100f8878]
mov eax, dword [ebp - 0x3c]
cvtdq2ps xmm0, xmm0
add eax, 5
cvtdq2ps xmm1, xmm1
movd xmm2, eax
comiss xmm1, xmm0
cvtdq2ps xmm2, xmm2
jbe 0x1004196a
movd xmm3, esi
cvtdq2ps xmm3, xmm3
addss xmm0, xmm3
comiss xmm0, xmm1
jbe 0x1004196a
movd xmm1, dword [0x100f887c]
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm2
jbe 0x1004196a
movss xmm0, dword [ebp - 0x38]
addss xmm0, xmm2
comiss xmm0, xmm1
jbe 0x1004196a
movss xmm3, dword [edi + 0xac]
lea ecx, [ebp - 0x44]
movss xmm2, dword [edi + 0xa8]
movss xmm1, dword [edi + 0xa4]
call fcn.10040f10
movzx ecx, byte [edi + 0x8b]
mov edx, eax
xorps xmm0, xmm0
mov al, byte [edx]
movd xmm1, ecx
movzx ecx, byte [edx + 3]
cvtdq2ps xmm1, xmm1
mov byte [ebp - 0x20], al
mov al, byte [edx + 1]
mov byte [ebp - 0x1f], al
mov al, byte [edx + 2]
mov byte [ebp - 0x1e], al
maxss xmm1, xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
minss xmm1, dword [0x100d6224]
mulss xmm0, xmm1
movd xmm1, esi
cvtdq2ps xmm1, xmm1
cvttss2si ecx, xmm0
mov byte [ebp - 0x1d], cl
mov eax, dword [ebp - 0x20]
mov dword [edi + 0x88], eax
mov eax, dword [0x100f8878]
sub eax, dword [ebp - 0x18]
sub eax, 4
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x98], xmm0
mov eax, dword [0x100f887c]
sub eax, dword [ebp - 0x3c]
sub eax, 5
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x9c], xmm0
mov eax, dword [0x100f8878]
sub eax, dword [ebp - 0x18]
add eax, 4
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [edi + 0xa4], xmm0
jmp 0x1004196a
mov byte [edi + 0xb0], 0
mov eax, dword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp byte [edi + 0xb3], 0
je 0x10041a4f
push 1
call eax
test ax, ax
je 0x10041a3c
mov edx, dword [ebp - 0x40]
mov eax, dword [0x100f8878]
mov ecx, dword [ebp - 0x14]
movss xmm2, dword [ebp - 0x38]
subss xmm2, dword [0x100d6278]
movd xmm3, edx
movd xmm4, eax
cvtdq2ps xmm3, xmm3
cvtdq2ps xmm4, xmm4
movd xmm1, ecx
comiss xmm4, xmm3
cvtdq2ps xmm1, xmm1
jbe 0x10041a4f
movss xmm5, dword [ebp - 0x30]
movaps xmm0, xmm5
addss xmm0, xmm3
comiss xmm0, xmm4
jbe 0x10041a4f
movd xmm0, dword [0x100f887c]
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x10041a4f
addss xmm1, xmm2
comiss xmm1, xmm0
jbe 0x10041a4f
sub eax, edx
jns 0x100419f5
xor eax, eax
jmp 0x100419ff
mov edx, 0xff
cmp eax, edx
cmovg eax, edx
movd xmm1, eax
cvtdq2ps xmm1, xmm1
movss dword [edi + 0xb4], xmm1
mov eax, dword [0x100f8878]
divss xmm1, xmm5
sub eax, ecx
movd xmm0, eax
mulss xmm1, dword [0x100d6394]
cvtdq2ps xmm0, xmm0
cvttss2si eax, xmm1
movss dword [edi + 0xb8], xmm0
mov byte [edi + 0x8b], al
jmp 0x10041a4f
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10041a4f
mov byte [edi + 0xb3], al
cmp byte [edi + 0xb1], 0
je 0x10041c09
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
movss xmm3, dword [ebp - 0x30]
test ax, ax
je 0x10041bf3
mov eax, dword [edi + 0x10]
movd xmm2, dword [0x100f8878]
add eax, 0x10
add eax, edx
cvtdq2ps xmm2, xmm2
movd xmm0, eax
lea eax, [ecx + 4]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
addss xmm0, dword [ebp - 0x38]
cvtdq2ps xmm1, xmm1
addss xmm0, dword [0x100d62ac]
comiss xmm2, xmm1
movss dword [ebp - 0x44], xmm0
jbe 0x10041bfa
addss xmm1, xmm3
comiss xmm1, xmm2
movss xmm1, dword [ebp - 0x28]
jbe 0x10041c04
movd xmm2, dword [0x100f887c]
cvtdq2ps xmm2, xmm2
comiss xmm2, xmm0
jbe 0x10041c04
addss xmm0, xmm1
comiss xmm0, xmm2
jbe 0x10041c04
movss xmm3, dword [edi + 0xac]
lea ecx, [ebp - 0x5c]
movss xmm2, dword [edi + 0xa8]
movss xmm1, dword [edi + 0xa4]
call fcn.10040f10
movzx ecx, byte [edi + 0x8b]
mov edx, eax
movss xmm3, dword [0x100d6224]
xorps xmm2, xmm2
mov al, byte [edx]
movd xmm1, ecx
movzx ecx, byte [edx + 3]
cvtdq2ps xmm1, xmm1
mov byte [ebp - 0x20], al
mov al, byte [edx + 1]
mov byte [ebp - 0x1f], al
mov al, byte [edx + 2]
movd xmm0, ecx
maxss xmm1, xmm2
mov byte [ebp - 0x1e], al
cvtdq2ps xmm0, xmm0
minss xmm1, xmm3
mulss xmm0, xmm1
cvttss2si ecx, xmm0
mov byte [ebp - 0x1d], cl
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x88], eax
mov eax, dword [0x100f8878]
sub eax, ecx
sub eax, 4
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [ebp - 0x30]
comiss xmm2, xmm0
jbe 0x10041b80
xorps xmm0, xmm0
jmp 0x10041b84
minss xmm0, xmm3
movss xmm1, dword [ebp - 0x28]
movaps xmm4, xmm3
movss dword [edi + 0xa8], xmm0
movd xmm0, dword [0x100f887c]
cvtdq2ps xmm0, xmm0
subss xmm0, dword [ebp - 0x44]
divss xmm0, xmm1
subss xmm4, xmm0
comiss xmm2, xmm4
jbe 0x10041bb6
xorps xmm4, xmm4
jmp 0x10041bba
minss xmm4, xmm3
mov edx, dword [ebp - 0x24]
movss dword [edi + 0xac], xmm4
mov eax, dword [0x100f887c]
sub eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x94], xmm0
mov eax, dword [0x100f8878]
sub eax, ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [edi + 0x90], xmm0
jmp 0x10041c17
mov byte [edi + 0xb1], 0
movss xmm1, dword [ebp - 0x28]
xorps xmm2, xmm2
jmp 0x10041c1c
xorps xmm2, xmm2
jmp 0x10041c1c
movss xmm1, dword [ebp - 0x28]
xorps xmm2, xmm2
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
movss xmm3, dword [ebp - 0x30]
movss xmm0, dword [edi + 0x90]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x10041cd7
movss xmm4, dword [edi + 0x94]
ucomiss xmm4, xmm2
lahf
test ah, 0x44
jnp 0x10041cd7
comiss xmm2, xmm0
subss xmm3, dword [0x100d62b0]
jbe 0x10041c58
xorps xmm3, xmm3
jmp 0x10041c5c
minss xmm3, xmm0
comiss xmm2, xmm4
addss xmm1, dword [0x100d62f8]
movss dword [edi + 0x90], xmm3
jbe 0x10041c76
xorps xmm1, xmm1
jmp 0x10041c7a
minss xmm1, xmm4
movd xmm0, edx
cvtdq2ps xmm0, xmm0
push 0xff2e2c2b
movss dword [edi + 0x94], xmm1
addss xmm0, xmm1
cvttss2si eax, xmm0
movd xmm0, ecx
mov ecx, dword [0x10120f2c]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x34], eax
mov eax, dword [ecx]
addss xmm0, xmm3
mov eax, dword [eax + 0x38]
cvttss2si edi, xmm0
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x48]
mov eax, dword [ebp - 0x34]
add eax, 5
push eax
lea eax, [edi + 5]
push eax
push dword [ebp - 0x34]
push edi
call edx
mov edi, dword [ebp - 0x1c]
xorps xmm2, xmm2
movss xmm3, dword [edi + 0x98]
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jnp 0x10041d7c
movss xmm0, dword [edi + 0x9c]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x10041d7c
movss xmm1, dword [0x100d6278]
comiss xmm1, xmm3
movd xmm2, esi
cvtdq2ps xmm2, xmm2
subss xmm2, xmm1
jbe 0x10041d1e
movaps xmm2, xmm1
jmp 0x10041d22
minss xmm2, xmm3
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x3c]
add eax, 4
movss dword [edi + 0x98], xmm2
add esi, 5
mov ecx, dword [0x10120f2c]
subss xmm2, xmm1
push 0xff2e2c2b
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
addss xmm0, xmm2
cvttss2si edi, xmm0
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x48]
cvttss2si eax, dword [ebp - 0x38]
add eax, esi
push eax
lea eax, [edi + 4]
push eax
push esi
push edi
call edx
mov edi, dword [ebp - 0x1c]
xorps xmm2, xmm2
movss xmm3, dword [edi + 0xb4]
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jnp 0x10041e1d
movss xmm0, dword [edi + 0xb8]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x10041e1d
movss xmm1, dword [0x100d6278]
comiss xmm1, xmm3
movss xmm2, dword [ebp - 0x30]
subss xmm2, xmm1
jbe 0x10041dc1
movaps xmm2, xmm1
jmp 0x10041dc5
minss xmm2, xmm3
movd xmm0, dword [ebp - 0x40]
cvtdq2ps xmm0, xmm0
push 0xff2e2c2b
movss dword [edi + 0xb4], xmm2
mov ecx, dword [0x10120f2c]
addss xmm0, xmm2
mov eax, dword [ecx]
subss xmm0, xmm1
mov eax, dword [eax + 0x38]
cvttss2si esi, xmm0
call eax
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
movss xmm0, dword [ebp - 0x38]
subss xmm0, dword [0x100d6278]
mov edx, dword [eax + 0x48]
cvttss2si eax, xmm0
add eax, dword [ebp - 0x14]
push eax
lea eax, [esi + 4]
push eax
push dword [ebp - 0x14]
push esi
call edx
mov al, byte [edi + 0x8b]
mov byte [edi + 0x8b], al
cmp byte [edi + 0xb2], 0
je 0x100421e1
push 4
xorps xmm0, xmm0
mov byte [edi + 0x6c], 0
push str.copy
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x68], 0
movups xmmword [ebp - 0x78], xmm0
mov dword [ebp - 0x64], 0
call fcn.100302c0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x94]
push 5
xorps xmm0, xmm0
mov dword [ebp - 0x84], 0
push str.paste
movups xmmword [ebp - 0x94], xmm0
mov dword [ebp - 0x80], 0
call fcn.100302c0
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x48]
mov ecx, 0x1012474c
push eax
call fcn.100afd10
mov esi, eax
mov ecx, 0x1012474c
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.100afd10
mov ecx, dword [esi]
add ecx, 2
mov eax, dword [eax]
add eax, ecx
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x80]
mov dword [ebp - 0x34], eax
cmp ecx, 0xf
jbe 0x10041f02
mov edx, dword [ebp - 0x94]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10041ef8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041f47
push ecx
push edx
call fcn.100bfaf1
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x80], 0xf
mov byte [ebp - 0x94], 0
cmp ecx, 0xf
jbe 0x10041f57
mov edx, dword [ebp - 0x78]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10041f4d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10041f4d
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100bfaf1
add esp, 8
mov eax, dword [edi + 0x1c]
mov ecx, dword [0x10120f2c]
mov esi, dword [ebp - 0x24]
add esi, 0xa
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x44], eax
mov eax, dword [edi + 0xc]
mov edi, dword [ebp - 0x18]
add edi, 0xffffffed
add edi, eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x44]
movzx eax, al
shl eax, 0x18
or eax, 0x3c3c3c
push eax
call edx
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
lea eax, [esi + 0x14]
push eax
mov eax, dword [ebp - 0x34]
add eax, 0x12
add eax, edi
push eax
push esi
push edi
call edx
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 0x24]
add edi, 0xffffffee
add esi, 0xb
mov eax, dword [ecx + 0x1c]
add edi, dword [ecx + 0xc]
mov ecx, dword [0x10120f2c]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x44], eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x38]
mov eax, dword [ebp - 0x44]
movzx eax, al
shl eax, 0x18
or eax, 0x282828
push eax
call edx
mov ecx, dword [0x10120f2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
lea eax, [esi + 0x12]
push eax
mov eax, dword [ebp - 0x34]
add eax, 0x10
add eax, edi
push eax
push esi
push edi
call edx
push 6
xorps xmm0, xmm0
mov dword [ebp - 0x68], 0
push str.copy__
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x64], 0
movups xmmword [ebp - 0x78], xmm0
call fcn.100302c0
mov esi, dword [ebp - 0x1c]
lea ecx, [ebp - 0x78]
mov dword [ebp - 4], 2
mov word [ebp - 0x20], 0xcdcd
mov byte [ebp - 0x1e], 0xcd
mov eax, dword [esi + 0x1c]
push 0
mov eax, dword [eax + 0xc]
mov byte [ebp - 0x1d], al
mov eax, dword [ebp - 0x24]
add eax, 0xd
mov dword [ebp - 0x44], eax
mov edi, dword [ebp - 0x18]
push ecx
push dword [ebp - 0x20]
mov ecx, 0x1012474c
push eax
lea eax, [edi + 0xa1]
push eax
call fcn.100afac0
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x64]
cmp ecx, 0xf
jbe 0x100420a1
mov edx, dword [ebp - 0x78]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10042097
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10042097
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100bfaf1
add esp, 8
push 7
xorps xmm0, xmm0
mov dword [ebp - 0xb4], 0
push str.__paste
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0xb0], 0
movups xmmword [ebp - 0xc4], xmm0
call fcn.100302c0
mov dword [ebp - 4], 3
lea ecx, [ebp - 0xac]
mov eax, dword [esi + 0x1c]
xorps xmm0, xmm0
push 4
push str.copy
mov eax, dword [eax + 0xc]
movzx esi, al
shl esi, 0x18
or esi, 0xcdcdcd
mov dword [ebp - 0x9c], 0
movups xmmword [ebp - 0xac], xmm0
mov dword [ebp - 0x98], 0
call fcn.100302c0
lea eax, [ebp - 0xac]
mov byte [ebp - 4], 4
push eax
lea eax, [ebp - 0x58]
mov ecx, 0x1012474c
push eax
call fcn.100afd10
push 0
lea edx, [ebp - 0xc4]
mov ecx, 0x1012474c
push edx
mov eax, dword [eax]
push esi
push dword [ebp - 0x44]
add eax, 0xa6
add eax, edi
push eax
call fcn.100afac0
mov ecx, dword [ebp - 0x98]
cmp ecx, 0xf
jbe 0x1004218a
mov edx, dword [ebp - 0xac]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10042180
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100421d1
push ecx
push edx
call fcn.100bfaf1
add esp, 8
mov ecx, dword [ebp - 0xb0]
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 0xf
mov byte [ebp - 0xac], 0
cmp ecx, 0xf
jbe 0x100421e1
mov edx, dword [ebp - 0xc4]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100421d7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x100421d7
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100bfaf1
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100bf676
mov esp, ebp
pop ebp
ret