Function at 0x43ca80
Capabilities:
Create process on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4bb5e7
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x764
mov eax, dword [0x509334]
xor eax, dword [esp + 0x770]
push ebx
push ebp
mov dword [esp + 0x768], eax
mov eax, dword [esp + 0x77c]
xor ebp, ebp
cmp eax, ebp
push esi
push edi
jg 0x43cadf
push 0x5f4
push str.HldsUpdateTool.cpp
push str.argc___0
push str.EnoughCmdLineArgs
call fcn.00421210
mov ecx, eax
call fcn.00421040
mov edi, dword [esp + 0x788]
cmp edi, ebp
jne 0x43cb0a
push 0x5f5
push str.HldsUpdateTool.cpp
push str.argv
push str.ProvidedACmdLine
call fcn.00421210
mov ecx, eax
call fcn.00421040
mov eax, dword [0x502030]
mov esi, dword [0x50201c]
mov ebx, 0x10
cmp eax, ebx
jae 0x43cb23
mov esi, 0x50201c
mov eax, dword [edi + 4]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x43cb4a
test cl, cl
je 0x43cb46
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x43cb4a
add eax, 2
add esi, 2
test cl, cl
jne 0x43cb26
xor eax, eax
jmp 0x43cb4f
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebp
je 0x43cb73
push 0x5f6
push str.HldsUpdateTool.cpp
push str.strcmp_argv_1___sSelfUpdateCmd.c_str_____0
push str.SelfUpdateCmdLine
call fcn.00421210
mov ecx, eax
call fcn.00421040
cmp dword [0x50204c], ebx
mov eax, dword [0x502038]
jae 0x43cb85
mov eax, 0x502038
push eax
call fcn.004a1919
add esp, 4
cmp eax, 0xffffffff
jne 0x43cbf6
mov eax, str.Failed_to_set_working_directory
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], ebp
mov byte [esp + 0x30], 0
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x43cbb0
sub eax, edx
push eax
push str.Failed_to_set_working_directory
lea ecx, [esp + 0x34]
call fcn.00406650
push ebp
push ebp
push 1
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x22c]
mov dword [esp + 0x78c], ebp
call fcn.00431ee0
push 0x4ef4e0
lea ecx, [esp + 0x220]
push ecx
call fcn.0049e394
mov eax, dword [edi + 8]
push ebp
lea edx, [esp + 0x274]
push edx
push ebp
push ebp
push eax
call fcn.004a09c2
mov ecx, dword [edi + 0xc]
mov edi, 0xf
mov eax, ecx
add esp, 0x14
mov dword [esp + 0xa8], edi
mov dword [esp + 0xa4], ebp
mov byte [esp + 0x94], 0
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x43cc30
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x98]
call fcn.00406650
cmp dword [esp + 0xa8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 0x77c], 1
jae 0x43cc69
lea eax, [esp + 0x94]
push eax
call fcn.004a1914
add esp, 4
cmp eax, ebp
jl 0x43d797
cmp dword [esp + 0xa8], ebx
mov eax, dword [esp + 0x94]
jae 0x43cc91
lea eax, [esp + 0x94]
push str.0123456789
push eax
call fcn.004365a0
add esp, 8
test eax, eax
jne 0x43d797
lea ecx, [esp + 0x48]
push 0x4cd478
push ecx
call fcn.0043c410
push eax
lea edx, [esp + 0x27c]
push edx
lea eax, [esp + 0xcc]
push eax
mov esi, 4
mov byte [esp + 0x790], 4
call fcn.00407fc0
lea ecx, [esp + 0xa4]
push ecx
push eax
lea edx, [esp + 0xf4]
push edx
mov byte [esp + 0x79c], 5
call fcn.00414500
push str..pkg
push eax
lea eax, [esp + 0x154]
push eax
mov byte [esp + 0x7a8], 6
call fcn.00415180
add esp, 0x2c
cmp dword [esp + 0xf0], ebx
jb 0x43cd2e
mov ecx, dword [esp + 0xdc]
push ecx
call fcn.0049db86
add esp, 4
cmp dword [esp + 0xd4], ebx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xec], ebp
mov byte [esp + 0xdc], 0
jb 0x43cd5d
mov edx, dword [esp + 0xc0]
push edx
call fcn.0049db86
add esp, 4
cmp dword [esp + 0x60], ebx
mov dword [esp + 0xd4], edi
mov dword [esp + 0xd0], ebp
mov byte [esp + 0xc0], 0
mov byte [esp + 0x77c], 8
jb 0x43cd8e
mov eax, dword [esp + 0x4c]
push eax
call fcn.0049db86
add esp, 4
lea ecx, [esp + 0x2c]
push str..exe
push ecx
mov dword [esp + 0x68], edi
mov dword [esp + 0x64], ebp
mov byte [esp + 0x54], 0
call fcn.0043c410
push eax
lea edx, [esp + 0x27c]
push edx
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x790], 0xb
call fcn.00407fc0
add esp, 0x14
cmp dword [esp + 0x44], ebx
mov byte [esp + 0x77c], 0xd
jb 0x43cde3
mov ecx, dword [esp + 0x30]
push ecx
call fcn.0049db86
add esp, 4
lea edx, [esp + 0x48]
push str.New.exe
push edx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebp
mov byte [esp + 0x38], 0
call fcn.0043c410
push eax
lea eax, [esp + 0x27c]
push eax
lea ecx, [esp + 0x158]
push ecx
mov byte [esp + 0x790], 0xe
call fcn.00407fc0
add esp, 0x14
cmp dword [esp + 0x60], ebx
mov byte [esp + 0x77c], 0x10
jb 0x43ce3b
mov edx, dword [esp + 0x4c]
push edx
call fcn.0049db86
add esp, 4
push 0xffffffffffffffff
push ebp
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x100]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], ebp
mov byte [esp + 0x58], 0
mov dword [esp + 0x118], edi
mov dword [esp + 0x114], ebp
mov byte [esp + 0x104], 0
call fcn.00405f50
cmp dword [esp + 0x784], esi
mov byte [esp + 0x77c], 0x11
jle 0x43cf31
mov bl, 0x13
lea esp, [esp]
lea ecx, [esp + 0x48]
push 0x4c91f8
push ecx
call fcn.0043c410
mov edx, dword [esp + 0x790]
mov ecx, dword [edx + esi*4]
push ecx
push eax
lea edx, [esp + 0x3c]
push edx
mov byte [esp + 0x790], 0x12
call fcn.00415180
add esp, 0x14
push 0xffffffffffffffff
push ebp
push eax
lea ecx, [esp + 0x100]
mov byte [esp + 0x788], bl
call fcn.00405740
cmp dword [esp + 0x44], 0x10
jb 0x43ceeb
mov eax, dword [esp + 0x30]
push eax
call fcn.0049db86
add esp, 4
cmp dword [esp + 0x60], 0x10
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], ebp
mov byte [esp + 0x30], 0
mov byte [esp + 0x77c], 0x11
jb 0x43cf14
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.0049db86
add esp, 4
mov eax, dword [esp + 0x784]
inc esi
cmp esi, eax
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebp
mov byte [esp + 0x4c], 0
jl 0x43ce90
cmp dword [esp + 0x28], 0x10
mov eax, dword [esp + 0x14]
jae 0x43cf40
lea eax, [esp + 0x14]
push 4
push eax
call fcn.004a0c06
add esp, 8
cmp eax, 0xffffffff
mov esi, 0x10
je 0x43cf73
cmp dword [esp + 0x28], esi
mov eax, dword [esp + 0x14]
jae 0x43cf63
lea eax, [esp + 0x14]
push 2
push eax
call fcn.004a0c06
add esp, 8
cmp eax, 0xffffffff
jne 0x43cfeb
cmp dword [esp + 0x28], esi
mov eax, dword [esp + 0x14]
jae 0x43cf81
lea eax, [esp + 0x14]
push 0x180
push eax
call fcn.004a0bc5
add esp, 8
test eax, eax
je 0x43cfeb
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x30]
push str.Unable_to_update:_can_not_make
push eax
call fcn.00407fc0
push str._writable
push eax
lea ecx, [esp + 0x5c]
push ecx
mov byte [esp + 0x794], 0x14
call fcn.00415180
add esp, 0x18
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x15
call fcn.00407890
push 0x4eee04
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
cmp dword [esp + 0x28], esi
mov eax, dword [esp + 0x14]
jae 0x43cff9
lea eax, [esp + 0x14]
push 6
push eax
call fcn.004a0c06
add esp, 8
test eax, eax
je 0x43d023
push 0x625
push str.HldsUpdateTool.cpp
push str._access_sOldExeName.c_str____6___0
call fcn.00421210
mov ecx, eax
call fcn.00421000
lea eax, [esp + 0x270]
push eax
push 0x4cc398
call fcn.004a16bd
mov ebp, eax
xor esi, esi
add esp, 8
cmp ebp, esi
jne 0x43d0b2
lea ecx, [esp + 0x64]
call fcn.0049e7ab
mov eax, str.Unable_to_update:_failed_to_get_temp_file_name
mov byte [esp + 0x77c], 0x16
mov dword [esp + 0x64], vtable.common::ICloneableException.0
mov dword [esp + 0x88], edi
mov dword [esp + 0x84], esi
mov byte [esp + 0x74], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x43d074
sub eax, edx
push eax
push str.Unable_to_update:_failed_to_get_temp_file_name
lea ecx, [esp + 0x78]
call fcn.00406650
push 0x4eee04
lea ecx, [esp + 0x68]
push ecx
mov dword [esp + 0x94], esi
mov byte [esp + 0x784], 0x11
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
xor bl, bl
lea ebx, [ebx]
test bl, bl
jne 0x43d1db
cmp dword [esp + 0x28], 0x10
mov eax, dword [esp + 0x14]
jae 0x43d0d7
lea eax, [esp + 0x14]
push ebp
push eax
call fcn.004a1645
add esp, 8
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
jne 0x43d0ef
push 0x64
call edi
inc esi
cmp esi, 0x64
jl 0x43d0c0
test bl, bl
jne 0x43d1db
call fcn.004a0729
mov edx, dword [eax]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.00431eb0
mov esi, eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x54]
push str.Unable_to_update:_rename
push edx
mov byte [esp + 0x790], 0x17
call fcn.00407fc0
push str._to
push eax
lea eax, [esp + 0xf4]
push eax
mov byte [esp + 0x79c], 0x18
call fcn.00415180
push ebp
push eax
lea ecx, [esp + 0xe4]
push ecx
mov byte [esp + 0x7a8], 0x19
call fcn.00415180
push str.__errno
push eax
lea edx, [esp + 0x1c4]
push edx
mov byte [esp + 0x7b4], 0x1a
call fcn.00415180
push esi
push eax
lea eax, [esp + 0x1a4]
push eax
mov byte [esp + 0x7c0], 0x1b
call fcn.00414500
add esp, 0x44
push 0x4cd1d8
push eax
lea ecx, [esp + 0x118]
push ecx
mov byte [esp + 0x788], 0x1c
call fcn.00415180
add esp, 0xc
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x1d
call fcn.00407890
push 0x4eee04
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
cmp dword [esp + 0x28], 0x10
mov eax, dword [esp + 0x14]
jae 0x43d1ea
lea eax, [esp + 0x14]
push 0
push eax
call fcn.004a0c06
add esp, 8
test eax, eax
jne 0x43d257
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x114]
push str.Unable_to_update:_renamed
push ecx
call fcn.00407fc0
push 0x4cc5c0
push eax
lea edx, [esp + 0x178]
push edx
mov byte [esp + 0x794], 0x1e
call fcn.00415180
add esp, 0x18
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x1f
call fcn.00407890
push 0x4eee04
lea eax, [esp + 0x68]
push eax
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov esi, 0x10
cmp eax, esi
jae 0x43d26c
lea ecx, [esp + 0x14]
cmp dword [esp + 0x160], esi
mov eax, dword [esp + 0x14c]
jae 0x43d283
lea eax, [esp + 0x14c]
push ecx
push eax
call fcn.004a1645
add esp, 8
test eax, eax
je 0x43d37a
call fcn.004a0729
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x114]
push edx
call fcn.00431eb0
mov esi, eax
lea eax, [esp + 0x150]
push eax
lea ecx, [esp + 0x170]
push str.Unable_to_update:_rename
push ecx
mov byte [esp + 0x790], 0x20
call fcn.00407fc0
push str._to
push eax
lea edx, [esp + 0x1ac]
push edx
mov byte [esp + 0x79c], 0x21
call fcn.00415180
lea ecx, [esp + 0x30]
push ecx
push eax
lea edx, [esp + 0x54]
push edx
mov byte [esp + 0x7a8], 0x22
call fcn.00414500
push str.__errno
push eax
lea eax, [esp + 0x7c]
push eax
mov byte [esp + 0x7b4], 0x23
call fcn.00415180
push esi
push eax
lea ecx, [esp + 0x118]
push ecx
mov byte [esp + 0x7c0], 0x24
call fcn.00414500
add esp, 0x44
push 0x4cd1d8
push eax
lea edx, [esp + 0xc4]
push edx
mov byte [esp + 0x788], 0x25
call fcn.00415180
add esp, 0xc
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x26
call fcn.00407890
push 0x4eee04
lea eax, [esp + 0x68]
push eax
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
cmp dword [esp + 0x144], esi
mov eax, dword [esp + 0x130]
jae 0x43d391
lea eax, [esp + 0x130]
push eax
call fcn.004a0b96
add esp, 4
test eax, eax
je 0x43d44e
call fcn.004a0729
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x114]
push edx
call fcn.00431eb0
mov esi, eax
lea eax, [esp + 0x134]
push eax
lea ecx, [esp + 0x170]
push str.Unable_to_update:_remove
push ecx
mov byte [esp + 0x790], 0x27
call fcn.00407fc0
push str.__errno
push eax
lea edx, [esp + 0x1ac]
push edx
mov byte [esp + 0x79c], 0x28
call fcn.00415180
push esi
push eax
lea eax, [esp + 0x54]
push eax
mov byte [esp + 0x7a8], 0x29
call fcn.00414500
push 0x4cd1d8
push eax
lea ecx, [esp + 0x7c]
push ecx
mov byte [esp + 0x7b4], 0x2a
call fcn.00415180
add esp, 0x38
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x2b
call fcn.00407890
push 0x4eee04
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
cmp dword [esp + 0xa8], esi
mov eax, dword [esp + 0x94]
jae 0x43d465
lea eax, [esp + 0x94]
push eax
call fcn.004a1914
add esp, 4
push 0x4c505b
lea ecx, [esp + 0x30]
mov esi, eax
call fcn.00407a20
lea eax, [esp + 0xbc]
mov bl, 0x2c
push eax
mov byte [esp + 0x780], bl
call fcn.00420560
add esp, 4
mov ecx, eax
mov byte [esp + 0x77c], 0x2d
call fcn.00403220
mov edx, dword [eax]
push esi
push 0x502114
lea ecx, [esp + 0x34]
push ecx
mov ecx, eax
call dword [edx + 0x24]
lea ecx, [esp + 0xbc]
mov byte [esp + 0x77c], bl
call fcn.00402f90
lea ecx, [esp + 0x2c]
mov byte [esp + 0x77c], 0x11
call fcn.00426bf0
xor edx, edx
xor eax, eax
mov dword [esp + 0xac], edx
mov ecx, 0x11
lea edi, [esp + 0x1d8]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0xb0], edx
mov dword [esp + 0xb4], edx
cmp eax, 0x10
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x1d8], 0x44
mov dword [esp + 0xb8], edx
jae 0x43d52f
lea eax, [esp + 0xf8]
mov ecx, dword [esp + 0x108]
inc ecx
push ecx
push eax
lea edx, [esp + 0x378]
push edx
call fcn.00455e10
add esp, 0xc
lea eax, [esp + 0xac]
push eax
lea ecx, [esp + 0x1dc]
push ecx
push 0
push 0
push 0x20
push 0
push 0
push 0
lea edx, [esp + 0x390]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x43d626
call fcn.004a0729
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x114]
push ecx
call fcn.00431eb0
mov esi, eax
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x170]
push str.Could_not_spawn_new_executable
push eax
mov byte [esp + 0x790], 0x2e
call fcn.00407fc0
push str.__errno
push eax
lea ecx, [esp + 0x1ac]
push ecx
mov byte [esp + 0x79c], 0x2f
call fcn.00415180
push esi
push eax
lea edx, [esp + 0x54]
push edx
mov byte [esp + 0x7a8], 0x30
call fcn.00414500
push 0x4cd1d8
push eax
lea eax, [esp + 0x7c]
push eax
mov byte [esp + 0x7b4], 0x31
call fcn.00415180
add esp, 0x38
push eax
lea ecx, [esp + 0x68]
mov byte [esp + 0x780], 0x32
call fcn.00407890
push 0x4eee04
lea ecx, [esp + 0x68]
push ecx
mov dword [esp + 0x6c], vtable.common::CRuntimeError.0
call fcn.0049e394
mov edx, dword [esp + 0xac]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
lea eax, [esp + 0xdc]
push esi
push eax
call fcn.00437100
mov ecx, dword [esp + 0xbc]
push ecx
lea edx, [esp + 0xcc]
push esi
push edx
call fcn.00437100
push ebp
mov byte [esp + 0x798], 0x34
call fcn.004a0b96
add esp, 0x1c
test eax, eax
je 0x43d71b
call fcn.004a0729
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x114]
push ecx
call fcn.00431eb0
mov esi, eax
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x170]
push str.Unable_to_update:_remove
push eax
mov byte [esp + 0x790], 0x35
call fcn.00407fc0
push str.__errno
push eax
lea ecx, [esp + 0x1ac]
push ecx
mov byte [esp + 0x79c], 0x36
call fcn.00415180
push esi
push eax
lea edx, [esp + 0x70]
push edx
mov byte [esp + 0x7a8], 0x37
call fcn.00414500
push 0x4cd1d8
push eax
lea eax, [esp + 0x98]
push eax
mov byte [esp + 0x7b4], 0x38
call fcn.00415180
add esp, 0x38
push eax
lea ecx, [esp + 0x1b0]
mov byte [esp + 0x780], 0x39
call fcn.00407900
push 0x4eee04
lea ecx, [esp + 0x1b0]
push ecx
call fcn.0049e394
lea ecx, [esp + 0xbc]
call fcn.00436660
lea ecx, [esp + 0xd8]
call fcn.00436660
lea ecx, [esp + 0xf4]
call fcn.00426bf0
lea ecx, [esp + 0x148]
call fcn.00426bf0
lea ecx, [esp + 0x10]
call fcn.00426bf0
lea ecx, [esp + 0x12c]
call fcn.00426bf0
lea ecx, [esp + 0x90]
call fcn.00426bf0
mov ecx, dword [esp + 0x774]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x768]
xor ecx, dword [esp + 0x778]
pop ebp
pop ebx
add esp, 0x770
jmp fcn.0049e993
lea edx, [esp + 0x90]
push edx
lea eax, [esp + 0x68]
push str.illegal_version_number__
push eax
call fcn.00407fc0
push 0x4cd1d8
push eax
lea ecx, [esp + 0x124]
push ecx
mov byte [esp + 0x794], 2
call fcn.00415180
add esp, 0x18
push eax
lea ecx, [esp + 0x168]
mov byte [esp + 0x780], 3
call fcn.00407890
push 0x4eee04
lea edx, [esp + 0x168]
push edx
mov dword [esp + method.common::CRuntimeError.virtual_0], vtable.common::CRuntimeError.0
call fcn.0049e394
int3