Function at 0x103911f
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 0x10399b2
cmp byte [esi + 0x38], bl
jne 0x10399b2
mov ecx, eax
shr ecx, 8
push edi
test cl, 1
je 0x103929d
sub eax, 0x101
je 0x103926f
dec eax
je 0x1039180
dec eax
dec eax
je 0x10391aa
sub eax, 4
je 0x1039180
sub eax, 8
je 0x1039180
sub eax, 0x10
je 0x1039180
sub eax, 0x20
jne 0x103929d
mov ecx, esi
call fcn.01037955
mov ecx, esi
mov byte [esi + 0x38], 1
call fcn.010389e5
test al, al
je 0x10391a2
push 0x1000
mov ecx, esi
call fcn.01037af6
mov byte [esi + 0x38], bl
jmp 0x103929d
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, 0x88760868
je 0x103922a
cmp eax, 0x88760869
je 0x10391db
cmp eax, ebx
je 0x10391d2
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x10399b1
mov ecx, esi
call fcn.010378e2
jmp 0x103920a
push 0x100bbec
push 0x100a820
push 0x6a8
push 2
call fcn.01054409
add esp, 0x10
mov ecx, esi
call fcn.010378e2
mov ecx, esi
call fcn.010383d9
test al, al
je 0x10399b1
mov ecx, esi
call fcn.01038108
test al, al
je 0x10399b1
push 0x1000
mov ecx, esi
call fcn.01037af6
jmp 0x10399b1
push 0x20
call sub.d3d9.dll_Direct3DCreate9
mov edi, eax
cmp edi, ebx
je 0x10399b1
mov eax, dword [edi]
push edi
call dword [eax + 0x10]
test eax, eax
jbe 0x1039264
lea eax, [ebp - 0x1d0]
push eax
push edi
mov ecx, esi
call fcn.01037c2d
test al, al
je 0x1039264
push 0x140
mov ecx, esi
call fcn.01037af6
mov eax, dword [edi]
push edi
call dword [eax + 8]
jmp 0x10399b1
call fcn.01035ba2
mov ecx, esi
call fcn.010378e2
mov ecx, esi
call fcn.010383d9
test al, al
je 0x103929d
mov ecx, esi
call fcn.01038108
test al, al
je 0x103929d
push 0x1000
mov ecx, esi
call fcn.01037af6
mov eax, dword [esi + 0x8c]
shr eax, 0xc
test al, 1
je 0x10399b1
cmp byte [0x1098578], bl
je 0x10392eb
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 0x10392eb
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 0x10399b1
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 0x1039334
push edi
call fcn.01045968
push eax
push edi
push 0x100bbb0
push 0x100a820
push 0x73b
push 2
call fcn.01054409
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 [0x10974b0], ebx
cmp byte [esi + 0x24], bl
je 0x1039369
cmp dword [esi + 0x64], ebx
je 0x1039371
cmp byte [esi + 0x8a], bl
je 0x10393c1
cmp byte [esi + 0x8a], bl
je 0x103937d
xor ecx, ecx
jmp 0x1039380
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 0x10393c1
push eax
call fcn.01045968
push eax
push dword [ebp - 0x24]
push 0x100bb80
push 0x100a820
push 0x755
push 2
call fcn.01054409
add esp, 0x18
mov byte [esi + 0x89], bl
cmp dword [esi + 0x64], ebx
je 0x1039770
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 [0x100bb78]
fld qword [0x100bb70]
fadd st(1), st(0)
fxch st(1)
call sub.msvcrt.dll__ftol2_sse
mov ecx, 0x320
cmp eax, ecx
jle 0x103941e
fld dword [ebp - 8]
mov dword [ebp - 0x14], ecx
fdivr qword [0x100bb68]
faddp st(1)
call sub.msvcrt.dll__ftol2_sse
mov edx, eax
mov eax, dword [ebp - 0x14]
jmp 0x1039423
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 0x1039481
dec eax
je 0x103945c
dec eax
jne 0x10394b7
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 0x10394b7
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 0x10394b7
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.01046b3b
fld dword [0x100bb64]
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 [0x100bb60]
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 [0x100bb70]
fsub st(1), st(0)
fxch st(1)
fstp dword [ebp - 8]
fld dword [ebp - 8]
fst dword [ebp - 0xa0]
add dword [0x10974b0], 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 [0x100fb40]
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 [0x10982d8]
push ebx
push dword [eax]
call fcn.01043eb4
cmp byte [esi + 0x89], bl
jne 0x1039770
cmp eax, ebx
je 0x1039747
mov ecx, dword [eax + 0x20]
jmp 0x1039749
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.0103a89f
test al, al
je 0x103978a
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 0x1039773
mov dword [ebp - 0x10], ebx
push dword [ebp - 0x10]
call fcn.0103a89f
test al, al
je 0x10397c6
mov dword [ebp - 8], ebx
cmp dword [esi + 0x54], ebx
jbe 0x10397c6
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 0x10397aa
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 6
jb 0x1039796
cmp byte [esi + 0x89], bl
jne 0x1039807
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [esi + 0x89], bl
jne 0x1039807
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [esi + 0x89], bl
jne 0x1039807
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp byte [0x10974b4], bl
je 0x103982e
push dword [0x10974b0]
push 0x100bb2c
push 0x100a820
push 0x828
push 2
call fcn.01054409
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 0x1039891
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 0x10398d2
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 [0x10982d8]
call fcn.01043865
mov byte [esi + 0x40], bl
cmp byte [ebp + 8], bl
je 0x103992f
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 0x1039932
push 0x104
mov ecx, esi
call fcn.01037af6
jmp 0x1039932
mov edi, dword [ebp - 0x24]
cmp byte [esi + 0x8a], bl
je 0x1039982
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 [0x10974b0]
fild qword [ebp - 0x14]
push ecx
push ecx
fdivp st(1)
fstp qword [esp]
push 0x100baf8
push 2
call fcn.01054776
add esp, 0x14
cmp byte [ebp + 8], bl
je 0x10399ae
cmp edi, ebx
jge 0x10399ae
push edi
call fcn.01045968
push eax
push edi
push 0x100bac8
push 0x100a820
push 0x86c
push 2
call fcn.01054409
add esp, 0x18
jmp 0x10399b1
inc dword [esi + 0x78]
pop edi
pop esi
pop ebx
leave
ret 4