Function at 0x401a40
Capabilities:
Persist via windows service
Query or enumerate registry value
Set registry value

Disassembly:
sub esp, 0x10
mov ecx, dword [esp + 0x1c]
push ebx
mov ebx, dword [esp + 0x18]
push ebp
push esi
xor esi, esi
cmp ebx, ecx
push edi
mov dword [esp + 0x18], esi
jle 0x401a69
mov eax, ebx
mov ebx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], 1
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
cmp edi, ebp
jle 0x401a85
mov eax, edi
mov edi, ebp
mov ebp, eax
mov eax, dword [esp + 0x18]
or al, 2
mov dword [esp + 0x18], eax
lea eax, [esp + 0x28]
push eax
push 0xf003f
push esi
push str.SystemCurrentControlSetServicesXIPTouchScreenParameters_
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x401c90
lea ecx, [esp + 0x24]
lea edx, [esp + 0x30]
mov eax, 0x32
push ecx
push edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x30]
push esi
push esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x20], esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push str.LeftOffset
push eax
mov dword [esp + 0x3c], 4
call esi
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x10]
push ecx
push edx
push 0
push 0
push str.TopOffset
push eax
call esi
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x1c]
push ecx
push edx
push 0
push 0
push str.XMikeyPerPixel
push eax
call esi
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x14]
push ecx
push edx
push 0
push 0
push str.YMikeyPerPixel
push eax
call esi
mov eax, ebx
shl eax, 0x10
sub eax, ebx
mov ebx, dword [esp + 0x1c]
cdq
idiv dword [0x406858]
cdq
idiv ebx
mov ecx, eax
mov eax, dword [esp + 0x30]
add ecx, eax
mov eax, edi
shl eax, 0x10
sub eax, edi
cdq
idiv dword [0x406864]
cdq
idiv dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
mov edi, eax
mov eax, dword [esp + 0x10]
add edi, eax
mov eax, edx
shl eax, 0x10
sub eax, edx
cdq
idiv dword [0x406858]
cdq
idiv ebx
mov esi, eax
mov eax, dword [esp + 0x30]
add esi, eax
mov eax, ebp
shl eax, 0x10
sub eax, ebp
mov ebp, dword [esp + 0x14]
cdq
idiv dword [0x406864]
sub esi, ecx
cdq
idiv ebp
add eax, dword [esp + 0x10]
test esi, esi
jle 0x401bcd
sub eax, edi
test eax, eax
mov dword [esp + 0x2c], eax
jle 0x401bcd
mov eax, 0xcccd
cdq
idiv esi
mov ebx, eax
mov eax, 0xcccd
cdq
idiv dword [esp + 0x2c]
mov dword [esp + 0x1c], ebx
mov ebp, eax
mov dword [esp + 0x14], ebp
test ebx, ebx
jle 0x401bf1
test ebp, ebp
jle 0x401bf1
mov eax, 0x1999
cdq
idiv ebx
sub ecx, eax
mov eax, 0x1999
cdq
idiv ebp
mov dword [esp + 0x30], ecx
sub edi, eax
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, eax
jge 0x401bff
mov dword [esp + 0x30], eax
cmp dword [esp + 0x10], eax
jge 0x401c09
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x24]
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea edx, [esp + 0x18]
push ecx
push edx
push 4
push eax
mov eax, dword [esp + 0x38]
push str.SwapXY
push eax
call esi
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x30]
push ecx
push edx
push 4
push 0
push str.LeftOffset
push eax
call esi
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x10]
push ecx
push edx
push 4
push 0
push str.TopOffset
push eax
call esi
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x1c]
push ecx
push edx
push 4
push 0
push str.XMikeyPerPixel
push eax
call esi
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x14]
push ecx
push edx
push 4
push 0
push str.YMikeyPerPixel
push eax
call esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret