Function at 0x4b95e0
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x515dfb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x154
mov eax, dword [0x5594e8]
xor eax, dword [esp + 0x160]
push ebx
push ebp
push esi
push edi
mov esi, ecx
push fcn.00401d50
push fcn.00401d30
xor ebx, ebx
push 0x138
mov dword [esp + 0x16c], eax
push 4
lea eax, [esi + 0x34c]
push eax
mov dword [esp + 0x70], esi
mov dword [esi], fcn.004b8bd0
mov byte [esi + 8], bl
mov byte [esi + 9], bl
mov byte [esi + 0xa], bl
mov byte [esi + 0xb], bl
mov dword [esi + 0x33c], ebx
mov dword [esi + 0x340], ebx
mov dword [esi + 0x344], ebx
mov dword [esi + 0x348], ebx
call fcn.004edb51
push str.Starting...
push str.UveInput::UveInput
push ecx
mov byte [esi + 0x82c], 1
mov dword [esi + 0x830], ebx
mov dword [esi + 0x834], ebx
mov dword [esi + 0x838], ebx
mov dword [esi + 0x83c], ebx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
mov dword [esp + 0x17c], ebx
mov dword [esi + 0x840], ebx
mov dword [esi + 0x844], 0x3ff00000
mov byte [esi + 0x860], 1
mov byte [esi + 0x861], bl
mov byte [esi + 0x862], bl
call fcn.00402110
mov ecx, dword [0x55cd0c]
mov edx, dword [ecx + 0x85c]
push edx
call fcn.00475320
xor eax, eax
mov ecx, 0x4e
lea edi, [esi + 0xc]
rep stosd dword es:[edi], eax
mov ecx, 0x4e
lea edi, [esi + 0x144]
rep stosd dword es:[edi], eax
lea ecx, [esi + 0x27c]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
xor edx, edx
lea eax, [esi + 0x28c]
mov dword [eax], edx
mov dword [eax + 4], edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
xor eax, eax
mov ecx, 0x14
lea edi, [esi + 0x2ec]
rep stosd dword es:[edi], eax
mov ecx, 0x14
lea edi, [esi + 0x29c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x20]
push ecx
mov byte [esi + 8], 1
call fcn.0041b8c0
mov byte [esp + 0x180], 1
push str.CI3Xmas.cfg
push eax
lea edx, [esp + 0x38]
push edx
call fcn.0041b800
mov edx, dword [eax]
add esp, 0x20
mov ecx, esi
call fcn.004b8bd0
push edx
push 0x100
lea ecx, [esp + 0x68]
push ecx
lea edi, [eax + 4]
mov eax, dword [edi]
push 0x5245f0
push str.bTrackKeyboard
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebp, eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b97a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b97c8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp ebp, ebx
jle 0x4b97d7
cmp byte [esp + 0x60], 0x59
sete al
mov byte [esi + 8], al
cmp byte [esi + 8], bl
mov ebp, 0x5247d4
jne 0x4b97e6
mov ebp, 0x5247d0
lea ecx, [esp + 0x1c]
push ecx
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x17c], 2
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push ebp
push str.bTrackKeyboard
push ecx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b983b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9860
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea eax, [esp + 0x1c]
push eax
mov byte [esi + 9], 1
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea ecx, [esp + 0x1c]
push ecx
mov byte [esp + 0x17c], 3
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push 0x100
lea edx, [esp + 0x68]
push edx
push 0x5245f0
push str.bTrackMouse
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebp, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b98c9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b98ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp ebp, ebx
jle 0x4b98fd
cmp byte [esp + 0x60], 0x59
sete al
mov byte [esi + 9], al
cmp byte [esi + 9], bl
mov ebp, 0x5247d4
jne 0x4b990c
mov ebp, 0x5247d0
lea ecx, [esp + 0x1c]
push ecx
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x17c], 4
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push ebp
push str.bTrackMouse
push ecx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9961
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9986
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea eax, [esp + 0x1c]
push eax
mov byte [esi + 0xb], 1
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea ecx, [esp + 0x1c]
push ecx
mov byte [esp + 0x17c], 5
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push 0x100
lea edx, [esp + 0x68]
push edx
push 0x5245f0
push str.bTrackJoystick
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebp, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b99ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9a14
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp ebp, ebx
jle 0x4b9a23
cmp byte [esp + 0x60], 0x59
sete al
mov byte [esi + 0xb], al
cmp byte [esi + 0xb], bl
mov ebp, 0x5247d4
jne 0x4b9a32
mov ebp, 0x5247d0
lea ecx, [esp + 0x1c]
push ecx
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x17c], 6
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push ebp
push str.bTrackJoystick
push ecx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9a87
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9aac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x24], 0x9999999a
mov dword [esp + 0x28], 0x3fc99999
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea ecx, [esp + 0x1c]
push ecx
mov byte [esp + 0x17c], 7
call fcn.0041b800
mov eax, dword [eax]
mov ecx, dword [edi]
add esp, 0x10
push eax
push 0x100
lea edx, [esp + 0x68]
push edx
push 0x5245f0
push str.joystickDeadZone
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebp, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9b21
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9b46
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp ebp, ebx
jle 0x4b9b71
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x64]
push 0x538958
push ecx
call fcn.004edd07
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
call fcn.004fd868
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
lea edx, [esp + 0x24]
push str._.8lf
push edx
mov byte [esp + 0x17c], 8
call fcn.00401f80
lea eax, [esp + 0x24]
push eax
call fcn.0041b8c0
push str.CI3Xmas.cfg
push eax
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x18c], 9
call fcn.0041b800
mov eax, dword [eax]
mov ebp, dword [esp + 0x3c]
mov edi, dword [edi]
add esp, 0x20
push eax
push ebp
push str.joystickDeadZone
push edi
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b9bfe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x16c], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9c24
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
add ebp, 0xfffffff0
mov byte [esp + 0x16c], bl
lea eax, [ebp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4b9c46
mov ecx, dword [ebp]
mov edx, dword [ecx]
push ebp
call dword [edx + 4]
call fcn.0050953d
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x40]
push ebx
lea ebp, [esi + 0x33c]
push ebp
push 0x53f880
push 0x700
push eax
call sub.DINPUT.dll_DirectInputCreateEx
cmp eax, ebx
jge 0x4b9ceb
mov edx, dword [0x55cd0c]
push 0x28
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.DirectInputCreateEx_FASTINSTANCE__DIRECTINPUT_VERSION__IID_IDirectInput7___LPVOID_dxInput__NULL_
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [edx + 0x860]
call fcn.0044d000
mov eax, dword [eax]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xa
call fcn.00402110
mov ecx, dword [0x55cd0c]
mov edx, dword [ecx + 0x860]
push edx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9ceb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp byte [esi + 8], bl
je 0x4b9ee8
push str.Grabbing_keyboard.
push str.UveInput::UveInput
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x85c]
push ecx
call fcn.00475320
mov eax, dword [ebp]
mov edx, dword [eax]
add esp, 0x10
push ebx
lea edi, [esi + 0x340]
push edi
push 0x53f870
push 0x53f7c0
push eax
call dword [edx + 0x24]
cmp eax, ebx
jge 0x4b9dbf
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x2f
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.dxInput__CreateDeviceEx_GUID_SysKeyboard__IID_IDirectInputDevice7___LPVOID_keyboardDevice__NULL_
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xb
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b9dbf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [edi]
mov ecx, dword [eax]
push 0x53f950
push eax
call dword [ecx + 0x2c]
cmp eax, ebx
jge 0x4b9e4d
push 0x30
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.keyboardDevice__SetDataFormat_c_dfDIKeyboard_
push eax
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
lea edx, [esp + 0x28]
push edx
call fcn.0044d000
mov ecx, dword [eax]
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xc
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x860]
push eax
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9e4d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
call fcn.0050953d
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 0x1c]
mov ecx, dword [edi]
mov edx, dword [ecx]
push 6
push eax
push ecx
call dword [edx + 0x34]
cmp eax, ebx
jge 0x4b9ee8
mov edx, dword [0x55cd0c]
push 0x31
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.keyboardDevice__SetCooperativeLevel_FASTWINDOWHANDLE_DISCL_FOREGROUND__DISCL_NONEXCLUSIVE_
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [edx + 0x860]
call fcn.0044d000
mov eax, dword [eax]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xd
call fcn.00402110
mov ecx, dword [0x55cd0c]
mov edx, dword [ecx + 0x860]
push edx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b9ee8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp byte [esi + 9], bl
je 0x4ba0e5
push str.Grabbing_mouse.
push str.UveInput::UveInput
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x85c]
push ecx
call fcn.00475320
mov eax, dword [ebp]
mov edx, dword [eax]
add esp, 0x10
push ebx
lea edi, [esi + 0x344]
push edi
push 0x53f870
push 0x53f7d0
push eax
call dword [edx + 0x24]
cmp eax, ebx
jge 0x4b9fbc
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x38
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.dxInput__CreateDeviceEx_GUID_SysMouse__IID_IDirectInputDevice7___LPVOID_mouseDevice__NULL_
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xe
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b9fbc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [edi]
mov ecx, dword [eax]
push 0x53f938
push eax
call dword [ecx + 0x2c]
cmp eax, ebx
jge 0x4ba04a
push 0x39
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.mouseDevice__SetDataFormat_c_dfDIMouse_
push eax
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
lea edx, [esp + 0x28]
push edx
call fcn.0044d000
mov ecx, dword [eax]
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0xf
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x860]
push eax
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ba04a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
call fcn.0050953d
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 0x1c]
mov ecx, dword [edi]
mov edx, dword [ecx]
push 5
push eax
push ecx
call dword [edx + 0x34]
cmp eax, ebx
jge 0x4ba0e5
mov edx, dword [0x55cd0c]
push 0x3d
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.mouseDevice__SetCooperativeLevel_FASTWINDOWHANDLE_DISCL_FOREGROUND__DISCL_EXCLUSIVE_
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [edx + 0x860]
call fcn.0044d000
mov eax, dword [eax]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x10
call fcn.00402110
mov ecx, dword [0x55cd0c]
mov edx, dword [ecx + 0x860]
push edx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ba0e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp byte [esi + 0xb], bl
je 0x4ba5d3
mov eax, dword [ebp]
mov ecx, dword [eax]
mov ebp, 1
push ebp
push esi
push 0x4b9480
push 4
push eax
call dword [ecx + 0x10]
cmp eax, ebx
jge 0x4ba186
push 0x44
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.dxInput__EnumDevices_DIDEVTYPE_JOYSTICK__UveInput::enumerateCallback__this__DIEDFL_ATTACHEDONLY_
push eax
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
lea edx, [esp + 0x28]
push edx
call fcn.0044d000
mov ecx, dword [eax]
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x11
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x860]
push eax
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ba186
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
cmp dword [esi + 0x348], ebx
jne 0x4ba1c2
push str.Did_not_find_any_joysticks.
push str.UveInput::UveInput
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x85c]
push ecx
call fcn.00475320
add esp, 0x10
jmp 0x4ba5d3
push str.Grabbing_joystick.
push str.UveInput::UveInput
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x85c]
push eax
call fcn.00475320
mov eax, dword [esi + 0x348]
mov ecx, dword [eax]
add esp, 0x10
push 0x53f920
push eax
call dword [ecx + 0x2c]
cmp eax, ebx
jge 0x4ba284
push 0x4c
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.joystickDevice__SetDataFormat_c_dfDIJoystick_
push eax
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
lea edx, [esp + 0x28]
push edx
call fcn.0044d000
mov ecx, dword [eax]
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x12
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x860]
push eax
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ba284
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
call fcn.0050953d
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax + 0x1c]
mov ecx, dword [esi + 0x348]
mov edx, dword [ecx]
push 6
push eax
push ecx
call dword [edx + 0x34]
cmp eax, ebx
jge 0x4ba323
mov edx, dword [0x55cd0c]
push 0x4e
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.joystickDevice__SetCooperativeLevel_FASTWINDOWHANDLE__DISCL_FOREGROUND__DISCL_NONEXCLUSIVE_
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [edx + 0x860]
call fcn.0044d000
mov eax, dword [eax]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x13
call fcn.00402110
mov ecx, dword [0x55cd0c]
mov edx, dword [ecx + 0x860]
push edx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4ba323
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esi + 0x348]
lea edx, [esp + 0x44]
push edx
mov edi, 0x10
push 4
mov dword [esp + 0x4c], 0x18
mov dword [esp + 0x50], edi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], 0xfffffc18
mov dword [esp + 0x60], 0x3e8
mov dword [esp + 0x54], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
cmp eax, ebx
jge 0x4ba3e0
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x59
push str.engineUveInput.cpp
push str.UveInput::UveInput
push 0x53c7d0
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x14
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ba3e0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esi + 0x348]
lea edx, [esp + 0x44]
push edx
push 4
mov dword [esp + 0x54], 4
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
cmp eax, ebx
jge 0x4ba47c
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x5b
push str.engineUveInput.cpp
push str.UveInput::UveInput
push 0x53c7d0
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x15
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ba47c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
fld qword [esp + 0x20]
mov dword [esp + 0x30], 0x14
fmul qword [0x53c7c8]
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ebp
call fcn.004ed8c0
lea edx, [esp + 0x30]
push edx
mov dword [esp + 0x44], eax
mov eax, dword [esi + 0x348]
push 5
mov dword [esp + 0x40], ebx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
cmp eax, ebx
jge 0x4ba537
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x65
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.joystickDevice__SetProperty_DIPROP_DEADZONE__dipdz.diph_
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x16
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ba537
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esi + 0x348]
lea edx, [esp + 0x30]
push edx
push 5
mov dword [esp + 0x40], 4
mov ecx, dword [eax]
push eax
call dword [ecx + 0x18]
cmp eax, ebx
jge 0x4ba5d3
mov ecx, dword [0x55cd0c]
mov ecx, dword [ecx + 0x860]
push 0x67
push str.engineUveInput.cpp
push str.UveInput::UveInput
push str.joystickDevice__SetProperty_DIPROP_DEADZONE__dipdz.diph_
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0044d000
mov edx, dword [eax]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x51fa70
mov byte [esp + 0x188], 0x17
call fcn.00402110
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x860]
push ecx
call fcn.0044ce20
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 0x1c
mov byte [esp + 0x16c], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4ba5d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [0x55cd0c]
mov ecx, dword [eax + 0x868]
mov eax, dword [ecx + 0x3c]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 0x38]
fild dword [esp + 0x14]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x14], eax
lea ecx, [esi + 0x848]
fild dword [esp + 0x14]
mov dword [esp + 0x28], 0
push str.Started.
push str.UveInput::UveInput
fstp dword [esp + 0x28]
mov edx, dword [esp + 0x28]
mov dword [ecx], edx
mov edx, dword [esp + 0x30]
fstp dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov eax, dword [0x55cd0c]
mov eax, dword [eax + 0x868]
mov dword [esp + 0x28], 0
mov ecx, dword [esp + 0x28]
fild dword [eax + 0x3c]
mov dword [esp + 0x2c], 0
fild dword [eax + 0x38]
mov edx, dword [esp + 0x2c]
mov dword [esi + 0x830], ecx
mov dword [esi + 0x834], edx
fstp dword [esp + 0x30]
mov eax, dword [esp + 0x30]
mov dword [esi + 0x838], eax
fstp dword [esp + 0x34]
mov ecx, dword [esp + 0x34]
push ecx
mov dword [esi + 0x83c], ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str._s__:__s
call fcn.00402110
mov edx, dword [0x55cd0c]
mov eax, dword [edx + 0x85c]
push eax
call fcn.00475320
mov ecx, dword [esp + 0x174]
add esp, 0x10
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x158]
xor ecx, dword [esp + 0x168]
pop ebp
pop ebx
add esp, 0x160
jmp fcn.004ecf23