Function at 0x107969f
Capabilities:
Check for time delay via queryperformancecounter
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x1d0
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x8c]
xor ebx, ebx
cmp eax, ebx
je 0x1079f32
cmp byte [esi + 0x38], bl
jne 0x1079f32
mov ecx, eax
shr ecx, 8
push edi
test cl, 1
je 0x107981d
sub eax, 0x101
je 0x10797ef
dec eax
je 0x1079700
dec eax
dec eax
je 0x107972a
sub eax, 4
je 0x1079700
sub eax, 8
je 0x1079700
sub eax, 0x10
je 0x1079700
sub eax, 0x20
jne 0x107981d
mov ecx, esi
call fcn.01077e3f
mov ecx, esi
mov byte [esi + 0x38], 1
call fcn.01078f65
test al, al
je 0x1079722
push 0x1000
mov ecx, esi
call fcn.01077ffa
mov byte [esi + 0x38], bl
jmp 0x107981d
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, 0x88760868
je 0x10797aa
cmp eax, 0x88760869
je 0x107975b
cmp eax, ebx
je 0x1079752
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x1079f31
mov ecx, esi
call fcn.01077dcc
jmp 0x107978a
push 0x102da9c
push 0x102c6d8
push 0x6a8
push 2
call fcn.0109642f
add esp, 0x10
mov ecx, esi
call fcn.01077dcc
mov ecx, esi
call fcn.01078959
test al, al
je 0x1079f31
mov ecx, esi
call fcn.01078688
test al, al
je 0x1079f31
push 0x1000
mov ecx, esi
call fcn.01077ffa
jmp 0x1079f31
push 0x20
call sub.d3d9.dll_Direct3DCreate9
mov edi, eax
cmp edi, ebx
je 0x1079f31
mov eax, dword [edi]
push edi
call dword [eax + 0x10]
test eax, eax
jbe 0x10797e4
lea eax, [ebp - 0x1d0]
push eax
push edi
mov ecx, esi
call fcn.010781ad
test al, al
je 0x10797e4
push 0x140
mov ecx, esi
call fcn.01077ffa
mov eax, dword [edi]
push edi
call dword [eax + 8]
jmp 0x1079f31
call fcn.01082e3e
mov ecx, esi
call fcn.01077dcc
mov ecx, esi
call fcn.01078959
test al, al
je 0x107981d
mov ecx, esi
call fcn.01078688
test al, al
je 0x107981d
push 0x1000
mov ecx, esi
call fcn.01077ffa
mov eax, dword [esi + 0x8c]
shr eax, 0xc
test al, 1
je 0x1079f31
cmp byte [0x10d14b8], bl
je 0x107986b
mov al, byte [esi + 0x8a]
push 0x75
mov byte [ebp - 1], al
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x1f40
test cx, ax
setne al
cmp byte [ebp - 1], al
je 0x107986b
cmp byte [ebp - 1], bl
mov byte [esi + 0x14], 1
sete al
mov byte [esi + 0x40], 1
mov byte [esi + 0x8a], al
cmp byte [esi + 0x40], bl
je 0x1079f31
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xa4]
mov edi, eax
cmp edi, ebx
mov dword [ebp - 0x24], edi
jge 0x10798b4
push edi
call fcn.0108b5ef
push eax
push edi
push 0x102da60
push 0x102c6d8
push 0x73b
push 2
call fcn.0109642f
add esp, 0x18
mov ecx, dword [esi + 0x50]
lea edi, [esi + 0x8b]
mov byte [edi], 1
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esi + 0x3c]
mov byte [edi], bl
mov ecx, dword [eax]
xor edi, edi
inc edi
push edi
push 0x16
push eax
call dword [ecx + 0xe4]
mov dword [0x10d038c], ebx
cmp byte [esi + 0x24], bl
je 0x10798e9
cmp dword [esi + 0x64], ebx
je 0x10798f1
cmp byte [esi + 0x8a], bl
je 0x1079941
cmp byte [esi + 0x8a], bl
je 0x10798fd
xor ecx, ecx
jmp 0x1079900
mov ecx, dword [esi + 8]
fld1
mov eax, dword [esi + 0x3c]
mov edx, dword [eax]
push ebx
push ecx
fstp dword [esp]
push ecx
push edi
push ebx
push ebx
push eax
call dword [edx + 0xac]
cmp eax, ebx
mov dword [ebp - 0x24], eax
jge 0x1079941
push eax
call fcn.0108b5ef
push eax
push dword [ebp - 0x24]
push 0x102da30
push 0x102c6d8
push 0x755
push 2
call fcn.0109642f
add esp, 0x18
mov byte [esi + 0x89], bl
cmp dword [esi + 0x64], ebx
je 0x1079cf0
mov eax, dword [esi + 0x30]
fild dword [eax + 4]
mov dword [ebp - 0x10], 0x1f0
fidiv dword [eax + 8]
fstp dword [ebp - 8]
fld dword [ebp - 8]
fmul qword [0x102da28]
fld qword [0x1025b20]
fadd st(1), st(0)
fxch st(1)
call sub.msvcrt.dll__ftol2_sse
mov ecx, 0x320
cmp eax, ecx
jle 0x107999e
fld dword [ebp - 8]
mov dword [ebp - 0x14], ecx
fdivr qword [0x102da20]
faddp st(1)
call sub.msvcrt.dll__ftol2_sse
mov edx, eax
mov eax, dword [ebp - 0x14]
jmp 0x10799a3
mov edx, dword [ebp - 0x10]
fstp st(0)
mov ecx, dword [esi + 0x64]
mov dword [ecx + 0x148], eax
mov eax, dword [esi + 0x64]
mov dword [eax + 0x14c], edx
mov eax, dword [esi + 0x68]
sub eax, ebx
je 0x1079a01
dec eax
je 0x10799dc
dec eax
jne 0x1079a37
mov eax, dword [esi + 0x64]
mov eax, dword [eax + 0x128]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x64]
mov eax, dword [eax + 0x128]
mov dword [eax + 8], ebx
jmp 0x1079a37
mov eax, dword [esi + 0x64]
mov eax, dword [eax + 0x128]
mov dword [eax + 4], ebx
mov eax, dword [esi + 0x64]
mov ecx, 0x1f0
sub ecx, dword [eax + 0x14c]
mov eax, dword [eax + 0x128]
mov dword [eax + 8], ecx
jmp 0x1079a37
mov eax, dword [esi + 0x64]
mov ecx, dword [eax + 0x148]
mov eax, dword [eax + 0x128]
shr ecx, 1
mov edx, 0x190
sub edx, ecx
mov dword [eax + 4], edx
mov eax, dword [esi + 0x64]
mov ecx, dword [eax + 0x14c]
mov eax, dword [eax + 0x128]
shr ecx, 1
mov edx, 0xf8
sub edx, ecx
mov dword [eax + 8], edx
mov ecx, dword [esi + 0x64]
call fcn.0107b7ca
fld dword [0x102da1c]
fst dword [ebp - 0x98]
mov ecx, dword [esi + 0x30]
fst dword [ebp - 0x7c]
xor eax, eax
fst dword [ebp - 0x60]
cmp byte [esi + 0x8a], bl
fstp dword [ebp - 0x44]
fld dword [0x10265a0]
sete al
fst dword [ebp - 0x94]
fst dword [ebp - 0x78]
fst dword [ebp - 0x5c]
fstp dword [ebp - 0x40]
fldz
fst dword [ebp - 0xa0]
dec eax
and eax, 0x41000000
dec eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x3c], eax
lea eax, [ecx + 8]
fild dword [eax]
add ecx, 4
fstp dword [ebp - 0x9c]
fild dword [ecx]
fstp dword [ebp - 0x84]
fild dword [eax]
fstp dword [ebp - 0x80]
fild dword [ecx]
fstp dword [ebp - 0x68]
fst dword [ebp - 0x64]
fst dword [ebp - 0x4c]
fstp dword [ebp - 0x48]
mov eax, dword [eax]
imul eax, dword [ecx]
fldz
fld qword [0x1025b20]
fsub st(1), st(0)
fxch st(1)
fstp dword [ebp - 8]
fld dword [ebp - 8]
fst dword [ebp - 0xa0]
add dword [0x10d038c], eax
fld dword [ebp - 0x84]
mov eax, dword [esi + 0x64]
fsub st(2)
lea ecx, [eax + 0x140]
lea edx, [eax + 0x13c]
fstp dword [ebp - 0x84]
fld dword [ebp - 0x68]
fsub st(2)
fstp dword [ebp - 0x68]
fst dword [ebp - 0x4c]
fld dword [ebp - 0x9c]
fsub st(2)
fstp dword [ebp - 0x9c]
fld dword [ebp - 0x80]
fsubrp st(2)
fxch st(1)
fstp dword [ebp - 0x80]
fst dword [ebp - 0x64]
fstp dword [ebp - 0x48]
fld dword [eax + 0x134]
fstp dword [ebp - 0x8c]
fld dword [ecx]
fstp dword [ebp - 0x88]
fld dword [edx]
fstp dword [ebp - 0x70]
fld dword [ecx]
lea ecx, [eax + 0x138]
fstp dword [ebp - 0x6c]
fld dword [edx]
fstp dword [ebp - 0x54]
fld dword [ecx]
fstp dword [ebp - 0x50]
fld dword [eax + 0x134]
mov eax, dword [esi + 0x3c]
fstp dword [ebp - 0x38]
fld dword [ecx]
push dword [0x1031f28]
fstp dword [ebp - 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x164]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
xor edx, edx
cmp byte [esi + 0x8a], bl
setne dl
push edx
push 0x1b
push eax
call dword [ecx + 0xe4]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 5
push 0x13
push eax
call dword [ecx + 0xe4]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 6
push 0x14
push eax
call dword [ecx + 0xe4]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 2
push 5
push ebx
push eax
call dword [ecx + 0x114]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 2
push 6
push ebx
push eax
call dword [ecx + 0x114]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 2
push 7
push ebx
push eax
call dword [ecx + 0x114]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 3
push edi
push ebx
push eax
call dword [ecx + 0x114]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 3
push 2
push ebx
push eax
call dword [ecx + 0x114]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
xor edx, edx
cmp byte [esi + 0x8a], bl
setne dl
inc edx
inc edx
push edx
push edi
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 2
push 2
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push 3
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
xor edx, edx
cmp byte [esi + 0x8a], bl
setne dl
lea edx, [edx + edx + 1]
push edx
push 4
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 2
push 5
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push 6
push ebx
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push edi
push edi
push edi
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push edi
push 4
push edi
push eax
call dword [ecx + 0x10c]
mov eax, dword [esi + 0x64]
mov eax, dword [eax + 0x128]
mov ecx, dword [0x10d123c]
push ebx
push dword [eax]
call fcn.0108b1f5
cmp byte [esi + 0x89], bl
jne 0x1079cf0
cmp eax, ebx
je 0x1079cc7
mov ecx, dword [eax + 0x20]
jmp 0x1079cc9
xor ecx, ecx
mov eax, dword [esi + 0x3c]
mov edx, dword [eax]
push ecx
push ebx
push eax
call dword [edx + 0x104]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push 0x1c
lea edx, [ebp - 0xa0]
push edx
push 2
push 6
push eax
call dword [ecx + 0x14c]
mov dword [ebp - 0x10], ebx
push dword [ebp - 0x10]
call fcn.01076795
test al, al
je 0x1079d0a
mov ecx, dword [esi + 0x50]
push dword [ebp - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x2c]
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 6
jb 0x1079cf3
mov dword [ebp - 0x10], ebx
push dword [ebp - 0x10]
call fcn.01076795
test al, al
je 0x1079d46
mov dword [ebp - 8], ebx
cmp dword [esi + 0x54], ebx
jbe 0x1079d46
mov eax, dword [esi + 0x60]
mov ecx, dword [ebp - 8]
mov ecx, dword [eax + ecx*4]
push dword [ebp - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x2c]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x54]
jb 0x1079d2a
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 6
jb 0x1079d16
cmp byte [esi + 0x89], bl
jne 0x1079d87
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [esi + 0x89], bl
jne 0x1079d87
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [esi + 0x89], bl
jne 0x1079d87
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [0x10d0390], bl
je 0x1079dae
push dword [0x10d038c]
push 0x102d9f4
push 0x102c6d8
push 0x828
push 2
call fcn.0109642f
add esp, 0x14
mov eax, dword [esi + 0x3c]
lea edx, [ebp - 0x20]
push edx
push ebx
mov dword [ebp - 0x20], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x98]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
cmp byte [esi + 0x88], bl
je 0x1079e11
push dword [esi + 0x7c]
push ebx
push eax
call dword [ecx + 0x94]
fldz
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push ecx
fstp dword [esp]
push ebx
push edi
push ebx
push ebx
push eax
call dword [ecx + 0xac]
push dword [esi + 0x84]
mov eax, dword [esi + 0x3c]
push dword [esi + 0x80]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x80]
mov byte [esi + 0x88], bl
jmp 0x1079e52
push dword [esi + 0x80]
push ebx
push eax
call dword [ecx + 0x94]
fldz
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push ecx
fstp dword [esp]
push ebx
push edi
push ebx
push ebx
push eax
call dword [ecx + 0xac]
push dword [esi + 0x84]
mov eax, dword [esi + 0x3c]
push dword [esi + 0x7c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x80]
mov byte [esi + 0x88], 1
push dword [ebp - 0x20]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push eax
call dword [ecx + 0x94]
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xa8]
mov ecx, dword [0x10d123c]
call fcn.0108ad05
mov byte [esi + 0x40], bl
cmp byte [ebp + 8], bl
je 0x1079eaf
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push ebx
push ebx
push ebx
push ebx
push eax
call dword [ecx + 0x44]
mov edi, eax
cmp edi, 0x88760868
jne 0x1079eb2
push 0x104
mov ecx, esi
call fcn.01077ffa
jmp 0x1079eb2
mov edi, dword [ebp - 0x24]
cmp byte [esi + 0x8a], bl
je 0x1079f02
lea eax, [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x24]
sbb ecx, dword [ebp - 0x2c]
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
fild qword [ebp - 0xc]
push dword [0x10d038c]
fild qword [ebp - 0x14]
push ecx
push ecx
fdivp st(1)
fstp qword [esp]
push 0x102d9c0
push 2
call fcn.0109679c
add esp, 0x14
cmp byte [ebp + 8], bl
je 0x1079f2e
cmp edi, ebx
jge 0x1079f2e
push edi
call fcn.0108b5ef
push eax
push edi
push 0x102d990
push 0x102c6d8
push 0x86c
push 2
call fcn.0109642f
add esp, 0x18
jmp 0x1079f31
inc dword [esi + 0x78]
pop edi
pop esi
pop ebx
leave
ret 4