Function at 0x407440
Capabilities:
Get number of processors
Read .ini file
Read file on windows
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5c661e
mov eax, dword fs:[0]
push eax
sub esp, 0x120
mov eax, dword [0x617560]
xor eax, esp
mov dword [esp + 0x118], eax
push ebx
push esi
push edi
mov eax, dword [0x617560]
xor eax, esp
push eax
lea eax, [esp + 0x130]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x30], ebx
call fcn.004c9364
mov esi, dword [0x636fb4]
mov eax, dword [esi + 0x58]
test eax, eax
mov dword [esp + 0x24], esi
jne 0x4074a6
call fcn.004143f0
jmp 0x407538
lea eax, [esi + 0x50]
push eax
mov dword [esp + 0x2c], eax
call fcn.0044f550
mov ecx, dword [esi + 0x58]
add esp, 4
test eax, eax
mov dword [esi + 0x64], ecx
jne 0x4074c7
call fcn.004143f0
jmp 0x407538
push 3
lea eax, [esp + 0x20]
mov ecx, esi
push eax
add ecx, 0x3c
call fcn.00404bf0
mov dword [esp + 0x138], 0
mov esi, dword [esp + 0x1c]
push ecx
add esi, 0xfffffff0
mov dword [esp + 0x14], esp
mov edi, esp
push esi
call fcn.00405210
add eax, 0x10
add esp, 4
mov dword [edi], eax
call fcn.0044f360
add esp, 4
test eax, eax
jne 0x407514
mov edi, dword [esp + 0x28]
call fcn.0044f790
mov dword [esp + 0x138], 0xffffffff
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407538
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
fild dword [ebx + 0xd20]
mov esi, 1
fstp dword [esp + 0x1c]
fild dword [ebx + 0xd24]
fstp dword [esp + 0x28]
fld dword [esp + 0x1c]
fld dword [esp + 0x28]
fld st(0)
fdivp st(2)
fld qword [0x5d1100]
fcom st(2)
fnstsw ax
test ah, 0x41
jp 0x407578
mov edi, dword [esp + 0x24]
mov dword [edi + 0xe4], esi
jmp 0x407588
mov eax, dword [esp + 0x24]
mov dword [eax + 0xe4], 0
mov edi, eax
xor edx, edx
cmp dword [edi + 0xe4], edx
mov ecx, 0x500
mov eax, 0x400
je 0x4075ac
fxch st(1)
fdiv qword [0x600610]
fstp dword [edi + 0xe8]
jmp 0x4075dc
cmp dword [ebx + 0xd20], ecx
fstp st(1)
jl 0x4075cc
cmp dword [ebx + 0xd24], eax
jl 0x4075cc
mov dword [ebx + 0xd20], ecx
mov dword [ebx + 0xd24], eax
jmp 0x4075dc
mov dword [ebx + 0xd20], eax
mov dword [ebx + 0xd24], 0x300
mov eax, dword [ebx + 0xd24]
mov ecx, dword [ebx + 0xd20]
mov dword [ebx + 0xa4], eax
add eax, 0xffffff62
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fld qword [0x600608]
mov dword [ebx + 0x98], edx
mov dword [ebx + 0x9c], edx
fmul st(1)
mov dword [ebx + 0xa0], ecx
mov dword [ebx + 0xac], esi
mov dword [ebx + 0xb4], eax
fadd qword [0x5cfc10]
mov dword [ebx + 0xa8], esi
call fcn.004ecec0
fld st(1)
fucomp st(3)
mov dword [ebx + 0xb0], eax
fnstsw ax
test ah, 0x44
jp 0x407654
fstp st(2)
fmulp st(1)
call fcn.004ecec0
mov dword [ebx + 0xb0], eax
jmp 0x40767c
fstp st(1)
fld qword [0x600600]
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x40767a
fmul qword [0x6005f8]
call fcn.004ecec0
mov dword [ebx + 0xb0], eax
jmp 0x40767c
fstp st(0)
call fcn.0044dff0
call fcn.004c5ee1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40769b
push 0x80004005
call fcn.00404150
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov dword [esp + 0x138], esi
call fcn.004c5ee1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4076cc
push 0x80004005
call fcn.00404150
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
push 0x64
lea ecx, [esp + 0x58]
push 0
push ecx
mov byte [esp + 0x144], 2
call fcn.004eaae0
add esp, 0xc
call fcn.004ca1a2
mov eax, dword [eax + 8]
push 0x64
lea edx, [esp + 0x58]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
call fcn.004c5ee1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x407725
push 0x80004005
call fcn.00404150
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x13c], 3
call fcn.00416b90
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x13c], 4
call fcn.00404e20
mov byte [esp + 0x138], 3
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x407785
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x20]
push 0x5c
push esi
call fcn.004e4932
add esp, 8
test eax, eax
jne 0x40779d
or esi, 0xffffffff
jmp 0x4077a1
sub eax, esi
mov esi, eax
push esi
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x28]
call fcn.00404bf0
push str.logo.bmp
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x144], 5
call fcn.00404c70
add esp, 0xc
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x13c], 6
call fcn.00404e20
mov byte [esp + 0x138], 5
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407805
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40782d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push esi
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x28]
call fcn.00404bf0
push str.dvr.dat
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x144], 7
call fcn.00404c70
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x13c], 8
call fcn.00404e20
mov byte [esp + 0x138], 7
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407891
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4078b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push esi
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x28]
call fcn.00404bf0
push str._rtcc.tmp
push eax
lea edx, [esp + 0x1c]
push edx
mov byte [esp + 0x144], 9
call fcn.00404c70
add esp, 0xc
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x13c], 0xa
call fcn.00404e20
mov byte [esp + 0x138], 9
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40791d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407945
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1c]
push ecx
push 1
push str.UseDefaultLogo
push str.Logo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 1
je 0x4079a1
mov edx, dword [esp + 0x20]
push 0x2050
push 0
push 0
push 0
push edx
push 0
call dword [sym.imp.USER32.dll_LoadImageA]
test eax, eax
je 0x407994
push eax
mov eax, dword [ebx + 0xd4c]
push 0
push 0x172
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x4079a1
push 0
lea ecx, [ebx + 0xd2c]
call fcn.004d39e3
call fcn.004c5ee1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4079bb
push 0x80004005
call fcn.00404150
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x138], 0xb
call fcn.004c5ee1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4079ed
push 0x80004005
call fcn.00404150
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
push 0
push 0x80
push 4
push 0
push 3
mov byte [esp + 0x14c], 0xc
mov ecx, dword [esp + 0x3c]
push 0xc0000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x14], esi
je 0x407b87
push 0x64
lea edx, [esp + 0xc0]
push 0
push edx
call fcn.004eaae0
add esp, 0xc
push 0
lea eax, [esp + 0x40]
push eax
push 0x64
lea ecx, [esp + 0xc8]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [esp + 0x3c], 0
je 0x407ae8
push 0x6fd
lea edx, [esp + 0x18]
push edx
call fcn.0041d1c0
lea ecx, [esp + 0xbc]
mov byte [esp + 0x138], 0xd
mov eax, dword [eax]
push ecx
push eax
lea edx, [esp + 0x20]
push edx
call fcn.00405630
mov byte [esp + 0x144], 0xc
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407abf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov edi, esp
push eax
call fcn.00405210
add eax, 0x10
add esp, 4
mov dword [edi], eax
call fcn.0044e3d0
add esp, 4
jmp 0x407b7c
push 0
call fcn.004e636d
add esp, 4
lea ecx, [esp + 0x34]
push ecx
mov esi, 0x5f5874
lea edi, [esp + 0x14]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
call fcn.00405a00
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x13c], 0xe
call fcn.00404e20
mov byte [esp + 0x138], 0xc
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 0x407b47
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
cmp dword [eax - 4], 1
mov esi, dword [eax - 0xc]
jle 0x407b64
mov ecx, esi
push ecx
lea ecx, [esp + 0x30]
call fcn.004053f0
mov eax, dword [esp + 0x2c]
push 0
lea edx, [esp + 0x44]
push edx
push esi
push eax
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov esi, dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [esp + 0x24]
cmp dword [edi + 0xe4], 0
je 0x407c0e
cmp dword [ebx + 0xa4], 0x300
jl 0x407bc8
mov edi, dword [esp + 0x24]
fld dword [edi + 0xe8]
fmul qword [0x6005f0]
call fcn.004ecec0
fld dword [edi + 0xe8]
fmul qword [0x6005e8]
mov esi, eax
call fcn.004ecec0
mov edi, eax
jmp 0x407bd0
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x10]
mov ecx, dword [ebx + 0xb0]
mov eax, dword [ebx + 0xa0]
mov edx, dword [ebx + 0xac]
push 1
sub eax, ecx
push 0x53
sub eax, 0xa8
push 0x8a
add edx, 0xf
push edx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
push eax
lea ecx, [ebx + 0xd2c]
call fcn.004d39a5
jmp 0x407cf9
mov eax, dword [ebx + 0xa0]
cmp eax, 0x500
jne 0x407c65
mov eax, 0x41a
sub eax, dword [ebx + 0xa8]
mov esi, dword [ebx + 0xac]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [esp + 0x14], esi
mov dword [ebx + 0xb0], 0x41a
fdiv qword [0x6005e0]
fiadd dword [esp + 0x14]
call fcn.004ecec0
push 1
push 0x53
push 0x8a
add esi, 0x1e
push esi
push 0x439
jmp 0x407cb4
cmp eax, 0x400
jne 0x407cc5
mov ecx, 0x338
sub ecx, dword [ebx + 0xa8]
mov esi, dword [ebx + 0xac]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov dword [esp + 0x14], esi
mov dword [ebx + 0xb0], 0x338
fdiv qword [0x6005d8]
fiadd dword [esp + 0x14]
call fcn.004ecec0
push 1
push 0x53
push 0x8a
add esi, 0xa
push esi
push 0x348
lea ecx, [ebx + 0xd2c]
mov dword [ebx + 0xb4], eax
call fcn.004d39a5
mov eax, dword [ebx + 0xa0]
cmp eax, 0x500
jne 0x407cde
mov esi, 0x32
mov edi, 0x2e
jmp 0x407cf9
cmp eax, 0x400
jne 0x407cf1
mov esi, 5
mov edi, 0x28
jmp 0x407cf9
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x10]
mov edx, dword [ebx + 0xb4]
mov eax, dword [ebx + 0xa8]
push 1
push 0x46
add edx, edi
push 0x258
lea edi, [ebx + 0xa8]
push edx
add eax, esi
push eax
lea ecx, [ebx + 0xd80]
call fcn.004d39a5
push ebx
call fcn.0040fa50
push ebx
call fcn.0040f560
mov esi, ebx
call fcn.00415da0
mov eax, ebx
call fcn.004165d0
call fcn.00409f30
call fcn.00414bc0
push 0
lea ecx, [ebx + 0x15a4]
call fcn.004d39e3
push 0
lea ecx, [ebx + 0x15f8]
call fcn.004d39e3
push ebx
call fcn.0040fa50
push ebx
call fcn.0040f560
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004517d0
call fcn.0046dcf0
mov ecx, dword [ebx + 0xd24]
mov edx, eax
mov eax, dword [ebx + 0xd20]
push ebx
mov dword [ebx + 0xd8], edx
push edi
mov ebx, edx
call fcn.0046fb10
mov edi, esi
mov eax, dword [edi + 0xd8]
mov ecx, dword [eax + 0x3e58]
cmp ecx, 2
jg 0x407ddd
imul ecx, ecx, 0x320c
mov edx, 1
mov dword [ecx + eax + 0x3e68], edx
mov ecx, dword [eax + 0x3e58]
imul ecx, ecx, 0x320c
mov dword [ecx + eax + 0x3e70], 0xffffffff
add dword [eax + 0x3e58], edx
mov ecx, dword [edi + 0xd8]
push 5
call fcn.004d39e3
mov eax, dword [edi + 0xd8]
xor ecx, ecx
mov dword [eax + 0xa3dc], 0xffffffff
cmp dword [eax + 0x3e68], ecx
je 0x407e18
cmp dword [eax + 0x3e54], ecx
je 0x407e18
mov dword [eax + 0x3e54], ecx
mov dword [eax + 0x3e4c], ecx
mov esi, dword [edi + 0xd8]
lea ebx, [esi + 0xa3c4]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 0xa3a8]
test eax, eax
jbe 0x407e4a
add eax, 0xffffffff
mov dword [esi + 0xa3a8], eax
jne 0x407e4a
mov dword [esi + 0x3e50], 1
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea eax, [edi + 0x7c0]
test eax, eax
je 0x407e5e
mov eax, dword [eax + 0x20]
push str.ButtonSnap
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x6c4]
test eax, eax
je 0x407e76
mov eax, dword [eax + 0x20]
push str.ButtonStart
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x718]
test eax, eax
je 0x407e8e
mov eax, dword [eax + 0x20]
push str.ButtonStartRecord
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x76c]
test eax, eax
je 0x407ea6
mov eax, dword [eax + 0x20]
push str.ButtonStopRecord
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x814]
test eax, eax
je 0x407ebe
mov eax, dword [eax + 0x20]
push str.ButtonStop
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1670]
test eax, eax
je 0x407ed6
mov eax, dword [eax + 0x20]
push str.CheckBoxAudio
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x18cc]
test eax, eax
je 0x407eee
mov eax, dword [eax + 0x20]
push str.ButtonPage4
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1920]
test eax, eax
je 0x407f06
mov eax, dword [eax + 0x20]
push str.ButtonPage6
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1974]
test eax, eax
je 0x407f1e
mov eax, dword [eax + 0x20]
push str.ButtonPage8
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x19c8]
test eax, eax
je 0x407f36
mov eax, dword [eax + 0x20]
push str.ButtonPage9
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1a1c]
test eax, eax
je 0x407f4e
mov eax, dword [eax + 0x20]
push str.ButtonPage10
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1a70]
test eax, eax
je 0x407f66
mov eax, dword [eax + 0x20]
push str.ButtonPage16
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1ac4]
test eax, eax
je 0x407f7e
mov eax, dword [eax + 0x20]
push str.ButtonPage25
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1b18]
test eax, eax
je 0x407f96
mov eax, dword [eax + 0x20]
push str.ButtonPage36
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1b6c]
test eax, eax
je 0x407fae
mov eax, dword [eax + 0x20]
push str.ButtonFullScreen
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1bc0]
test eax, eax
je 0x407fc6
mov eax, dword [eax + 0x20]
push str.ButtonPageUp
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1c14]
test eax, eax
je 0x407fde
mov eax, dword [eax + 0x20]
push str.ButtonPageDown
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1c68]
test eax, eax
je 0x407ff6
mov eax, dword [eax + 0x20]
push str.CheckBoxPageCycle
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1498]
test eax, eax
je 0x40800e
mov eax, dword [eax + 0x20]
push str.ButtonConfig
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1348]
test eax, eax
je 0x408026
mov eax, dword [eax + 0x20]
push str.ButtonMinimize
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x12f4]
test eax, eax
je 0x40803e
mov eax, dword [eax + 0x20]
push str.ButtonExit
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xfd0]
test eax, eax
je 0x408056
mov eax, dword [eax + 0x20]
push str.ButtonColumn
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1024]
test eax, eax
je 0x40806e
mov eax, dword [eax + 0x20]
push str.ButtonColumn
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x8bc]
test eax, eax
je 0x408086
mov eax, dword [eax + 0x20]
push str.ButtonUp
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x910]
test eax, eax
je 0x40809e
mov eax, dword [eax + 0x20]
push str.ButtonLeft
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x964]
test eax, eax
je 0x4080b6
mov eax, dword [eax + 0x20]
push str.ButtonRight
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x9b8]
test eax, eax
je 0x4080ce
mov eax, dword [eax + 0x20]
push str.ButtonDown
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xa0c]
test eax, eax
je 0x4080e6
mov eax, dword [eax + 0x20]
push str.CheckBoxScan
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xa60]
test eax, eax
je 0x4080fe
mov eax, dword [eax + 0x20]
push str.ButtonZoomin
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xab4]
test eax, eax
je 0x408116
mov eax, dword [eax + 0x20]
push str.ButtonZoomout
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xb08]
test eax, eax
je 0x40812e
mov eax, dword [eax + 0x20]
push str.ButtonZoomout
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xb5c]
test eax, eax
je 0x408146
mov eax, dword [eax + 0x20]
push str.ButtonZoomin
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xbb0]
test eax, eax
je 0x40815e
mov eax, dword [eax + 0x20]
push str.ButtonZoomin
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xc04]
test eax, eax
je 0x408176
mov eax, dword [eax + 0x20]
push str.ButtonZoomout
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xc58]
test eax, eax
je 0x40818e
mov eax, dword [eax + 0x20]
push str.CheckBoxLight
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xcac]
test eax, eax
je 0x4081a6
mov eax, dword [eax + 0x20]
push str.CheckBoxBrush
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xed4]
test eax, eax
je 0x4081be
mov eax, dword [eax + 0x20]
push str.ButtonPtzSet
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0xe80]
test eax, eax
je 0x4081d6
mov eax, dword [eax + 0x20]
push str.ButtonPtzGo
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x10a8]
test eax, eax
je 0x4081ee
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x10fc]
test eax, eax
je 0x408206
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1150]
test eax, eax
je 0x40821e
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x11a4]
test eax, eax
je 0x408236
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x12a0]
test eax, eax
je 0x40824e
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x124c]
test eax, eax
je 0x408266
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
lea eax, [edi + 0x1540]
test eax, eax
je 0x40827e
mov eax, dword [eax + 0x20]
push str.ButtonBase
push eax
call sub.intfd.dll_Ordinal_46
push 0x56e
lea edx, [esp + 0x14]
push edx
call fcn.0041d1c0
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x13c], 0xf
call fcn.00404e20
mov byte [esp + 0x138], 0xc
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 0x4082d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
push ecx
push 0x405
mov ecx, edi
call fcn.004d386a
push 0x632568
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str.0123456789_:
mov esi, 0x633e28
mov ebx, 0x632ce8
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x6345a8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a84
mov esi, 0x634128
mov ebx, 0x632928
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x632aa8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a88
mov esi, 0x6318a8
mov ebx, 0x6335e8
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x630fa8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a8c
mov esi, 0x630768
mov ebx, 0x6327a8
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x631668
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a90
mov esi, 0x631368
mov ebx, 0x632b68
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x6344e8
push 0x18
push 8
mov esi, 0x631068
mov ebx, 0x6323e8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a94
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x631ea8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a98
mov esi, 0x633768
mov ebx, 0x6302e8
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x630228
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5a9c
mov esi, 0x631f68
mov ebx, 0x631c68
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x633d68
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5aa0
mov esi, 0x630be8
mov ebx, 0x632268
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x631de8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5aa4
mov esi, 0x633a68
mov ebx, 0x631728
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x631ba8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5aa8
mov esi, 0x6332e8
mov ebx, 0x633168
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
mov esi, 0x630468
mov ebx, 0x632628
push 0x634428
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5aac
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
add esp, 0x10
push 0x630ee8
push 0x18
push 8
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5f5ab0
mov esi, 0x632e68
mov ebx, 0x630a68
call fcn.00416b90
mov edx, esi
mov ecx, ebx
call fcn.0044e690
mov eax, dword [0x636fb0]
add esp, 0x10
test eax, eax
jne 0x40857d
push 0x8490
call fcn.004c51db
add esp, 4
test eax, eax
je 0x408576
mov esi, eax
call fcn.00448c70
jmp 0x408578
xor eax, eax
mov dword [0x636fb0], eax
mov esi, eax
mov dword [edi + 0xdc], eax
call fcn.00448dc0
call fcn.00442750
mov esi, dword [edi + 0x1090]
cmp dword [edi + 0x108c], esi
mov edx, dword [eax]
lea ebx, [edi + 0x1088]
mov dword [esp + 0x14], edx
jbe 0x4085ae
call fcn.004e57b5
mov eax, dword [ebx + 4]
cmp eax, dword [ebx + 8]
mov dword [esp + 0x10], eax
jbe 0x4085c3
call fcn.004e57b5
mov eax, dword [esp + 0x10]
push esi
push ebx
push eax
push ebx
lea eax, [esp + 0x44]
push eax
call fcn.00417350
mov esi, dword [esp + 0x14]
test esi, esi
je 0x408714
push 0x18
call fcn.004c51db
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
mov byte [esp + 0x138], 0x10
je 0x408607
push eax
mov ecx, esi
call fcn.004421f0
mov esi, eax
mov dword [esp + 0x14], eax
jmp 0x40860d
xor esi, esi
mov dword [esp + 0x14], esi
mov byte [esp + 0x138], 0xc
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
test al, al
je 0x408704
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
mov ecx, esi
call eax
push 0
push 0x61aa58
push 0x61aa44
mov ebx, eax
push 0
push ebx
call fcn.004e5381
add esp, 0x14
test eax, eax
je 0x4086ea
push 0
push 0x61aa58
push 0x61aa44
push 0
push ebx
call fcn.004e5381
mov ebx, eax
add esp, 0x14
cmp dword [ebx + 0x170], 1
jne 0x408683
mov edx, dword [ebx]
mov eax, dword [edx + 0x2c]
mov ecx, ebx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [edi + 0x109c]
test eax, eax
lea esi, [edi + 0x1098]
mov dword [esp + 0x10], ebx
jne 0x40869b
xor edx, edx
jmp 0x4086a3
mov edx, dword [esi + 8]
sub edx, eax
sar edx, 2
test eax, eax
je 0x4086c0
mov ecx, dword [esi + 0xc]
sub ecx, eax
sar ecx, 2
cmp edx, ecx
jae 0x4086c0
mov eax, dword [esi + 8]
mov dword [eax], ebx
add eax, 4
mov dword [esi + 8], eax
jmp 0x4086df
mov ebx, dword [esi + 8]
cmp eax, ebx
jbe 0x4086cc
call fcn.004e57b5
push ebx
push esi
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x40]
push edx
mov eax, esi
call fcn.004172c0
add dword [edi + 0x1084], 1
mov esi, dword [esp + 0x14]
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
mov eax, dword [esi]
mov edx, dword [eax + 8]
mov ecx, esi
call edx
test al, al
jne 0x408626
mov eax, esi
call fcn.00442280
push esi
call fcn.004c5206
add esp, 4
mov ebx, dword [esp + 0x24]
cmp dword [ebx + 0x78], 0
je 0x408740
mov eax, dword [ebx + 0xc8]
test eax, eax
jbe 0x408740
cmp byte [ebx + 0xfc], 0
je 0x40873a
cmp dword [0x636fac], 0
ja 0x408740
push eax
call fcn.0047a800
lea eax, [esp + 0x44]
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
movzx eax, word [esp + 0x48]
cdq
mov ecx, 0x7b
idiv ecx
mov esi, dword [sym.imp.USER32.dll_SetTimer]
push 0
push 0xea60
push 0x3d
add edx, 0xf3
mov dword [edi + 0x16c8], edx
mov edx, dword [edi + 0x20]
push edx
call esi
mov eax, dword [edi + 0x20]
push 0
push 0x3e8
push 0x3e
push eax
call esi
mov ecx, dword [edi + 0x20]
push 0
push 0x7d0
push 0x42
push ecx
call esi
mov edx, dword [edi + 0x20]
push 0
push 0x2710
push 0x40
push edx
call esi
mov eax, dword [edi + 0x20]
push 0
push 0x493e0
push 0x41
push eax
call esi
mov ecx, dword [edi + 0x20]
push 0
push 0x1b7740
push 0x43
push ecx
call esi
mov edx, dword [edi + 0xd24]
mov eax, dword [edi + 0xd20]
push 0x40
push edx
push eax
push 0
push 0
push 0
mov ecx, edi
call fcn.004d3bee
mov esi, 5
call fcn.00409a50
mov edi, dword [esp + 0x30]
call fcn.004169c0
xor esi, esi
call fcn.00409950
mov ecx, 0x637938
call fcn.004d0ccc
cmp dword [ebx + 0xf0], esi
je 0x40881a
mov ecx, dword [edi + 0x20]
push ecx
call dword [sym.imp.hook.dll_setMyHook]
add esp, 4
call fcn.0044fb30
push 0
push 0x3e9
mov ecx, edi
call fcn.004d3822
mov ecx, eax
call fcn.004d39e3
mov byte [esp + 0x138], 0xb
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40885c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408884
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 2
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4088ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x138], 1
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4088d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x138], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4088ff
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x130]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.004e3dc3
mov esp, ebp
pop ebp
ret