Function at 0x40f890
Capabilities:
Create process on windows

Disassembly:
push ebp
lea ebp, [esp - 0x590]
sub esp, 0x590
push 0xffffffffffffffff
push 0x4ce821
mov eax, dword fs:[0]
push eax
sub esp, 0x200
mov eax, dword [0x512f80]
xor eax, ebp
mov dword [ebp + 0x58c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
cmp dword [ebp + 0x598], 0
jg 0x40f8f9
push str.EnoughCmdLineArgs
call fcn.0042c7e0
push eax
mov eax, 0x257
mov ecx, str..BootStrapperApp.cpp
mov edx, str.argc___0
call fcn.0042ca40
test ebx, ebx
jne 0x40f91c
push str.ProvidedACmdLine
call fcn.0042c7e0
push eax
mov eax, 0x258
mov ecx, str..BootStrapperApp.cpp
mov edx, str.argv
call fcn.0042ca40
mov edi, str.SelfUpdate
mov esi, dword [ebx + 4]
mov ecx, 0xb
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40f94e
push str.SelfUpdateCmdLine
call fcn.0042c7e0
push eax
mov eax, 0x259
mov ecx, str..BootStrapperApp.cpp
mov edx, str.strcmp_argv_1____SelfUpdate____0
call fcn.0042ca40
mov eax, 0xf
mov dword [ebp + 0x88], eax
xor edi, edi
mov dword [ebp + 0x84], edi
mov byte [ebp + 0x74], 0
mov dword [ebp - 4], edi
mov dword [ebp + 0x6c], eax
mov dword [ebp + 0x68], edi
mov byte [ebp + 0x58], 0
mov byte [ebp - 4], 1
mov dword [ebp - 0x20], edi
mov byte [ebp - 4], 2
push edi
lea ecx, [ebp + 0x48c]
push ecx
push edi
push edi
mov edx, dword [ebx + 8]
push edx
call fcn.004821a4
add esp, 0x14
mov eax, dword [ebx + 0xc]
push eax
lea ecx, [ebp + 0x38]
call fcn.0040e550
mov byte [ebp - 4], 3
mov esi, 0x10
cmp dword [ebp + 0x50], esi
mov eax, dword [ebp + 0x3c]
jae 0x40f9b3
lea eax, [ebp + 0x3c]
push eax
call fcn.00482289
add esp, 4
cmp eax, edi
jl 0x40ff8f
cmp dword [ebp + 0x50], esi
mov esi, dword [ebp + 0x3c]
jae 0x40f9cf
lea esi, [ebp + 0x3c]
call fcn.0040f840
test eax, eax
jne 0x40ff8f
push 0x4e2784
lea ecx, [ebp - 0xa8]
push ecx
call fcn.0041baf0
mov byte [ebp - 4], 6
push eax
lea edx, [ebp - 0x8c]
push edx
lea ecx, [ebp + 0x48c]
call fcn.004089d0
mov byte [ebp - 4], 7
lea ecx, [ebp + 0x38]
push ecx
push eax
lea edx, [ebp - 0x60]
push edx
call fcn.00408900
mov byte [ebp - 4], 8
push eax
lea eax, [ebp + 0x1c]
push eax
mov ecx, 0x4e277c
call fcn.00408aa0
add esp, 0x24
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x60]
call fcn.0040e5c0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x8c]
call fcn.0040e5c0
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0xa8]
call fcn.0040e5c0
push str..exe
lea ecx, [ebp - 0x60]
push ecx
call fcn.0041baf0
mov byte [ebp - 4], 0xd
push eax
lea edx, [ebp - 0xa8]
push edx
lea ecx, [ebp + 0x48c]
call fcn.004089d0
add esp, 0x10
mov byte [ebp - 4], 0xe
push 0xffffffffffffffff
push edi
push eax
lea ecx, [ebp + 0x54]
call fcn.0040dba0
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0xa8]
call fcn.0040e5c0
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x60]
call fcn.0040e5c0
push str.New.exe
lea eax, [ebp - 0xa8]
push eax
call fcn.0041baf0
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp]
push ecx
lea ecx, [ebp + 0x48c]
call fcn.004089d0
add esp, 0x10
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0xa8]
call fcn.0040e5c0
push 0xffffffffffffffff
push edi
lea edx, [ebp + 0x54]
push edx
lea ecx, [ebp + 0x70]
call fcn.0040dba0
mov esi, 4
mov dword [ebp - 0x28], esi
cmp esi, dword [ebp + 0x598]
jge 0x40fbf0
mov eax, dword [ebx + esi*4]
push 0x20
push eax
call fcn.00483410
add esp, 8
test eax, eax
je 0x40fb92
push 0x4e28e0
lea eax, [ebp - 0x11c]
push eax
call fcn.0041baf0
mov byte [ebp - 4], 0x12
push eax
lea ecx, [ebp - 0x8c]
push ecx
mov ecx, dword [ebx + esi*4]
call fcn.00408aa0
mov byte [ebp - 4], 0x13
push eax
lea edx, [ebp - 0x60]
push edx
mov ecx, 0x4e28e4
call fcn.00408aa0
add esp, 0x18
mov byte [ebp - 4], 0x14
push 0xffffffffffffffff
push edi
push eax
lea ecx, [ebp + 0x70]
call fcn.00407ec0
mov byte [ebp - 4], 0x13
lea ecx, [ebp - 0x60]
call fcn.0040e5c0
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0x8c]
call fcn.0040e5c0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x11c]
call fcn.0040e5c0
add esi, 1
jmp 0x40faf4
push 0x4e2284
lea eax, [ebp - 0xc4]
push eax
call fcn.0041baf0
mov byte [ebp - 4], 0x15
push eax
lea ecx, [ebp - 0x100]
push ecx
mov ecx, dword [ebx + esi*4]
call fcn.00408aa0
add esp, 0x10
mov byte [ebp - 4], 0x16
push 0xffffffffffffffff
push edi
push eax
lea ecx, [ebp + 0x70]
call fcn.00407ec0
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0x100]
call fcn.0040e5c0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0xc4]
call fcn.0040e5c0
add esi, 1
jmp 0x40faf4
lea edx, [ebp + 0x48c]
push edx
push 0x4e2288
call fcn.004840d6
add esp, 8
mov dword [ebp - 0x20], eax
cmp eax, edi
jne 0x40fc2f
push str.Unable_to_update:_failed_to_get_temp_file_name
lea eax, [ebp - 0x174]
push eax
xor cl, cl
call fcn.0040e5f0
push 0x5026f0
lea ecx, [ebp - 0x174]
push ecx
call fcn.00488a7c
mov esi, 0x64
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x24], 0xa
push eax
lea ecx, [ebp - 0x8c]
call fcn.0040e550
mov byte [ebp - 4], 0x17
lea edx, [ebp - 0x24]
push edx
lea ebx, [ebp - 0x30]
lea ecx, [ebp - 0x8c]
lea edi, [ebp + 0x54]
call fcn.00433800
add esp, 4
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x8c]
call fcn.0040e5c0
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x34], 0xa
lea eax, [ebp - 0x34]
push eax
lea ebx, [ebp - 0x2c]
mov ecx, edi
lea edi, [ebp]
call fcn.00433800
add esp, 4
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], 0xa
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp + 0x1c]
call fcn.00433c30
add esp, 8
mov dword [ebp - 4], 0x11
push str.BootStrapperVersionNum
lea ecx, [ebp - 0x60]
call fcn.0040e550
mov byte [ebp - 4], 0x1a
push str.BootStrapperVersionNum
lea ecx, [ebp - 0x8c]
call fcn.0040e550
mov bl, 0x1b
mov byte [ebp - 4], bl
lea eax, [ebp - 0x1c]
push eax
call fcn.00455dd0
add esp, 4
mov byte [ebp - 4], 0x1c
mov esi, eax
call fcn.00407220
mov edx, dword [eax]
lea ecx, [ebp + 0x38]
push ecx
lea ecx, [ebp - 0x60]
push ecx
lea ecx, [ebp - 0x8c]
push ecx
mov ecx, eax
mov edx, dword [edx + 0x28]
call edx
mov byte [ebp - 4], bl
lea esi, [ebp - 0x1c]
call fcn.00442a90
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x8c]
call fcn.0040e5c0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x60]
call fcn.0040e5c0
xor esi, esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
mov bl, 0x1d
mov byte [ebp - 4], bl
lea eax, [ebp + 0x54]
push eax
lea ecx, [ebp - 0x70]
call fcn.004069e0
push str.Bootstrapper
lea ecx, [ebp - 0x60]
call fcn.0040e550
mov byte [ebp - 4], 0x1e
lea edx, [ebp - 0x70]
lea ecx, [ebp - 0x60]
call fcn.00414e30
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x60]
call fcn.0040e5c0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x70]
call fcn.00406900
mov byte [ebp - 4], 0xc
lea ecx, [ebp]
call fcn.0040e5c0
mov byte [ebp - 4], 3
lea ecx, [ebp + 0x1c]
call fcn.0040e5c0
mov byte [ebp - 4], 2
lea ecx, [ebp + 0x38]
call fcn.0040e5c0
mov dword [ebp - 4], 1
push 0x44
push esi
lea ecx, [ebp - 0x1b8]
push ecx
call fcn.00488650
add esp, 0xc
mov dword [ebp - 0x1b8], 0x44
xor eax, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
cmp dword [ebp + 0x88], 0x10
mov edi, dword [ebp + 0x74]
jae 0x40fde9
lea edi, [ebp + 0x74]
mov ebx, dword [ebp + 0x84]
add ebx, 1
lea esi, [ebp + 0x8c]
call fcn.00442c50
lea edx, [ebp - 0x44]
push edx
lea eax, [ebp - 0x1b8]
push eax
xor ebx, ebx
push ebx
push ebx
push 0x20
push ebx
push ebx
push ebx
mov ecx, esi
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x40fe69
lea edx, [ebp + 0x54]
push edx
lea eax, [ebp - 0xc4]
push eax
mov ecx, str.Could_not_spawn_new_executable
call fcn.004089d0
add esp, 8
mov byte [ebp - 4], 0x20
push ebx
push 2
push eax
lea ecx, [ebp - 0x20c]
push ecx
call fcn.00431600
push 0x5026d0
lea edx, [ebp - 0x20c]
push edx
call fcn.00488a7c
mov dword [ebp - 4], 0x11
mov eax, 0x40fcbb
ret
mov eax, dword [ebp - 0x44]
push eax
lea ecx, [ebp - 0xe4]
push ecx
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, esi
call fcn.00408f60
mov byte [ebp - 4], 0x21
mov edx, dword [ebp - 0x40]
push edx
lea eax, [ebp - 0xd4]
push eax
mov ecx, esi
call fcn.00408f60
add esp, 0x10
mov byte [ebp - 4], 0x22
mov byte [ebp - 4], 0x23
mov dword [ebp - 0x18], 0x64
mov dword [ebp - 0x14], 0xa
mov ecx, dword [ebp - 0x20]
push ecx
lea ecx, [ebp + 0x1c]
call fcn.0040e550
mov byte [ebp - 4], 0x24
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp + 0x1c]
call fcn.00433c30
add esp, 8
mov byte [ebp - 4], 0x23
lea ecx, [ebp + 0x1c]
call fcn.0040e5c0
mov dword [ebp - 4], 0x22
jmp 0x40fef7
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0xd4]
push ecx
call fcn.004074c0
mov byte [ebp - 4], 1
lea edx, [ebp - 0xe4]
push edx
call fcn.004074c0
mov byte [ebp - 4], bl
mov esi, 0x10
cmp dword [ebp + 0x6c], esi
jb 0x40ff30
mov eax, dword [ebp + 0x58]
push eax
call fcn.004606bf
add esp, 4
mov edi, 0xf
mov dword [ebp + 0x6c], edi
mov dword [ebp + 0x68], ebx
mov byte [ebp + 0x58], bl
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x88], esi
jb 0x40ff59
mov ecx, dword [ebp + 0x74]
push ecx
call fcn.004606bf
add esp, 4
mov dword [ebp + 0x88], edi
mov dword [ebp + 0x84], ebx
mov byte [ebp + 0x74], bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x58c]
xor ecx, ebp
call fcn.0048162f
add ebp, 0x590
mov esp, ebp
pop ebp
ret 4
lea edx, [ebp + 0x38]
push edx
lea eax, [ebp - 0xc4]
push eax
mov ecx, str.illegal_version_number__
call fcn.004089d0
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x100]
push ecx
mov ecx, 0x4e28e8
call fcn.00408aa0
add esp, 0x10
mov byte [ebp - 4], 5
push eax
lea edx, [ebp - 0x148]
push edx
call fcn.0040e350
push 0x5026f0
lea eax, [ebp - 0x148]
push eax
call fcn.00488a7c
push 0x2ad
push str..BootStrapperApp.cpp
push str.Bootstrapper__second_stage
push str.Bootstrap_failed
push str.SilentAssertion
call fcn.0041d1a0
add esp, 0x14
push 0
push 0
call fcn.00488a7c
int3