Function at 0x40c650
Capabilities:
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x427ff7
mov eax, dword fs:[0]
push eax
sub esp, 0x8bc
mov eax, dword [0x452658]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea eax, [ebp - 0x218]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
je 0x40c765
cmp dword [0x453204], 8
mov eax, dword [0x4531f0]
jae 0x40c6ab
mov eax, 0x4531f0
push eax
lea ecx, [ebp - 0x420]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x44
xor ebx, ebx
lea edx, [ebp - 0x8c8]
push ebx
push edx
call fcn.00415960
add esp, 0xc
push 0x42c1cc
mov dword [ebp - 0x8c8], 0x44
mov dword [ebp - 0x87c], ebx
mov dword [ebp - 0x878], ebx
mov dword [ebp - 0x874], ebx
mov dword [ebp - 0x870], ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x834], eax
cmp eax, ebx
jne 0x40c783
push str.LoadLibrary_failed.
push 0x453878
call fcn.00406a70
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00407bf0
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, esi
xor edi, edi
test byte [eax + 0xc], 6
jne 0x40c746
mov eax, dword [eax + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x40c746
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
cmp edi, ebx
je 0x40c765
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], ebx
jne 0x40c75e
or eax, 4
push ebx
push eax
call fcn.00407e20
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00413810
mov esp, ebp
pop ebp
ret
lea esi, [ebp - 0x688]
call fcn.0040a210
mov edi, eax
lea esi, [ebp - 0x810]
mov dword [ebp - 4], ebx
call fcn.0040a1e0
mov dword [ebp - 0x844], eax
lea esi, [ebp - 0x7f4]
mov byte [ebp - 4], 1
call fcn.0040a120
mov dword [ebp - 0x83c], eax
lea esi, [ebp - 0x7bc]
mov byte [ebp - 4], 2
call fcn.0040a300
mov dword [ebp - 0x858], eax
lea esi, [ebp - 0x784]
mov byte [ebp - 4], 3
call fcn.0040a2d0
mov dword [ebp - 0x860], eax
lea esi, [ebp - 0x74c]
mov byte [ebp - 4], 4
call fcn.0040a240
mov dword [ebp - 0x854], eax
lea esi, [ebp - 0x714]
mov byte [ebp - 4], 5
call fcn.0040a120
mov dword [ebp - 0x84c], eax
lea esi, [ebp - 0x6dc]
mov byte [ebp - 4], 6
call fcn.0040a270
mov dword [ebp - 0x848], eax
lea esi, [ebp - 0x6a4]
mov byte [ebp - 4], 7
call fcn.0040a1b0
mov dword [ebp - 0x868], eax
lea esi, [ebp - 0x66c]
mov byte [ebp - 4], 8
call fcn.0040a1e0
mov dword [ebp - 0x864], eax
lea esi, [ebp - 0x634]
mov byte [ebp - 4], 9
call fcn.0040a150
mov dword [ebp - 0x85c], eax
lea esi, [ebp - 0x5fc]
mov byte [ebp - 4], 0xa
call fcn.0040a300
mov dword [ebp - 0x840], eax
lea esi, [ebp - 0x5c4]
mov byte [ebp - 4], 0xb
call fcn.0040a2a0
mov dword [ebp - 0x838], eax
lea esi, [ebp - 0x58c]
mov byte [ebp - 4], 0xc
call fcn.0040a180
mov dword [ebp - 0x850], eax
lea esi, [ebp - 0x554]
mov byte [ebp - 4], 0xd
call fcn.0040a0f0
mov dword [ebp - 0x86c], eax
lea esi, [ebp - 0x51c]
mov byte [ebp - 4], 0xe
call fcn.0040a0f0
mov ecx, eax
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0x4e4]
call fcn.00411bd0
push eax
mov eax, 0x42c204
lea ecx, [ebp - 0x4ac]
mov esi, 0x10
mov byte [ebp - 4], 0x10
call fcn.00411c10
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x86c]
lea edx, [ebp - 0x490]
push edx
mov byte [ebp - 4], 0x11
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x650]
push eax
mov eax, dword [ebp - 0x850]
mov byte [ebp - 4], 0x12
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x838]
lea edx, [ebp - 0x730]
push edx
mov byte [ebp - 4], 0x13
call fcn.00411c60
add esp, 4
push eax
mov eax, 0x42c200
lea ecx, [ebp - 0x618]
mov byte [ebp - 4], 0x14
call fcn.00411c10
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x474]
push eax
mov eax, dword [ebp - 0x840]
mov byte [ebp - 4], 0x15
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x85c]
lea edx, [ebp - 0x7a0]
push edx
mov byte [ebp - 4], 0x16
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x458]
push eax
mov eax, dword [ebp - 0x864]
mov byte [ebp - 4], 0x17
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x868]
lea edx, [ebp - 0x5e0]
push edx
mov byte [ebp - 4], 0x18
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x6f8]
push eax
mov eax, dword [ebp - 0x848]
mov byte [ebp - 4], 0x19
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x84c]
lea edx, [ebp - 0x5a8]
push edx
mov byte [ebp - 4], 0x1a
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x7d8]
push eax
mov eax, dword [ebp - 0x854]
mov byte [ebp - 4], 0x1b
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x860]
lea edx, [ebp - 0x570]
push edx
mov byte [ebp - 4], 0x1c
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x6c0]
push eax
mov eax, dword [ebp - 0x858]
mov byte [ebp - 4], 0x1d
call fcn.00411c60
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x83c]
lea edx, [ebp - 0x538]
push edx
mov byte [ebp - 4], 0x1e
call fcn.00411c60
add esp, 4
mov ecx, eax
lea eax, [ebp - 0x768]
push eax
mov eax, dword [ebp - 0x844]
mov byte [ebp - 4], 0x1f
call fcn.00411c60
add esp, 4
push eax
mov eax, str.321
lea ecx, [ebp - 0x500]
mov byte [ebp - 4], 0x20
call fcn.00411c10
add esp, 4
mov ecx, eax
lea edx, [ebp - 0x4c8]
push edx
mov eax, edi
mov byte [ebp - 4], 0x21
call fcn.00411c60
add esp, 4
push eax
lea eax, [ebp - 0x43c]
push eax
mov byte [ebp - 4], 0x22
call fcn.0040a330
add esp, 8
cmp dword [ebp - 0x4b4], esi
jb 0x40cade
mov ecx, dword [ebp - 0x4c8]
push ecx
call fcn.0041381f
add esp, 4
mov edi, 0xf
mov dword [ebp - 0x4b4], edi
mov dword [ebp - 0x4b8], ebx
mov byte [ebp - 0x4c8], bl
cmp dword [ebp - 0x4ec], esi
jb 0x40cb0c
mov edx, dword [ebp - 0x500]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x4ec], edi
mov dword [ebp - 0x4f0], ebx
mov byte [ebp - 0x500], bl
cmp dword [ebp - 0x754], esi
jb 0x40cb35
mov eax, dword [ebp - 0x768]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x754], edi
mov dword [ebp - 0x758], ebx
mov byte [ebp - 0x768], bl
cmp dword [ebp - 0x524], esi
jb 0x40cb5e
mov ecx, dword [ebp - 0x538]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x524], edi
mov dword [ebp - 0x528], ebx
mov byte [ebp - 0x538], bl
cmp dword [ebp - 0x6ac], esi
jb 0x40cb87
mov edx, dword [ebp - 0x6c0]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x6ac], edi
mov dword [ebp - 0x6b0], ebx
mov byte [ebp - 0x6c0], bl
cmp dword [ebp - 0x55c], esi
jb 0x40cbb0
mov eax, dword [ebp - 0x570]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x55c], edi
mov dword [ebp - 0x560], ebx
mov byte [ebp - 0x570], bl
cmp dword [ebp - 0x7c4], esi
jb 0x40cbd9
mov ecx, dword [ebp - 0x7d8]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x7c4], edi
mov dword [ebp - 0x7c8], ebx
mov byte [ebp - 0x7d8], bl
cmp dword [ebp - 0x594], esi
jb 0x40cc02
mov edx, dword [ebp - 0x5a8]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x594], edi
mov dword [ebp - 0x598], ebx
mov byte [ebp - 0x5a8], bl
cmp dword [ebp - 0x6e4], esi
jb 0x40cc2b
mov eax, dword [ebp - 0x6f8]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x6e4], edi
mov dword [ebp - 0x6e8], ebx
mov byte [ebp - 0x6f8], bl
cmp dword [ebp - 0x5cc], esi
jb 0x40cc54
mov ecx, dword [ebp - 0x5e0]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x5cc], edi
mov dword [ebp - 0x5d0], ebx
mov byte [ebp - 0x5e0], bl
cmp dword [ebp - 0x444], esi
jb 0x40cc7d
mov edx, dword [ebp - 0x458]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x448], ebx
mov byte [ebp - 0x458], bl
cmp dword [ebp - 0x78c], esi
jb 0x40cca6
mov eax, dword [ebp - 0x7a0]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x78c], edi
mov dword [ebp - 0x790], ebx
mov byte [ebp - 0x7a0], bl
cmp dword [ebp - 0x460], esi
jb 0x40cccf
mov ecx, dword [ebp - 0x474]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x460], edi
mov dword [ebp - 0x464], ebx
mov byte [ebp - 0x474], bl
cmp dword [ebp - 0x604], esi
jb 0x40ccf8
mov edx, dword [ebp - 0x618]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x604], edi
mov dword [ebp - 0x608], ebx
mov byte [ebp - 0x618], bl
cmp dword [ebp - 0x71c], esi
jb 0x40cd21
mov eax, dword [ebp - 0x730]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x71c], edi
mov dword [ebp - 0x720], ebx
mov byte [ebp - 0x730], bl
cmp dword [ebp - 0x63c], esi
jb 0x40cd4a
mov ecx, dword [ebp - 0x650]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x63c], edi
mov dword [ebp - 0x640], ebx
mov byte [ebp - 0x650], bl
cmp dword [ebp - 0x47c], esi
jb 0x40cd73
mov edx, dword [ebp - 0x490]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x47c], edi
mov dword [ebp - 0x480], ebx
mov byte [ebp - 0x490], bl
cmp dword [ebp - 0x498], esi
jb 0x40cd9c
mov eax, dword [ebp - 0x4ac]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x498], edi
mov dword [ebp - 0x49c], ebx
mov byte [ebp - 0x4ac], bl
cmp dword [ebp - 0x4d0], esi
jb 0x40cdc5
mov ecx, dword [ebp - 0x4e4]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x4d0], edi
mov dword [ebp - 0x4d4], ebx
mov byte [ebp - 0x4e4], bl
cmp dword [ebp - 0x508], esi
jb 0x40cdee
mov edx, dword [ebp - 0x51c]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x508], edi
mov dword [ebp - 0x50c], ebx
mov byte [ebp - 0x51c], bl
cmp dword [ebp - 0x540], esi
jb 0x40ce17
mov eax, dword [ebp - 0x554]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x540], edi
mov dword [ebp - 0x544], ebx
mov byte [ebp - 0x554], bl
cmp dword [ebp - 0x578], esi
jb 0x40ce40
mov ecx, dword [ebp - 0x58c]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x578], edi
mov dword [ebp - 0x57c], ebx
mov byte [ebp - 0x58c], bl
cmp dword [ebp - 0x5b0], esi
jb 0x40ce69
mov edx, dword [ebp - 0x5c4]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x5b0], edi
mov dword [ebp - 0x5b4], ebx
mov byte [ebp - 0x5c4], bl
cmp dword [ebp - 0x5e8], esi
jb 0x40ce92
mov eax, dword [ebp - 0x5fc]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x5e8], edi
mov dword [ebp - 0x5ec], ebx
mov byte [ebp - 0x5fc], bl
cmp dword [ebp - 0x620], esi
jb 0x40cebb
mov ecx, dword [ebp - 0x634]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x620], edi
mov dword [ebp - 0x624], ebx
mov byte [ebp - 0x634], bl
cmp dword [ebp - 0x658], esi
jb 0x40cee4
mov edx, dword [ebp - 0x66c]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x658], edi
mov dword [ebp - 0x65c], ebx
mov byte [ebp - 0x66c], bl
cmp dword [ebp - 0x690], esi
jb 0x40cf0d
mov eax, dword [ebp - 0x6a4]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x690], edi
mov dword [ebp - 0x694], ebx
mov byte [ebp - 0x6a4], bl
cmp dword [ebp - 0x6c8], esi
jb 0x40cf36
mov ecx, dword [ebp - 0x6dc]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x6c8], edi
mov dword [ebp - 0x6cc], ebx
mov byte [ebp - 0x6dc], bl
cmp dword [ebp - 0x700], esi
jb 0x40cf5f
mov edx, dword [ebp - 0x714]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x700], edi
mov dword [ebp - 0x704], ebx
mov byte [ebp - 0x714], bl
cmp dword [ebp - 0x738], esi
jb 0x40cf88
mov eax, dword [ebp - 0x74c]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x738], edi
mov dword [ebp - 0x73c], ebx
mov byte [ebp - 0x74c], bl
cmp dword [ebp - 0x770], esi
jb 0x40cfb1
mov ecx, dword [ebp - 0x784]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x770], edi
mov dword [ebp - 0x774], ebx
mov byte [ebp - 0x784], bl
cmp dword [ebp - 0x7a8], esi
jb 0x40cfda
mov edx, dword [ebp - 0x7bc]
push edx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x7a8], edi
mov dword [ebp - 0x7ac], ebx
mov byte [ebp - 0x7bc], bl
cmp dword [ebp - 0x7e0], esi
jb 0x40d003
mov eax, dword [ebp - 0x7f4]
push eax
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x7e0], edi
mov dword [ebp - 0x7e4], ebx
mov byte [ebp - 0x7f4], bl
cmp dword [ebp - 0x7fc], esi
jb 0x40d02c
mov ecx, dword [ebp - 0x810]
push ecx
call fcn.0041381f
add esp, 4
mov dword [ebp - 0x7fc], edi
mov dword [ebp - 0x800], ebx
mov byte [ebp - 0x810], bl
mov byte [ebp - 4], 0x46
cmp dword [ebp - 0x674], esi
jb 0x40d059
mov edx, dword [ebp - 0x688]
push edx
call fcn.0041381f
add esp, 4
lea eax, [ebp - 0x43c]
push eax
lea ecx, [ebp - 0x82c]
push ecx
mov dword [ebp - 0x674], 0xf
mov dword [ebp - 0x678], ebx
mov byte [ebp - 0x688], bl
call fcn.00401390
add esp, 8
mov edi, eax
lea esi, [ebp - 0x43c]
mov byte [ebp - 4], 0x47
call fcn.004019d0
mov byte [ebp - 4], 0x46
cmp dword [ebp - 0x818], 0x10
jb 0x40d0b2
mov edx, dword [ebp - 0x82c]
push edx
call fcn.0041381f
add esp, 4
cmp dword [ebp - 0x428], 0x10
mov eax, dword [ebp - 0x43c]
jae 0x40d0c7
lea eax, [ebp - 0x43c]
mov edi, dword [ebp - 0x834]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
jne 0x40d16c
push 0x42c20c
push 0x453878
call fcn.00406a70
add esp, 8
mov esi, eax
push 0xa
mov ecx, esi
call fcn.00407bf0
mov eax, dword [esi]
mov eax, dword [eax + 4]
add eax, esi
xor edi, edi
test byte [eax + 0xc], 6
jne 0x40d11f
mov eax, dword [eax + 0x38]
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x40d11f
mov edi, 4
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
add ecx, esi
cmp edi, ebx
je 0x40d13e
mov eax, dword [ecx + 0xc]
or eax, edi
cmp dword [ecx + 0x38], ebx
jne 0x40d137
or eax, 4
push ebx
push eax
call fcn.00407e20
mov edx, dword [ebp - 0x834]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [ebp - 0x428], 0x10
jb 0x40c765
mov eax, dword [ebp - 0x43c]
push eax
call fcn.0041381f
add esp, 4
jmp 0x40c765
lea ecx, [ebp - 0x87c]
push ecx
lea edx, [ebp - 0x8c8]
push edx
lea ecx, [ebp - 0x218]
push ecx
push ebx
push ebx
push ebx
push ebx
push ebx
lea edx, [ebp - 0x420]
push edx
push ebx
call eax
push edi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp esi, ebx
jne 0x40d1ad
lea ecx, [ebp - 0x43c]
call fcn.00401f60
jmp 0x40c765
mov eax, dword [ebp - 0x87c]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [ebp - 0x87c]
lea ecx, [ebp - 0x830]
push ecx
push edx
mov dword [ebp - 0x830], ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov eax, dword [ebp - 0x830]
push eax
call dword [sym.imp.KERNEL32.dll_ExitProcess]