Function at 0x403b30
Capabilities:
Check if file exists
Enumerate files on windows
Log keystrokes via polling
Set console window title

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x443df5
mov eax, dword fs:[0]
push eax
sub esp, 0x3d8
mov eax, dword [0x45c06c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push str.Logitech_WingMan_1.1
call dword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
xorps xmm0, xmm0
movups xmmword [ebp - 0x58], xmm0
mov dword [ebp - 0x58], 0
movups xmmword [ebp - 0x68], xmm0
mov dword [ebp - 0x54], 0xf
mov byte [ebp - 0x68], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
call fcn.00408710
mov dword [ebp - 0x50], eax
push 0xa
push str.Config.ini
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 1
call fcn.00401fe0
push 0
sub esp, 8
mov dword [ebp - 4], 2
mov eax, esp
lea ecx, [ebp - 0x68]
sub esp, 8
mov dword [eax], str.Mode
mov dword [eax + 4], 4
mov eax, esp
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
mov dword [0x45f784], eax
lea ecx, [ebp - 0x68]
push 6
sub esp, 8
mov eax, esp
sub esp, 8
mov dword [eax], str.ButtonCount
mov dword [eax + 4], 0xb
mov eax, esp
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0
sub esp, 8
mov dword [ebp - 0x3c0], eax
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [ecx], str.PedalsDeadZone
mov dword [ecx + 4], 0xe
lea ecx, [ebp - 0x68]
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0
sub esp, 8
lea ecx, [ebp - 0x68]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4550a8]
cvttsd2si eax, xmm0
mov dword [ebp - 0x3e4], eax
mov eax, esp
sub esp, 8
mov dword [eax], str.DeadZone
mov dword [eax + 4], 8
mov eax, esp
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0xb00
sub esp, 8
mov esi, eax
mov eax, esp
sub esp, 8
mov dword [eax], 0x454d9c
mov dword [eax + 4], 3
mov eax, esp
lea ecx, [ebp - 0x68]
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0xa082
sub esp, 8
mov dword [ebp - 0x3cc], eax
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [ecx], 0x454da0
mov dword [ecx + 4], 3
lea ecx, [ebp - 0x68]
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0x7fff
sub esp, 8
mov dword [ebp - 0x3c8], eax
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [ecx], str.Center
mov dword [ecx + 4], 6
lea ecx, [ebp - 0x68]
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0xa082
sub esp, 8
mov dword [ebp - 0x3e0], eax
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [ecx], str.CenterExternalPedals
mov dword [ecx + 4], 0x14
lea ecx, [ebp - 0x68]
mov dword [eax], str.Wheel
mov dword [eax + 4], 5
call fcn.00402320
push 0
sub esp, 8
mov dword [ebp - 0x3d4], eax
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [ecx], str.WheelPercentCenterOffset
mov dword [ecx + 4], 0x18
lea ecx, [ebp - 0x68]
mov dword [eax], str.Gamepad
mov dword [eax + 4], 7
call fcn.00402320
push 0x64
sub esp, 8
lea ecx, [ebp - 0x68]
mov eax, esp
sub esp, 8
mov dword [eax], str.Sensitivity
mov dword [eax + 4], 0xb
mov eax, esp
mov dword [eax], str.Gamepad
mov dword [eax + 4], 7
call fcn.00402320
push 1
sub esp, 8
lea ecx, [ebp - 0x68]
movd xmm0, eax
mov eax, esp
cvtdq2ps xmm0, xmm0
sub esp, 8
mov dword [eax], str.SleepTimeOut
mov dword [eax + 4], 0xc
mov eax, esp
divss xmm0, dword [0x4550b8]
mov dword [eax], str.Gamepad
mov dword [eax + 4], 7
movss dword [ebp - 0x3d8], xmm0
call fcn.00402320
sub esp, 0xc
mov dword [ebp - 0x3dc], eax
mov ecx, esp
sub esp, 8
mov dword [ecx], str.DInput
mov eax, esp
mov dword [ecx + 4], 6
lea ecx, [ebp - 0x68]
mov dword [eax], str.ExternalPedals
mov dword [eax + 4], 0xe
call fcn.00402620
mov byte [0x45f788], al
lea ecx, [ebp - 0x68]
push 0
sub esp, 8
mov dword [0x45f570], 0xff
mov eax, esp
mov dword [0x45f56c], 0x34
sub esp, 8
mov dword [eax], str.COMPort
mov dword [eax + 4], 7
mov eax, esp
mov dword [eax], str.ExternalPedals
mov dword [eax + 4], 0xe
call fcn.00402320
cmp byte [0x45f788], 0
mov ecx, dword [sym.imp.WINMM.dll_joyGetPosEx]
mov edi, dword [sym.imp.WINMM.dll_joyGetDevCapsA]
mov dword [ebp - 0x3bc], ecx
mov dword [ebp - 0x3d0], edi
je 0x403f85
push 0x45f56c
push 0
mov byte [0x45f5a4], 0
call ecx
test eax, eax
jne 0x403ef5
push 0x194
push 0x45f5b0
push eax
call edi
test eax, eax
jne 0x403ef5
cmp dword [0x45f5ec], 0x10
jne 0x403ef5
mov dword [0x45f564], eax
mov byte [0x45f5a4], 1
jmp 0x40412d
push 0x45f56c
push 1
call dword [ebp - 0x3bc]
test eax, eax
jne 0x403f37
push 0x194
push 0x45f5b0
push 1
call edi
test eax, eax
jne 0x403f37
cmp dword [0x45f5ec], 0x10
jne 0x403f37
mov dword [0x45f564], 1
mov byte [0x45f5a4], 1
jmp 0x40412d
push 0x45f56c
push 2
call dword [ebp - 0x3bc]
test eax, eax
jne 0x40412d
push 0x194
push 0x45f5b0
push 2
call edi
test eax, eax
jne 0x40412d
cmp dword [0x45f5ec], 0x10
jne 0x40412d
mov dword [0x45f564], 2
mov byte [0x45f5a4], 1
jmp 0x40412d
test eax, eax
je 0x40412d
push eax
lea eax, [ebp - 0x30]
push str..COM_d
push eax
call fcn.00408bc0
add esp, 0xc
lea eax, [ebp - 0x30]
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [0x45f568], eax
cmp eax, 0xffffffff
je 0x40412d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x40412d
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x9c], 0x1c
xorps xmm0, xmm0
push eax
push dword [0x45f568]
movlpd qword [ebp - 0x98], xmm0
movlpd qword [ebp - 0x90], xmm0
movlpd qword [ebp - 0x88], xmm0
call dword [sym.imp.KERNEL32.dll_GetCommState]
test eax, eax
je 0x40412d
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x98], 0x1c200
push eax
push dword [0x45f568]
mov word [ebp - 0x8a], 8
mov byte [ebp - 0x88], 0
call dword [sym.imp.KERNEL32.dll_SetCommState]
test eax, eax
je 0x40412d
push 0xc
push dword [0x45f568]
mov byte [0x45f5a5], 1
call dword [sym.imp.KERNEL32.dll_PurgeComm]
push 8
call fcn.0040e289
mov dword [ebp - 0x3c4], eax
push 4
mov byte [ebp - 4], 3
call fcn.0040e289
mov edi, eax
add esp, 8
mov dword [ebp - 0x3b8], edi
mov dword [edi], 0x402c20
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x44]
xorps xmm0, xmm0
mov dword [ebp - 0x34], 0
movups xmmword [ebp - 0x44], xmm0
call fcn.00401720
mov dword [ebp - 0x44], 0x454f34
mov dword [ebp - 0x3b8], 0
mov dword [ebp - 0x34], edi
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x44]
mov edi, dword [ebp - 0x3c4]
push edi
call fcn.004017f0
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4040de
push 4
push eax
call fcn.0040e536
add esp, 8
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x3b4], eax
mov eax, dword [ebp - 0x3c]
push eax
mov dword [ebp - 0x3b0], eax
call fcn.0040cef0
add esp, 4
test eax, eax
je 0x40410a
push eax
call fcn.0040c3a2
add esp, 4
push dword [ebp - 0x3b0]
call fcn.0040ce34
push dword [ebp - 0x3b4]
call fcn.0040c180
mov byte [ebp - 4], 2
add esp, 8
mov dword [0x45f5a0], edi
lea eax, [ebp - 0x210]
push eax
push str.Profiles.ini
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
push 0xb
push str.Default.ini
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x3b0], eax
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
call fcn.00406a40
mov byte [ebp - 4], 7
mov eax, dword [0x45f748]
cmp dword [0x45f74c], eax
je 0x40419a
movups xmm0, xmmword [ebp - 0x48]
mov edx, 0xf
mov byte [ebp - 0x48], 0
movups xmmword [eax], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [eax + 0x10], xmm0
add dword [0x45f748], 0x18
jmp 0x4041a7
lea ecx, [ebp - 0x48]
push ecx
push eax
call fcn.00408bf0
mov edx, dword [ebp - 0x34]
mov byte [ebp - 4], 2
cmp edx, 0x10
jb 0x4041dc
mov ecx, dword [ebp - 0x48]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4041d2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404dbf
push edx
push ecx
call fcn.0040e536
add esp, 8
sub esp, 8
lea ecx, [ebp - 0x68]
mov eax, esp
sub esp, 8
mov dword [eax], str.Default.ini
mov dword [eax + 4], 0xb
mov eax, esp
sub esp, 8
mov dword [eax], str.DefaultProfile
mov dword [eax + 4], 0xe
mov eax, esp
mov dword [eax], str.Gamepad
mov dword [eax + 4], 7
lea eax, [ebp - 0x80]
push eax
call fcn.004028d0
xor edi, edi
mov byte [ebp - 4], 8
cmp dword [ebp - 0x3b0], 0xffffffff
je 0x40438b
mov ecx, str.Default.ini
lea eax, [ebp - 0x1e4]
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404260
test dl, dl
je 0x40425c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404260
add eax, 2
add ecx, 2
test dl, dl
jne 0x404240
xor eax, eax
jmp 0x404265
sbb eax, eax
or eax, 1
test eax, eax
je 0x404364
lea ecx, [ebp - 0x1e4]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
lea edx, [ecx + 1]
mov byte [ebp - 0x48], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404288
sub ecx, edx
lea eax, [ebp - 0x1e4]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.00406a40
mov byte [ebp - 4], 9
mov eax, dword [0x45f748]
cmp dword [0x45f74c], eax
je 0x4042d5
movups xmm0, xmmword [ebp - 0x48]
mov edx, 0xf
mov byte [ebp - 0x48], 0
movups xmmword [eax], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [eax + 0x10], xmm0
add dword [0x45f748], 0x18
jmp 0x4042e2
lea ecx, [ebp - 0x48]
push ecx
push eax
call fcn.00408bf0
mov edx, dword [ebp - 0x34]
mov byte [ebp - 4], 8
cmp edx, 0x10
jb 0x404317
mov ecx, dword [ebp - 0x48]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40430d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404dbf
push edx
push ecx
call fcn.0040e536
add esp, 8
inc edi
lea eax, [ebp - 0x80]
cmp dword [ebp - 0x6c], 0x10
lea ecx, [ebp - 0x1e4]
cmovae eax, dword [ebp - 0x80]
nop dword [eax]
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x404350
test dl, dl
je 0x40434c
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x404350
add ecx, 2
add eax, 2
test dl, dl
jne 0x404330
xor ecx, ecx
jmp 0x404355
sbb ecx, ecx
or ecx, 1
mov eax, dword [0x45f560]
test ecx, ecx
cmove eax, edi
mov dword [0x45f560], eax
lea eax, [ebp - 0x210]
push eax
push dword [ebp - 0x3b0]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x404231
push dword [ebp - 0x3b0]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [0x45f560]
sub esp, 0x18
lea ecx, [eax + eax*2]
mov eax, dword [0x45f744]
lea eax, [eax + ecx*8]
mov ecx, esp
push eax
call fcn.00405220
call fcn.00403540
push 4
mov dword [ebp - 0x3ac], 0
mov dword [ebp - 0x3b8], 0
call fcn.0042d33a
add esp, 0x1c
mov dword [ebp - 0x3b4], eax
test eax, eax
jne 0x4043db
mov dword [ebp - 0x3b4], eax
jmp 0x4043e1
mov dword [eax], 0xffffffff
mov ecx, eax
call fcn.0040b540
push 0x20
call fcn.0042d33a
mov edi, eax
mov dword [ebp - 0x3b0], eax
add esp, 4
test edi, edi
je 0x404437
mov dword [edi + 4], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x1c], 0
mov dword [edi], 0x20
mov dword [edi + 8], 1
mov dword [edi + 0x10], 0
mov dword [edi + 0xc], 0x28e045e
jmp 0x40443f
xor edi, edi
mov dword [ebp - 0x3b0], edi
mov ecx, dword [ebp - 0x3b4]
mov edx, edi
call fcn.0040b730
mov ecx, dword [ebp - 0x3b4]
sub esp, 8
mov edx, edi
call fcn.0040ba60
add esp, 8
mov dword [ebp - 0xcc], 0xff
lea eax, [ebp - 0xd0]
mov dword [ebp - 0xd0], 0x34
mov dword [ebp - 0x3c4], 0
push eax
push 0
call dword [ebp - 0x3bc]
mov edi, dword [ebp - 0x3d0]
test eax, eax
jne 0x4044c4
push 0x194
lea eax, [ebp - 0x3a4]
push eax
push 0
call edi
test eax, eax
jne 0x4044c4
mov eax, dword [ebp - 0x3c0]
cmp dword [ebp - 0x368], eax
jne 0x4044c4
mov dword [ebp - 0x3c4], 0
jmp 0x404503
lea eax, [ebp - 0xd0]
push eax
push 1
call dword [ebp - 0x3bc]
test eax, eax
jne 0x40450a
push 0x194
lea eax, [ebp - 0x3a4]
push eax
push 1
call edi
test eax, eax
jne 0x40450a
mov eax, dword [ebp - 0x3c0]
cmp dword [ebp - 0x368], eax
jne 0x40450a
mov dword [ebp - 0x3c4], 1
mov byte [0x45f780], 1
call fcn.00403a60
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dword [ebp - 0x3d0], 0xffff
nop
push 0xa4
call edi
mov ecx, 0x8000
test cx, ax
je 0x404543
push 0x1b
call edi
mov ecx, 0x8000
test cx, ax
jne 0x404c5f
lea eax, [ebp - 0xd0]
xorps xmm0, xmm0
push eax
push dword [ebp - 0x3c4]
movq qword [ebp - 0x3c], xmm0
call dword [ebp - 0x3bc]
test eax, eax
sete byte [0x45f780]
test eax, eax
je 0x40459e
mov edx, dword [ebp - 0x3b0]
sub esp, 0xc
mov ecx, dword [ebp - 0x3b4]
mov eax, esp
xorps xmm0, xmm0
movq qword [eax], xmm0
mov dword [eax + 8], 0
call fcn.0040bbf0
add esp, 0xc
push dword [ebp - 0x3dc]
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x3ac]
test eax, eax
jne 0x40479d
push 0x12
call edi
shr eax, 0xf
test al, 1
je 0x4046a5
push 0x26
call edi
shr eax, 0xf
test al, 1
jne 0x4045d5
push 0x28
call edi
shr eax, 0xf
test al, 1
je 0x4046a5
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
cmp eax, edi
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
jne 0x4046a5
push 0x26
mov dword [ebp - 0x3ac], 0xf
call edi
shr eax, 0xf
test al, 1
je 0x404635
mov eax, dword [0x45f560]
test eax, eax
jle 0x404612
dec eax
jmp 0x404630
mov ecx, dword [0x45f748]
mov eax, 0x2aaaaaab
sub ecx, dword [0x45f744]
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
dec eax
add eax, edx
mov dword [0x45f560], eax
push 0x28
call edi
shr eax, 0xf
test al, 1
je 0x40467b
mov ecx, dword [0x45f748]
mov eax, 0x2aaaaaab
sub ecx, dword [0x45f744]
imul ecx
mov ecx, dword [0x45f560]
sar edx, 2
mov eax, edx
shr eax, 0x1f
dec eax
add eax, edx
cmp ecx, eax
jae 0x404671
inc ecx
mov dword [0x45f560], ecx
jmp 0x404681
xor ecx, ecx
mov dword [0x45f560], ecx
jmp 0x404681
mov ecx, dword [0x45f560]
lea eax, [ecx + ecx*2]
sub esp, 0x18
mov ecx, dword [0x45f744]
lea eax, [ecx + eax*8]
mov ecx, esp
push eax
call fcn.00405220
call fcn.00403540
add esp, 0x18
call fcn.00403a60
push 0x12
call edi
shr eax, 0xf
test al, 1
je 0x404722
push 0x25
call edi
shr eax, 0xf
test al, 1
jne 0x4046c6
push 0x27
call edi
shr eax, 0xf
test al, 1
je 0x404722
push 0x25
mov dword [ebp - 0x3ac], 0xf
call edi
shr eax, 0xf
test al, 1
je 0x4046f6
mov eax, dword [0x45f784]
test eax, eax
jle 0x4046ec
dec eax
mov dword [0x45f784], eax
jmp 0x4046f6
mov dword [0x45f784], 2
push 0x27
call edi
shr eax, 0xf
test al, 1
je 0x40471d
mov eax, dword [0x45f784]
cmp eax, 2
jge 0x404713
inc eax
mov dword [0x45f784], eax
jmp 0x40471d
mov dword [0x45f784], 0
call fcn.00403a60
push 0x12
call edi
mov ecx, 0x8000
test cx, ax
je 0x404797
push 0x78
call edi
mov ecx, 0x8000
test cx, ax
je 0x404797
cmp byte [0x45f789], 0
mov dword [ebp - 0x3ac], 0xf
sete al
mov byte [0x45f789], al
test al, al
je 0x404792
push 0x454bd4
mov dword [ebp - 0x3c8], 0
mov dword [ebp - 0x3cc], 0xffff
call fcn.0042b827
push str._n_Turn_the_steering_wheel_to_left_and_right__then_the_save_the_values_to_config_and_restart_app._n
call fcn.004010e0
add esp, 8
mov dword [ebp - 0x3b8], 0x12c
jmp 0x404797
call fcn.00403a60
mov eax, dword [ebp - 0x3ac]
cmp byte [0x45f789], 0
mov ecx, dword [ebp - 0x3b8]
mov dword [ebp - 0x3a8], ecx
mov dword [ebp - 0x3b8], eax
je 0x4047f4
test ecx, ecx
jne 0x4047f4
mov eax, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0x3cc]
cmp eax, ecx
mov edx, dword [ebp - 0x3c8]
cmovb ecx, eax
cmp eax, edx
mov dword [ebp - 0x3cc], ecx
cmova edx, eax
push edx
push ecx
push eax
push str._Center_d_Min_d__Max_d_n
mov dword [ebp - 0x3c8], edx
call fcn.004010e0
add esp, 0x10
mov ecx, dword [ebp - 0xb0]
mov edx, 0
movzx eax, word [0x45f7a0]
test cl, 0x20
mov dword [ebp - 0x3c0], 0
cmovne edx, eax
movzx eax, word [0x45f79c]
test cl, 0x10
mov ecx, 0
cmovne ecx, eax
movzx eax, word [0x45f798]
or dx, cx
test byte [ebp - 0xb0], 8
mov ecx, 0
cmovne ecx, eax
movzx eax, word [0x45f794]
or dx, cx
test byte [ebp - 0xb0], 4
mov ecx, 0
cmovne ecx, eax
movzx eax, word [0x45f790]
or dx, cx
test byte [ebp - 0xb0], 2
mov ecx, 0
cmovne ecx, eax
movzx eax, word [0x45f78c]
or dx, cx
test byte [ebp - 0xb0], 1
mov ecx, 0
cmovne ecx, eax
mov eax, dword [0x45f784]
or dx, cx
or word [ebp - 0x3c], dx
test eax, eax
jne 0x404a37
mov eax, dword [ebp - 0xc8]
mov edi, 0xffff
mov edx, dword [ebp - 0x3e0]
cmp eax, edx
jbe 0x40491c
sub eax, edx
jns 0x4048bd
xor eax, eax
jmp 0x4048c5
cmp eax, 0xffff
cmovg eax, edi
imul eax, eax, 0x64
mov ecx, edi
sub ecx, edx
movd xmm1, esi
cvtdq2ps xmm1, xmm1
cdq
idiv ecx
xor ecx, ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
movss xmm0, dword [ebp - 0x3d8]
cvtps2pd xmm0, xmm0
cmovae eax, ecx
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [0x4550b0]
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
test eax, eax
jns 0x404910
xor eax, eax
jmp 0x40496d
cmp eax, 0x7fff
mov ecx, 0x7fff
jmp 0x40496a
imul eax, eax, 0x64
mov ecx, edi
sub ecx, edx
movd xmm1, esi
xor edx, edx
cvtdq2ps xmm1, xmm1
div ecx
mov ecx, 0x64
sub ecx, eax
xor eax, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
cmovae ecx, eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4550c0]
cvttsd2si eax, xmm0
cmp eax, 0xffff8001
jge 0x404966
mov eax, 0xffff8001
jmp 0x40496d
xor ecx, ecx
test eax, eax
cmovg eax, ecx
mov ecx, dword [ebp - 0xc4]
movzx eax, ax
mov dword [ebp - 0x3c0], eax
cmp ecx, 0x7fff
jge 0x40498b
mov eax, 0x7fff
jmp 0x404996
cmp ecx, 0xffff
mov eax, ecx
cmovg eax, edi
add eax, 0xffff8001
mov edi, 0xff
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
test eax, eax
jns 0x4049b9
mov dword [ebp - 0x3ac], 0
jmp 0x4049c7
cmp eax, 0xff
cmovg eax, edi
mov dword [ebp - 0x3ac], eax
mov eax, 0x7fff
test ecx, ecx
jns 0x4049d4
xor ecx, ecx
jmp 0x4049dd
cmp ecx, 0x7fff
cmovg ecx, eax
sub eax, ecx
cdq
and edx, 0x7f
add edx, eax
sar edx, 7
test edx, edx
jns 0x4049f0
xor edx, edx
jmp 0x4049f9
cmp edx, 0xff
cmovg edx, edi
mov edi, dword [ebp - 0x3e4]
xor ecx, ecx
cmp dword [ebp - 0x3ac], edi
mov eax, dword [ebp - 0x3ac]
movzx eax, al
cmovge ecx, eax
movzx eax, dl
mov byte [ebp - 0x3a], cl
xor ecx, ecx
cmp edx, edi
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
cmovge ecx, eax
mov eax, dword [ebp - 0x3c0]
mov byte [ebp - 0x39], cl
movzx eax, ax
jmp 0x404bf9
cmp eax, 1
jne 0x404adc
cmp byte [0x45f5a4], 0
je 0x404aa3
push 0x45f56c
push dword [0x45f564]
call dword [ebp - 0x3bc]
test eax, eax
jne 0x404a74
mov eax, dword [0x45f588]
shr eax, 8
mov byte [ebp - 0x3a], al
mov eax, dword [0x45f584]
shr eax, 8
mov byte [ebp - 0x39], al
mov eax, dword [0x45f784]
cmp eax, 1
je 0x404a87
cmp eax, 2
jne 0x404bf3
mov eax, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0x3d4]
cmp eax, ecx
jbe 0x404b83
sub eax, ecx
jns 0x404b0b
xor eax, eax
jmp 0x404b18
cmp byte [0x45f5a5], 0
je 0x404a87
movss xmm0, dword [0x45f5a8]
mulss xmm0, dword [0x4550bc]
cvttss2si eax, xmm0
movss xmm0, dword [0x45f5ac]
mulss xmm0, dword [0x4550bc]
mov byte [ebp - 0x3a], al
cvttss2si eax, xmm0
mov byte [ebp - 0x39], al
jmp 0x404a87
cmp eax, 2
jne 0x404a79
mov eax, dword [ebp - 0xb0]
and eax, dword [0x45f7a4]
neg eax
sbb al, al
mov byte [ebp - 0x3a], al
mov eax, dword [0x45f7a8]
and eax, dword [ebp - 0xb0]
neg eax
sbb al, al
mov byte [ebp - 0x39], al
jmp 0x404a87
cmp eax, 0xffff
mov ecx, 0xffff
cmovg eax, ecx
mov ecx, dword [ebp - 0x3c8]
sub ecx, dword [ebp - 0x3d4]
imul eax, eax, 0x64
movd xmm1, esi
cvtdq2ps xmm1, xmm1
cdq
idiv ecx
xor ecx, ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
movss xmm0, dword [ebp - 0x3d8]
cvtps2pd xmm0, xmm0
cmovae eax, ecx
movd xmm1, eax
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [0x4550b0]
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
test eax, eax
jns 0x404b71
xor eax, eax
movzx eax, ax
jmp 0x404bf9
cmp eax, 0x7fff
mov ecx, 0x7fff
cmovg eax, ecx
movzx eax, ax
jmp 0x404bf9
mov edx, dword [ebp - 0x3cc]
sub eax, edx
jns 0x404b91
xor eax, eax
jmp 0x404b9d
cmp eax, 0xffff
cmovg eax, dword [ebp - 0x3d0]
imul eax, eax, 0x64
sub ecx, edx
movd xmm1, esi
cvtdq2ps xmm1, xmm1
cdq
idiv ecx
mov ecx, 0x64
sub ecx, eax
xor eax, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
cmovae ecx, eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4550c0]
cvttsd2si eax, xmm0
cmp eax, 0xffff8001
jge 0x404be7
mov eax, 0xffff8001
movzx eax, ax
jmp 0x404bf9
xor ecx, ecx
test eax, eax
cmovg eax, ecx
movzx eax, ax
jmp 0x404bf9
mov eax, dword [ebp - 0x3c0]
mov edx, dword [ebp - 0x3b0]
sub esp, 0xc
mov ecx, dword [ebp - 0x3b4]
mov word [ebp - 0x38], ax
mov eax, esp
movq xmm0, qword [ebp - 0x3c]
movq qword [eax], xmm0
mov dword [eax + 8], 0
call fcn.0040bbf0
add esp, 0xc
push dword [ebp - 0x3dc]
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0x3b8]
test ecx, ecx
lea eax, [ecx - 1]
cmovle eax, ecx
mov ecx, dword [ebp - 0x3a8]
mov dword [ebp - 0x3ac], eax
test ecx, ecx
lea eax, [ecx - 1]
cmovle eax, ecx
mov dword [ebp - 0x3b8], eax
jmp 0x404520
cmp byte [0x45f5a5], 0
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x404d0f
mov esi, dword [0x45f5a0]
mov byte [0x45f5a5], 0
mov eax, dword [esi + 4]
test eax, eax
jne 0x404ca1
push 1
call fcn.0040c3cf
mov eax, dword [esi + 4]
add esp, 4
test eax, eax
jne 0x404ca1
push 1
call fcn.0040c3cf
add esp, 4
call sub.KERNEL32.dll_GetCurrentThreadId
cmp dword [esi + 4], eax
jne 0x404cb5
push 5
call fcn.0040c3cf
add esp, 4
push 0
push dword [esi + 4]
push dword [esi]
call fcn.0040d1a3
add esp, 0xc
test eax, eax
je 0x404cd2
push 2
call fcn.0040c3cf
add esp, 4
mov eax, dword [0x45f5a0]
mov dword [esi], 0
mov dword [esi + 4], 0
test eax, eax
je 0x404cfd
cmp dword [eax + 4], 0
jne 0x404dc4
push 8
push eax
call fcn.0040e536
add esp, 8
push dword [0x45f568]
mov dword [0x45f5a0], 0
call edi
mov esi, dword [ebp - 0x3b0]
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x404d34
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x404d34
push eax
call edi
mov dword [esi + 0x1c], 0
mov ecx, dword [ebp - 0x3b4]
mov edx, esi
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
call fcn.0040b920
push esi
call fcn.0042c7cb
mov edx, dword [ebp - 0x6c]
add esp, 4
cmp edx, 0x10
jb 0x404d88
mov ecx, dword [ebp - 0x80]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x404d7e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404dc9
push edx
push ecx
call fcn.0040e536
add esp, 8
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0xf
mov byte [ebp - 0x80], 0
call fcn.00403960
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040e124
mov esp, ebp
pop ebp
ret
call fcn.0042d2e9
call fcn.0042b832
call fcn.0042d2e9
int3