Function at 0x4161af
Capabilities:
Get common file path
Get system information on windows
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb4
movdqa xmm0, xmmword [0xa8bb40]
mov eax, 0x2d5e48d3
push ebx
push esi
push edi
push dword [ebp + 0xc]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x50], ecx
lea ecx, [ebp - 0x94]
mov dword [ebp - 0x38], eax
push ecx
mov dword [ebp - 0x34], eax
lea ecx, [ebp - 0xa4]
xor eax, eax
mov dword [ebp - 4], 0x52061f6
push ecx
mov dword [ebp - 0xc], 1
lea ecx, [ebp - 0x4c]
mov dword [ebp - 8], 0x391cb4e7
mov dword [ebp - 0x14], 0x1932e3ca
push eax
mov dword [ebp - 0x20], edx
movdqu xmmword [ebp - 0xa4], xmm0
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
call fcn.004108a1
mov dword [ebp - 0x10], 0xffffffff
xor eax, eax
mov dword [ebp - 0x24], 0x1f66
mov dword [ebp - 4], 3
cmp dword [ebp - 4], eax
jl 0x4162d5
mov dword [ebp - 0x14], 0xfffffff9
mov dword [ebp - 0x10], 9
cmp dword [ebp - 0xc], eax
jne 0x416280
mov ecx, dword [ebp - 8]
xor ebx, ebx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + ecx*4 - 0x40]
mov ecx, dword [ebp - 4]
mov ecx, dword [ebp + ecx*4 - 0x40]
cmp edx, ecx
setge bl
sub ebx, dword [ebp - 0x14]
add ebx, dword [ebp - 0x10]
jne 0x416280
mov esi, eax
jmp 0x416283
xor esi, esi
inc esi
mov ecx, dword [ebp - 4]
xor ebx, ebx
mov edx, dword [ebp + ecx*4 - 0x40]
mov ecx, dword [ebp - 4]
imul edx, esi
mov ecx, dword [ebp + ecx*4 - 0x40]
cmp ecx, edx
mov ecx, dword [ebp - 4]
setg bl
xor edx, edx
mov dword [ebp + ecx*4 - 0x40], ebx
mov ecx, dword [ebp - 0xc]
cmp ebx, ecx
setge dl
mov dword [ebp - 0xc], edx
mov ecx, dword [ebp - 0xc]
neg ecx
sbb ecx, ecx
neg ecx
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
imul edx, ecx
mov ecx, dword [ebp - 0x4c]
mov dword [ecx], edx
mov dword [ebp - 0x10], edx
dec dword [ebp - 4]
jns 0x416243
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [ebp - 8], eax
jmp 0x4163a6
mov dword [ebp - 0x10], 0xfff8
mov dword [ebp - 4], 3
cmp dword [ebp - 4], eax
jl 0x416384
mov byte [ebp - 0x15], al
cmp byte [ebp - 0x15], 0
je 0x416317
push 0x1532
push eax
call edi
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_MapWindowPoints]
xor eax, eax
cmp dword [ebp - 0x10], 0xefae07df
jne 0x416323
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
cmp dword [ebp + ecx*4 - 0x40], 1
je 0x41633f
cmp dword [ebp - 0x10], eax
jne 0x41633f
mov edx, eax
jmp 0x416342
xor edx, edx
inc edx
mov ecx, dword [ebp - 8]
xor ebx, ebx
mov ecx, dword [ebp + ecx*4 - 0x40]
cmp ecx, edx
mov esi, dword [ebp - 8]
mov ecx, dword [ebp - 8]
setne bl
xor edx, edx
mov ecx, dword [ebp + ecx*4 - 0x40]
cmp ebx, ecx
mov ecx, dword [ebp - 0x24]
setge dl
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [ebp - 0x14]
setle bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [ebp - 0x4c]
setne dl
mov dword [ecx + esi*4], edx
dec dword [ebp - 4]
jns 0x4162fa
mov byte [ebp - 0x15], al
cmp byte [ebp - 0x15], 0
je 0x4163a3
push 0xfc5
push eax
push 0xea3
call edi
push eax
call dword [sym.imp.USER32.dll_GetDlgItemTextW]
xor eax, eax
inc dword [ebp - 8]
cmp dword [ebp - 8], 3
jle 0x4162e3
lea ecx, [ebp - 0x4c]
call fcn.0040f305
xor eax, eax
cmp byte [ebp + 0xc], al
je 0x4166ef
push dword [ebp + 0xc]
movdqa xmm0, xmmword [0xa8bb90]
lea ecx, [ebp - 0x84]
push ecx
lea ecx, [ebp - 0x94]
mov dword [ebp - 0x30], eax
push ecx
push eax
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2c], eax
movdqu xmmword [ebp - 0x94], xmm0
mov dword [ebp - 0x28], eax
call fcn.004108a1
mov dword [ebp - 4], 0xfffffffa
xor eax, eax
mov dword [ebp + 0xc], 0xffffffff
mov dword [ebp + 0xc], 0x87c4177f
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 3
jg 0x416564
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], 0xffffffff
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 3
jg 0x4164c4
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x24], ecx
mov dword [ebp + 0xc], eax
jmp 0x41644d
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0x54], 0xffffffff
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 1
jl 0x41643f
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x416465
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
xor eax, eax
mov ecx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 4]
mov ebx, dword [ebp - 4]
mov dword [ebp + 0xc], ebx
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebx + ecx*4]
xor ecx, ecx
add edi, dword [ebx + edx*4]
cmp dword [ebx + esi*4], 0x7aced45b
sete cl
xor edx, edx
cmp edi, ecx
mov ecx, dword [ebp + 0xc]
setge dl
sub edx, dword [ebx + ecx*4]
xor ecx, ecx
mov ebx, dword [ebp - 0x24]
cmp edx, dword [ebx + 0xc]
setge cl
cmp ecx, 0xfffb
sbb ecx, ecx
neg ecx
mov dword [ebp - 0x54], ecx
inc dword [ebp - 8]
cmp dword [ebp - 8], 3
jle 0x41643a
mov ebx, dword [ebp - 0x14]
cmp dword [ebp - 4], eax
jne 0x4164d8
mov ecx, dword [ebp - 0x30]
cmp dword [ecx], 0xf876
je 0x4164d8
mov esi, eax
jmp 0x4164db
xor esi, esi
inc esi
mov ecx, dword [ebp - 4]
xor edx, edx
cmp esi, ecx
setl dl
mov dword [ebp + 0xc], edx
mov esi, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x30]
mov edi, dword [edx + ecx*4]
mov ecx, dword [ebp - 8]
sub ecx, dword [ebp - 8]
add edi, dword [edx + esi*4]
neg ecx
sbb ecx, ecx
inc ecx
sub edi, ecx
mov ecx, dword [ebp - 8]
imul edx, edi, 0x925d
add ecx, 0xfff7
sub edx, dword [ebx + 4]
xor ebx, ebx
add ecx, edx
mov dword [ebp + 0xc], ecx
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov ecx, dword [ebp - 0x30]
setg bl
add ebx, dword [ecx + esi*4]
mov ecx, dword [ebp - 0x14]
sub ebx, 0x874d
add ebx, dword [ecx + 4]
neg ebx
sbb ebx, ebx
add ebx, 0xffff000b
neg ebx
sbb ebx, ebx
inc ebx
mov dword [ebp - 8], ebx
mov ebx, ecx
inc dword [ebp - 4]
cmp dword [ebp - 4], 3
jle 0x416420
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
lea ecx, [ebp - 0x30]
call fcn.0040f305
xor eax, eax
mov dword [ebp - 0x10], 0x184c506d
push 2
mov dword [ebp + 0xc], eax
pop esi
jmp 0x41658e
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0xb4], 0xb57f
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x41657d
xor ebx, ebx
inc ebx
mov dword [ebp - 0x10], ebx
cmp dword [ebp - 0x10], eax
jl 0x4165b5
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x4165b0
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
xor eax, eax
dec dword [ebp - 0x10]
jns 0x41659e
push 8
pop ecx
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x80], ecx
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x78], ecx
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x4165de
push 0x2147
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor eax, eax
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x4165f3
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_MapDialogRect]
xor eax, eax
mov dword [ebp + 0xc], 0xe8cff0ea
mov dword [ebp - 0xc], 0xffd81438
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp + 0xc], eax
jmp 0x41662c
mov dword [ebp - 0xc], eax
jmp 0x41661f
mov ecx, dword [ebp - 0xc]
mov dword [ebp + ecx*4 - 0x6c], 0x8f8
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], esi
jl 0x416611
cmp dword [ebp - 0x68], eax
jne 0x416632
dec dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0xffffffe3
je 0x41660c
mov ecx, dword [ebp + 0xc]
mov ecx, ebx
cmp dword [ebp + 0xc], eax
jne 0x41663e
mov ecx, eax
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x14]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
cmp ecx, dword [ebp + 0xc]
jne 0x416688
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x4166e3
push eax
push 0xd0f
push eax
call dword [sym.imp.GDI32.dll_GetBitmapBits]
jmp 0x4166e1
mov dword [ebp - 0x24], 0x4a6b2c4e
lea ecx, [ebp - 0x64]
push 4
call fcn.0040f233
xor eax, eax
mov dword [ebp + 0xc], 0x1636717b
mov dword [ebp + 0xc], eax
jmp 0x4166b3
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x64]
mov dword [eax + ecx*4], ebx
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 4
jl 0x4166a7
mov eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cmp eax, 0xfffffff7
mov eax, dword [ebp - 0x64]
setne cl
imul ecx, ecx, 0xa8db
mov dword [eax + 4], ecx
mov dword [ebp + 0xc], ecx
lea ecx, [ebp - 0x64]
call fcn.0040f305
xor eax, eax
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
mov dword [ecx], eax
jmp 0x416941
push 2
mov dword [ebp - 0xc], 0xfffffffc
mov dword [ebp + 0xc], eax
pop esi
jmp 0x41670b
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0xac], eax
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x4166fe
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], al
je 0x416724
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_KillTimer]
xor eax, eax
xor ebx, ebx
mov dword [ebp - 0xc], eax
inc ebx
jmp 0x41674d
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x41674a
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
xor eax, eax
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], ebx
jle 0x41672c
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x10], 0xe1d925b0
mov dword [ebp - 0xc], 9
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], 6
mov dword [ebp - 4], ebx
mov dword [ebp + 0xc], eax
jmp 0x416783
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0x74], 0xf9e6a012
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], esi
jl 0x416775
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp + 0xc]
sub edx, dword [ebp + 0xc]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
add edx, dword [ebp + 0xc]
add edx, dword [ebp + 0xc]
neg edx
cmp edx, 0xbf5f
setge cl
xor ebx, ebx
mov dword [ebp - 8], ecx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0xc]
cmp edx, ecx
mov ecx, dword [ebp - 0xc]
setg bl
xor edx, edx
cmp ecx, ebx
setge dl
imul ecx, dword [ebp - 8], 0xcaea
sub ecx, dword [ebp + 0xc]
neg ecx
sbb ecx, ecx
inc ecx
add edx, ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x20], edx
xor edx, edx
cmp dword [ebp - 0x20], ecx
setle dl
cmp edx, dword [ebp + 0xc]
jl 0x4167fc
cmp dword [ebp - 0x10], eax
jne 0x4167fc
mov ebx, eax
jmp 0x4167ff
xor ebx, ebx
inc ebx
mov ecx, dword [ebp + 0xc]
xor edx, edx
cmp ebx, ecx
sete dl
mov dword [ebp - 0xc], edx
mov ecx, dword [ebp - 0xc]
neg ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebp + 0xc]
jge 0x41682d
cmp dword [ebp - 0x10], eax
jne 0x41682d
cmp dword [ebp + 0xc], eax
jne 0x41682d
xor ebx, ebx
mov ecx, eax
inc ebx
jmp 0x416832
xor ebx, ebx
inc ebx
mov ecx, ebx
mov edx, dword [ebp - 0x10]
sub edx, ecx
mov ecx, dword [ebp - 0x74]
sub edx, ecx
mov ecx, dword [ebp - 4]
add ecx, edx
je 0x416884
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x416859
push eax
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
xor eax, eax
mov byte [ebp + 0xf], al
cmp byte [ebp + 0xf], 0
je 0x4168d3
push eax
push eax
push eax
push 0xdef
push 0x1557
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentExPointA]
xor eax, eax
jmp 0x4168d3
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], eax
jmp 0x4168cd
mov dword [ebp - 0x14], 9
mov dword [ebp + 0xc], 0xffffffff
mov dword [ebp - 4], 0xfffffff9
jmp 0x4168c2
mov dword [ebp - 0x20], 0xfffffff7
mov dword [ebp + 0xc], eax
jmp 0x4168b5
dec dword [ebp - 0x14]
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], ebx
jle 0x4168af
cmp dword [ebp - 0x20], eax
jne 0x4168c7
inc dword [ebp - 4]
cmp dword [ebp - 4], esi
jl 0x4168a3
dec dword [ebp - 0x10]
inc dword [ebp - 8]
cmp dword [ebp - 8], 0x18
jl 0x41688c
mov dword [ebp + 0xc], eax
jmp 0x4168e6
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0x1c], 0x4fd3df75
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], ebx
jl 0x4168d8
mov dword [ebp - 0x1c], 7
jmp 0x41691f
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0xc], eax
jmp 0x41690a
mov ecx, dword [ebp + 0xc]
mov dword [ebp + ecx*4 - 0x58], 0xfffffffb
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], ebx
jl 0x4168fc
mov dword [ebp + 0xc], 0xa4f402e3
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x58], ecx
dec dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0xfffffff1
jge 0x4168f4
mov edx, dword [ebp + 8]
mov dword [edx], eax
cmp dword [edx], 4
jge 0x416941
mov esi, dword [ebp - 0x50]
mov ecx, dword [edx]
mov eax, dword [esi]
or dword [eax + ecx*4], 0xffffffff
inc dword [edx]
cmp dword [edx], 4
jl 0x416932
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret