Function at 0x40b829
Capabilities:
Check for time delay via gettickcount
Check mutex on windows
Get common file path

Disassembly:
mov edi, edi
push ebp
sub esp, 0x70
mov eax, 0x4206b3
call fcn.00412d4c
sub esp, 0x79c
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
xor ebx, ebx
push ebx
lea ecx, [ebp - 0x5c]
call fcn.0040944f
mov dword [ebp - 4], ebx
cmp byte [ebp - 0x2c], bl
jne 0x40b860
push 0xfffffffffffffffd
pop ebx
jmp 0x40bd89
lea ecx, [ebp - 0x5c]
call fcn.0040cdc7
mov byte [0x4307fc], al
mov edi, ebx
mov dword [ebp + 0x5c], edi
mov dword [ebp + 0x60], ebx
mov dword [ebp + 0x64], ebx
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x40]
call fcn.0040a26b
mov byte [ebp - 4], 2
call fcn.0040c76d
call fcn.0040cb22
cmp eax, 3
jae 0x40b8ad
push str.948948
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
test eax, eax
je 0x40b8ad
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp + 0x40]
call fcn.0041116e
mov eax, dword [ebp - 0x50]
mov eax, dword [eax]
mov dword [0x430800], eax
mov dword [ebp + 0x38], ebx
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x3c], 0xf
mov dword [ebp + 0x38], ebx
mov byte [ebp + 0x28], bl
mov byte [ebp - 4], 3
lea eax, [ebp - 0x4c]
cmp dword [ebp - 0x38], 0x10
cmovae eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.004107b3
pop ecx
pop ecx
mov byte [ebp - 4], 4
lea eax, [ebp - 0x394]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x40b987
cmp byte [ebp - 0x394], 0
jne 0x40b91b
mov eax, ebx
jmp 0x40b928
lea eax, [ebp - 0x394]
push eax
call fcn.004124c0
pop ecx
push eax
lea eax, [ebp - 0x394]
push eax
lea ecx, [ebp + 0x28]
call fcn.004040e9
jmp 0x40b980
lea eax, [ebp + 0x28]
mov edx, dword [ebp + 0x3c]
cmp edx, 0x10
mov esi, dword [ebp + 0x28]
cmovae eax, esi
cmp byte [eax + ecx - 1], 0x5c
jne 0x40b98d
lea eax, [ecx - 1]
push eax
push ebx
lea eax, [ebp - 0x1d0]
push eax
lea ecx, [ebp + 0x28]
call fcn.004063bc
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp + 0x28]
call fcn.00409784
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1d0]
call fcn.004015cc
mov ecx, dword [ebp + 0x38]
test ecx, ecx
jne 0x40b93a
mov edx, dword [ebp + 0x3c]
mov esi, dword [ebp + 0x28]
lea eax, [ebp + 0x28]
cmp edx, 0x10
cmovae eax, esi
push 1
push eax
call fcn.0040ff2c
pop ecx
pop ecx
test al, al
jne 0x40b9b6
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp + 0x28]
call fcn.00404055
push dword [ebp + 0x7c]
lea ecx, [ebp - 0xb0]
call fcn.00401391
mov byte [ebp - 4], 6
push str.args
lea ecx, [ebp - 0xe0]
call fcn.00401391
mov byte [ebp - 4], 7
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xe0]
call fcn.004015cc
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xb0]
call fcn.004015cc
push str.temp
lea ecx, [ebp - 0x1b8]
call fcn.00401391
mov byte [ebp - 4], 8
lea eax, [ebp + 0x28]
push eax
lea eax, [ebp - 0x1b8]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1b8]
call fcn.004015cc
push str.path
lea ecx, [ebp - 0x1a0]
call fcn.00401391
mov byte [ebp - 4], 9
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x1a0]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x1a0]
call fcn.004015cc
push 0x1a
lea eax, [ebp - 0x260]
push eax
call fcn.00410620
pop ecx
pop ecx
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x14], 0x10
jb 0x40ba9b
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x170]
call fcn.00401391
mov byte [ebp - 4], 0xb
push str.appdata
lea ecx, [ebp - 0x110]
call fcn.00401391
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x110]
call fcn.004015cc
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x170]
call fcn.004015cc
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x260]
call fcn.004015cc
push 0x1c
lea eax, [ebp - 0x290]
push eax
call fcn.00410620
pop ecx
pop ecx
mov byte [ebp - 4], 0xd
cmp dword [eax + 0x14], 0x10
jb 0x40bb1e
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xc8]
call fcn.00401391
mov byte [ebp - 4], 0xe
push str.appdata_local
lea ecx, [ebp - 0x140]
call fcn.00401391
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0x140]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x140]
call fcn.004015cc
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0xc8]
call fcn.004015cc
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x290]
call fcn.004015cc
push 0x26
lea eax, [ebp - 0x218]
push eax
call fcn.00410620
pop ecx
pop ecx
mov byte [ebp - 4], 0x10
cmp dword [eax + 0x14], 0x10
jb 0x40bba1
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x128]
call fcn.00401391
mov byte [ebp - 4], 0x11
push str.program_files
lea ecx, [ebp - 0xf8]
call fcn.00401391
mov byte [ebp - 4], 0x12
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0xf8]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0xf8]
call fcn.004015cc
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x128]
call fcn.004015cc
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x218]
call fcn.004015cc
lea eax, [ebp - 0x74]
push eax
call fcn.0040f02e
pop ecx
mov byte [ebp - 4], 0x13
lea eax, [ebp - 0x74]
cmp dword [ebp - 0x60], 0x10
cmovae eax, dword [ebp - 0x74]
push eax
lea ecx, [ebp - 0x188]
call fcn.00401391
mov byte [ebp - 4], 0x14
push str.uniqueid
lea ecx, [ebp - 0x158]
call fcn.00401391
mov byte [ebp - 4], 0x15
lea eax, [ebp - 0x188]
push eax
lea eax, [ebp - 0x158]
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x158]
call fcn.004015cc
mov byte [ebp - 4], 0x13
lea ecx, [ebp - 0x188]
call fcn.004015cc
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x74]
call fcn.004015cc
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x98]
call fcn.004015cc
mov byte [ebp - 4], 2
lea ecx, [ebp + 0x28]
call fcn.004015cc
lea ecx, [ebp - 0x5c]
call fcn.0040cb0a
test al, al
je 0x40bd9c
call fcn.0040cb22
cmp eax, 3
jae 0x40bcc7
push str.Global676
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call fcn.0040cb22
cmp eax, 3
jae 0x40bce7
push str.699699
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
test eax, eax
je 0x40bce7
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x50]
mov esi, dword [eax + 4]
test esi, esi
je 0x40bd9c
mov eax, dword [esi + 0xc]
test eax, eax
je 0x40bd02
mov esi, eax
test esi, esi
jne 0x40bcf5
test esi, esi
je 0x40bd9c
test dword [esi], 0x10000
je 0x40bd9c
push str.USER32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x40bd9c
push str.MessageBoxA
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp + 0x58], eax
call fcn.0040cb22
cmp eax, 3
jae 0x40bd59
push str.Local1756
push 1
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventA]
test eax, eax
je 0x40bd59
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [ebp + 0x58]
test eax, eax
je 0x40bd9c
push 4
push str.Question
push dword [esi + 0x1c]
push ebx
call eax
cmp eax, 6
je 0x40bd9c
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x40]
call fcn.0040a411
mov byte [ebp - 4], bl
lea ecx, [ebp + 0x5c]
call fcn.0040b007
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x5c]
call fcn.004096fb
mov eax, ebx
jmp 0x40c254
mov byte [ebp - 4], 0x16
mov ecx, ebx
mov dword [ebp + 0x6c], ecx
mov dword [ebp + 0x18], ecx
mov eax, dword [ebp - 0x50]
mov esi, dword [eax + 4]
mov dword [ebp + 0x70], esi
call fcn.0040cb22
cmp eax, 3
jae 0x40bdd9
push str.Local1758
push 1
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x40bdd9
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, ebx
mov dword [ebp + 0x20], eax
test esi, esi
je 0x40bf56
inc eax
mov dword [ebp + 0x58], eax
push eax
lea ecx, [ebp + 0x5c]
call fcn.0040cca4
push dword [ebp + 0x20]
lea ecx, [ebp + 0x5c]
call fcn.0040b0ad
mov edi, eax
mov dword [ebp - 0x14], edi
mov eax, dword [ebp + 0x58]
mov dword [edi + 4], eax
mov dword [edi], esi
test dword [esi], 0x800
je 0x40be62
call fcn.0040e421
test eax, eax
jne 0x40be25
call fcn.0040e4ec
test eax, eax
je 0x40be62
or dword [esi], 0x80000000
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0x14], 0xf
mov byte [ebp + 0x57], bl
mov dword [ebp + 0x10], ebx
mov byte [ebp], bl
mov byte [ebp - 4], 0x17
lea eax, [ebp]
push eax
lea ecx, [ebp + 0x40]
call fcn.0041116e
mov byte [ebp - 4], 0x16
lea ecx, [ebp]
call fcn.004015cc
jmp 0x40bf42
test dword [esi], 0x1000
je 0x40be9c
cmp byte [0x42e908], 0
jne 0x40be77
mov ecx, ebx
jmp 0x40be84
push 0x42e908
call fcn.004124c0
pop ecx
mov ecx, eax
lea eax, [edi + 0x1c]
mov dword [ebp + 0x24], eax
push ecx
push 0x42e908
mov ecx, eax
call fcn.004040e9
jmp 0x40bf37
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x1c], eax
push ebx
lea eax, [ebp + 0x40]
push eax
push esi
lea eax, [ebp - 0x278]
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409988
mov byte [ebp - 4], 0x18
lea ecx, [edi + 0x1c]
mov dword [ebp + 0x24], ecx
push eax
call fcn.00409784
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x278]
call fcn.004015cc
cmp dword [edi + 0x2c], ebx
jne 0x40bf27
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ec_08x__extract_failed
push edi
call fcn.0040cb40
add esp, 0xc
test byte [esi], 0x20
je 0x40bf0e
lea ecx, [ebp - 0x80]
call fcn.00412bf7
push 0x42b1bc
lea eax, [ebp - 0x80]
push eax
call fcn.00412cee
call fcn.0040cb22
cmp eax, 3
jae 0x40bf37
mov dword [ebp + 0x1c], ebx
lea eax, [ebp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x40bf37
mov eax, dword [esi]
and eax, 0x10
mov ecx, dword [ebp + 0x6c]
or ecx, eax
mov dword [ebp + 0x6c], ecx
mov dword [ebp + 0x18], ecx
push dword [ebp + 0x24]
lea ecx, [ebp + 0x40]
call fcn.0041116e
mov esi, dword [esi + 0xc]
mov dword [ebp + 0x70], esi
mov eax, dword [ebp + 0x58]
mov dword [ebp + 0x20], eax
mov edi, dword [ebp + 0x5c]
jmp 0x40bdde
mov dword [ebp + 0x68], ebx
mov esi, edi
mov dword [ebp + 0x68], esi
mov ecx, dword [ebp + 0x60]
cmp esi, ecx
je 0x40c0bf
mov eax, dword [esi]
test byte [eax], 2
je 0x40c0b4
cmp dword [esi + 0x2c], ebx
je 0x40c0b4
test dword [eax], 0x80000000
jne 0x40c0b4
test dword [eax], 0x800
je 0x40bfab
call fcn.0040e421
test eax, eax
jne 0x40c0b1
call fcn.0040e4ec
test eax, eax
jne 0x40c0b1
push 1
lea eax, [ebp + 0x40]
push eax
mov eax, dword [esi]
push dword [eax + 0x1c]
lea eax, [ebp - 0x248]
push eax
call fcn.0040f3ea
add esp, 0x10
mov byte [ebp - 4], 0x19
push eax
lea ecx, [esi + 0x34]
call fcn.00409784
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x248]
call fcn.004015cc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push esi
call fcn.0040c266
pop ecx
call fcn.0040cb22
cmp eax, 3
jae 0x40c005
push str.Global375
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_GetProcessId]
mov dword [ebp + 0x70], eax
call fcn.0040cb22
cmp eax, 3
jae 0x40c028
push str.Global894
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push dword [ebp + 0x70]
lea eax, [ebp - 0x230]
push eax
call fcn.0040ce2c
mov dword [ebp + 0x70], eax
mov byte [ebp - 4], 0x1a
push dword [esi + 4]
lea eax, [ebp - 0x200]
push eax
call fcn.0040cddf
add esp, 0x10
mov ebx, eax
mov byte [ebp - 4], 0x1b
push str.pid:
lea ecx, [ebp - 0x1e8]
call fcn.00401391
mov byte [ebp - 4], 0x1c
push dword [ebp + 0x70]
push 0xffffffffffffffff
push 0
push ebx
mov ecx, eax
call fcn.004050e1
push eax
lea ecx, [ebp + 0x40]
call fcn.004114c4
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0x1e8]
call fcn.004015cc
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x200]
call fcn.004015cc
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x230]
call fcn.004015cc
xor ebx, ebx
mov ecx, dword [ebp + 0x60]
add esi, 0x50
mov dword [ebp + 0x68], esi
jmp 0x40bf61
cmp dword [ebp + 0x6c], 0
je 0x40c14a
mov esi, edi
mov dword [ebp + 0x68], esi
call fcn.0040cb22
cmp eax, 3
jae 0x40c0ed
lea eax, [ebp - 0x7a8]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov ecx, dword [ebp + 0x60]
cmp esi, ecx
je 0x40c11d
cmp dword [esi + 8], 0
je 0x40c115
mov eax, dword [esi]
test byte [eax], 8
je 0x40c115
push 0xffffffffffffffff
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [esi + 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp + 0x60]
add esi, 0x50
mov dword [ebp + 0x68], esi
jmp 0x40c0ed
mov dword [ebp + 0x68], edi
cmp edi, ecx
je 0x40c14a
mov eax, dword [edi]
test byte [eax], 0x10
je 0x40c145
cmp dword [edi + 0x2c], ebx
je 0x40c145
lea eax, [edi + 0x1c]
cmp dword [eax + 0x14], 0x10
jb 0x40c13b
mov eax, dword [eax]
push eax
call fcn.0040b157
pop ecx
mov ecx, dword [ebp + 0x60]
add edi, 0x50
jmp 0x40c11d
mov dword [ebp - 4], 2
mov esi, ebx
jmp 0x40c225
call fcn.0040ed3f
call fcn.00411459
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x40]
call fcn.0040a411
mov byte [ebp - 4], bl
lea ecx, [ebp + 0x5c]
call fcn.0040b007
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x5c]
call fcn.004096fb
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add ebp, 0x74
leave
ret