Function at 0x438d50
Capabilities:
Read .ini file

Disassembly:
sub esp, 0xe6c
mov eax, dword [0x5c96a4]
xor eax, esp
mov dword [esp + 0xe68], eax
push ebx
push ebp
mov ebp, dword [esp + 0xe78]
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, ecx
push esi
push 0
mov ebx, edx
push str.Sensor
push ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], ebx
call edi
mov dword [ebp], eax
test eax, eax
je 0x438dd9
xor ecx, ecx
mov edx, 0x5d1988
lea ebx, [ebx]
cmp dword [edx], eax
je 0x438db5
add edx, 0xab4
inc ecx
cmp edx, 0x5dba14
jl 0x438da0
jmp 0x438dc5
imul ecx, ecx, 0xab4
add ecx, 0x5d1988
test ecx, ecx
jne 0x438df4
push 0
push str.Error
push str.Wrong_sensor_value
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
mov ecx, dword [esp + 0xe78]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0053fb0e
add esp, 0xe6c
ret
push esi
push 0x125
push str.RATE1
push ebx
call edi
push esi
push 0x250
push str.RATE2
push ebx
mov dword [ebp + 0x538], eax
call edi
push esi
push 0x500
push str.RATE3
push ebx
mov dword [ebp + 0x53c], eax
call edi
push esi
push 0x1000
push str.RATE4
push ebx
mov dword [ebp + 0x540], eax
call edi
push esi
push 0x500
push 0x5a3a84
push ebx
mov dword [ebp + 0x544], eax
call edi
push esi
push 1
push str.ShowLOD
push ebx
mov dword [ebp + 0x534], eax
call edi
push esi
push 1
push str.ShowAngle
push ebx
mov dword [ebp + 0x554], eax
call edi
push esi
push 1
push str.ShowAngleAdj
push ebx
mov dword [ebp + 0x548], eax
call edi
cmp dword [ebp], 0x3370
mov dword [ebp + 0x54c], eax
jne 0x438e9e
mov dword [ebp + 0x54c], 0
push esi
push 1
push str.ShowDebounce
push ebx
call edi
push esi
push 1
push str.ShowRipple
push ebx
mov dword [ebp + 0x558], eax
call edi
push esi
push 0
push str.ShowUpdate
push ebx
mov dword [ebp + 0x550], eax
call edi
push esi
push 6
push 0x5a3b18
push ebx
mov dword [ebp + 0x55c], eax
call edi
push esi
push 0
push str.DEFLEVEL
push ebx
mov dword [ebp + 8], eax
call edi
push esi
push 0x46
push str.DPISTARTY
push ebx
mov dword [ebp + 4], eax
call edi
push esi
push 0x37
push str.DPIH
push ebx
mov dword [ebp + 0x68], eax
call edi
mov edx, dword [ebp]
mov dword [ebp + 0x6c], eax
mov dword [esp + 0x1c], 0
call fcn.00435780
mov dword [esp + 0x10], eax
test eax, eax
jne 0x438f38
push eax
push 0x59b0a8
push str.Cant_find_sensor
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x439156
push esi
push 0x410
lea eax, [esp + 0x660]
push eax
push 0x599828
push str.DPISET
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor ecx, ecx
cmp cx, word [esp + 0x658]
je 0x438fb4
lea edx, [esp + 0x658]
push 0x154
push edx
lea ebx, [ecx + 0xa]
lea edi, [esp + 0x28]
mov dword [esp + 0x24], 1
call fcn.00436620
mov edi, dword [esp + 0x18]
push 0x550
add edi, 0x14
push 0
push edi
mov ebx, eax
call fcn.00542e50
mov eax, dword [esp + 0x24]
add esp, 0x14
mov dword [eax + 0x10], ebx
test ebx, ebx
jle 0x438fb4
mov ecx, ebx
lea esi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push esi
push 0x30c
lea ecx, [esp + 0x660]
push ecx
push 0x599828
push str.DPIHW
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
cmp ax, word [esp + 0x658]
je 0x43904f
lea ecx, [esp + 0x658]
push 0x154
push ecx
lea ebx, [eax + 0x10]
lea edi, [esp + 0x28]
call fcn.00436620
mov ebx, dword [esp + 0x18]
push 0x2a8
add ebx, 0x564
push 0
push ebx
mov edi, eax
call fcn.00542e50
add esp, 0x14
xor eax, eax
test edi, edi
jle 0x439030
mov ecx, ebx
mov dx, word [esp + eax*4 + 0x20]
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, edi
jl 0x439020
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x10], edi
je 0x43907f
push 0
push 0x59b0a8
push str.DPISET_Num___DPIHW_Num
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x43907f
cmp dword [esp + 0x1c], 0
je 0x43907f
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp dword [ecx + 0x10], eax
jle 0x43907f
mov edx, ecx
lea ecx, [edx + 0x564]
lea esp, [esp]
lea edi, [eax + 1]
mov word [ecx], di
inc eax
add ecx, 2
cmp eax, dword [edx + 0x10]
jl 0x439070
cmp byte [0x5dfdd8], 0
je 0x439156
mov eax, dword [esp + 0x14]
push esi
push 0x30c
lea edx, [esp + 0x660]
push edx
push 0x599828
push str.DPILK
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor ecx, ecx
cmp cx, word [esp + 0x658]
je 0x43912f
lea edx, [esp + 0x658]
push 0x154
push edx
lea ebx, [ecx + 0x10]
lea edi, [esp + 0x28]
call fcn.00436620
mov ebx, dword [esp + 0x18]
push 0x2a8
add ebx, 0x80c
push 0
push ebx
mov edi, eax
call fcn.00542e50
add esp, 0x14
xor eax, eax
test edi, edi
jle 0x439110
mov ecx, ebx
jmp 0x439100
mov dx, word [esp + eax*4 + 0x20]
mov word [ecx], dx
inc eax
add ecx, 2
cmp eax, edi
jl 0x439100
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x10], edi
je 0x439156
push 0
push 0x59b0a8
push str.DPISET_Num___DPILK_Num
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x439156
cmp dword [esp + 0x1c], 0
je 0x439156
mov edx, dword [esp + 0x10]
xor eax, eax
cmp dword [edx + 0x10], eax
jle 0x439156
lea ecx, [edx + 0x80c]
lea edi, [eax + 1]
mov word [ecx], di
inc eax
add ecx, 2
cmp eax, dword [edx + 0x10]
jl 0x439147
mov edx, dword [esp + 0x14]
push esi
push 0x104
lea ecx, [esp + 0x660]
push ecx
push 0x599828
push 0x5a14a0
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [esp + 0x658]
push 8
push eax
mov ebx, 0xa
lea edi, [esp + 0x578]
call fcn.00436620
mov ecx, dword [ebp + 8]
add esp, 8
cmp ecx, eax
jne 0x4391c4
xor eax, eax
test ecx, ecx
jle 0x439203
lea ecx, [ebp + 0xc]
jmp 0x4391b0
mov edx, dword [esp + eax*4 + 0x570]
mov dword [ecx], edx
inc eax
add ecx, 4
cmp eax, dword [ebp + 8]
jl 0x4391b0
jmp 0x439203
test eax, eax
jle 0x4391dc
push 0
push 0x59b0a8
push str.DPI___DM.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [ebp]
cmp eax, 0x3050
je 0x4391f4
cmp eax, 0x5050
jne 0x439203
mov esi, 0x5cb134
jmp 0x4391f9
mov esi, 0x5cb114
lea edi, [ebp + 0xc]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
cmp dword [ebp + 8], ebx
jle 0x43929f
lea edi, [ebp + 0xc]
mov edx, dword [ebp]
mov esi, dword [edi]
test edx, edx
je 0x43925b
xor ecx, ecx
mov eax, 0x5d1988
cmp edx, dword [eax]
je 0x439234
add eax, 0xab4
inc ecx
cmp eax, 0x6b5098
jl 0x439221
jmp 0x43925b
imul ecx, ecx, 0xab4
mov edx, dword [ecx + 0x5d1998]
xor eax, eax
test edx, edx
jbe 0x43925b
cmp esi, dword [ecx + eax*4 + 0x5d199c]
je 0x439256
inc eax
cmp eax, edx
jb 0x439246
jmp 0x43925b
add eax, 1
jne 0x439292
push esi
push str.Wrong_default_dpi_value:__d
push 0x103
lea eax, [esp + 0x664]
push 0x104
push eax
call fcn.005403d0
add esp, 0x14
push 0
push 0x59b0a8
lea ecx, [esp + 0x660]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
inc ebx
add edi, 4
cmp ebx, dword [ebp + 8]
jl 0x439211
mov edx, dword [esp + 0x18]
xor eax, eax
push edx
push 0x104
mov dword [esp + 0x579], eax
mov dword [esp + 0x57d], eax
mov dword [esp + 0x581], eax
mov dword [esp + 0x585], eax
mov dword [esp + 0x589], eax
mov word [esp + 0x58d], ax
mov byte [esp + 0x58f], al
lea eax, [esp + 0x660]
push eax
push 0x599828
lea edi, [ebp + 0x2c]
mov ecx, 8
mov esi, 0x5cb214
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x24]
push 0x5a3c50
push ecx
mov byte [esp + 0x588], 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea edx, [esp + 0x658]
push 0x18
push edx
mov ebx, 0xa
lea edi, [esp + 0x578]
call fcn.004366f0
mov ecx, dword [ebp + 8]
lea edx, [ecx + ecx*2]
add esp, 8
cmp edx, eax
jne 0x439373
xor edx, edx
test ecx, ecx
jle 0x439373
lea eax, [esp + 0x571]
lea ecx, [ebp + 0x2c]
lea esp, [esp]
movzx esi, byte [eax + 1]
movzx edi, byte [eax]
shl esi, 8
or esi, edi
movzx edi, byte [eax - 1]
shl esi, 8
or esi, edi
mov dword [ecx], esi
inc edx
add ecx, 4
add eax, 3
cmp edx, dword [ebp + 8]
jl 0x439350
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push esi
push 0xa
push str.KEYH
push edi
call ebx
push esi
push 0x46
push str.KEYY
push edi
mov dword [ebp + 0x528], eax
call ebx
push esi
push 0x190
push str.MOUSEX
push edi
mov dword [ebp + 0x524], eax
call ebx
push esi
push 0x32
push str.MOUSEY
push edi
mov dword [ebp + 0x52c], eax
call ebx
push esi
push 0xe
push 0x5a3c90
push edi
mov dword [ebp + 0x530], eax
call ebx
mov ecx, eax
and ecx, 0x80000001
mov dword [ebp + 0x70], eax
jns 0x4393e5
dec ecx
or ecx, 0xfffffffe
inc ecx
jne 0x438dd9
cdq
sub eax, edx
sar eax, 1
xor edi, edi
cmp eax, edi
mov dword [ebp + 0x70], eax
jle 0x438dd9
cmp eax, 0x1e
jg 0x438dd9
push 0x4ac
lea edx, [esp + 0x28]
push edi
push edx
mov dword [esp + 0x2c], edi
call fcn.00542e50
add esp, 0xc
lea esi, [esp + 0x3c]
push 0x64
lea eax, [esp + 0x594]
push 0
push eax
call fcn.00542e50
inc edi
push edi
push 0x5a3c98
push 0x31
lea ecx, [esp + 0x60c]
push 0x32
push ecx
mov dword [esp + 0x3c], edi
call fcn.005403d0
mov edx, dword [esp + 0x38]
add esp, 0x20
push edx
mov edx, dword [esp + 0x18]
push 0x32
lea eax, [esp + 0x598]
push eax
push 0
lea ecx, [esp + 0x604]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
cmp ax, word [esp + 0x590]
je 0x439563
lea ecx, [esp + 0x590]
push 4
push ecx
lea ebx, [eax + 0x10]
lea edi, [esp + 0x578]
call fcn.00436620
add esp, 8
cmp eax, 4
je 0x4394bf
push 0
push str.Error
push str.Key_value_error
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x439553
mov al, byte [esp + 0x570]
mov cl, byte [esp + 0x574]
movzx edx, al
movzx edi, cl
shl edx, 0x18
and edi, 0xffffff
or edx, edi
mov dword [esi - 0x1c], edx
movzx edx, byte [esp + 0x57c]
mov dword [esi - 8], edx
cmp al, 8
jne 0x439512
cmp cl, 0xa6
jne 0x439501
mov eax, dword [esp + 0x578]
mov dword [esi + 8], eax
jmp 0x439553
cmp cl, 0xa4
jne 0x439553
mov ecx, dword [esp + 0x578]
mov dword [esi + 8], ecx
jmp 0x439553
cmp al, 2
jne 0x439545
mov al, byte [esp + 0x578]
mov dword [esi - 0x1c], 0x20000a1
mov byte [esi + 1], cl
test al, 1
je 0x43952e
or byte [esi], 1
test al, 2
je 0x439535
or byte [esi], 2
test al, 4
je 0x43953c
or byte [esi], 4
test al, 8
je 0x439553
or byte [esi], 8
jmp 0x439553
cmp al, 9
jne 0x439553
mov edx, dword [esp + 0x578]
mov dword [esi + 8], edx
mov edi, dword [esp + 0x1c]
add esi, 0x28
cmp edi, 0x1e
jl 0x439421
lea eax, [ebp + 0x74]
mov ecx, 0x12c
lea esi, [esp + 0x20]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x1e
cmp dword [eax], 0
jne 0x439583
mov dword [eax], 0x80000a2
add eax, 0x28
sub ecx, 1
jne 0x439578
xor esi, esi
add ebp, 0x564
push 0x64
lea eax, [esp + 0x594]
push 0
push eax
call fcn.00542e50
inc esi
push esi
push str.Mark_d
push 0x31
lea ecx, [esp + 0x60c]
push 0x32
push ecx
call fcn.005403d0
mov edx, dword [esp + 0x38]
add esp, 0x20
push edx
mov edx, dword [esp + 0x18]
push 0x32
lea eax, [esp + 0x598]
push eax
push 0
lea ecx, [esp + 0x604]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
cmp ax, word [esp + 0x590]
je 0x43965e
lea ecx, [esp + 0x590]
push 4
push ecx
lea ebx, [eax + 0xa]
lea edi, [esp + 0x578]
call fcn.00436620
add esp, 8
cmp eax, 4
je 0x439626
push 0
push str.Error
push str.Mark_value_error
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x439652
mov eax, dword [esp + 0x570]
mov edx, dword [esp + 0x578]
mov ecx, dword [esp + 0x574]
add edx, eax
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x57c]
add eax, ecx
mov dword [ebp], ecx
mov dword [ebp + 4], edx
mov dword [ebp + 8], eax
add ebp, 0x10
cmp esi, 0x1e
jl 0x439593
mov eax, 1
jmp 0x438ddb