Function at 0x401023
Capabilities:
Accept command line arguments
Check if file exists
Terminate process

Disassembly:
jmp 0x4016d0
sub esp, 0x24
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov ecx, eax
xor edi, edi
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], edi
test eax, eax
jle 0x401831
mov ebp, dword [ecx + edi*4]
lea eax, [ecx + edi*4]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
push ebp
mov dword [esp + 0x30], eax
call ebx
push str._protocolUri
mov esi, eax
call ebx
mov ebx, eax
test ebx, ebx
je 0x4017c0
test esi, esi
je 0x4017c0
cmp esi, ebx
jb 0x4017c0
sub esi, ebx
mov dword [esp + 0x24], 0
add esi, 1
mov dword [esp + 0x14], esi
je 0x4017c0
mov eax, esi
xor esi, esi
test ebx, ebx
je 0x4017ac
mov edi, ebp
nop dword [eax + eax]
movzx eax, word [esi*2 + str._protocolUri]
mov dword [esp + 0x1c], eax
movzx eax, word [edi]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.USER32.dll_CharLowerW]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.USER32.dll_CharLowerW]
mov ax, word [esp + 0x1c]
cmp ax, word [esp + 0x20]
jne 0x4017a8
lea eax, [ebx - 1]
cmp esi, eax
je 0x401831
inc esi
add edi, 2
cmp esi, ebx
jb 0x401760
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
add ebp, 2
inc esi
mov dword [esp + 0x24], esi
cmp esi, eax
jb 0x401750
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov edx, dword [edx]
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4017d0
sub ecx, esi
sar ecx, 1
cmp ecx, 4
jbe 0x401819
cmp word [edx + ecx*2 - 8], 0x2e
jne 0x401819
movzx eax, word [edx + ecx*2 - 6]
cmp eax, 0x64
je 0x4017fb
cmp eax, 0x44
jne 0x401819
movzx eax, word [edx + ecx*2 - 4]
cmp eax, 0x6c
je 0x40180a
cmp eax, 0x4c
jne 0x401819
movzx eax, word [edx + ecx*2 - 2]
cmp eax, 0x6c
je 0x40182d
cmp eax, 0x4c
je 0x40182d
inc edi
mov dword [esp + 0x28], edi
cmp edi, dword [esp + 0x30]
jge 0x401831
mov ecx, dword [esp + 0x18]
jmp 0x401705
xor bl, bl
jmp 0x401833
mov bl, 1
push 0x407720
call fcn.00401014
add esp, 4
push 0x4043d4
push 0x104
push 0x407720
call fcn.0040102d
push 0x4043d8
push 0x104
push 0x407720
call fcn.0040102d
test bl, bl
jne 0x4018e8
push 0x404410
push 0x104
push 0x407720
call fcn.0040102d
mov ebp, dword [esp + 0x18]
mov esi, section..rdata
nop dword [eax]
push dword [esi]
push dword [ebp + 8]
call fcn.0040100a
add esp, 8
test al, al
je 0x4018c7
push dword [esi + 4]
push dword [ebp + 0xc]
call fcn.0040100a
add esp, 8
test al, al
jne 0x4018d4
push 0x404304
push dword [esi + 4]
call fcn.0040100a
add esp, 8
test al, al
jne 0x4018d4
add esi, 0xc
cmp esi, 0x404078
jne 0x401890
jmp 0x4018ec
push dword [esi + 8]
push 0x104
push 0x407720
call fcn.0040102d
jmp 0x4018ec
mov ebp, dword [esp + 0x18]
push 0x404414
push 0x104
push 0x407720
call fcn.0040102d
push 0x407720
call fcn.00401050
push 0
push 1
push 0
mov esi, eax
push str.Command_line:
push esi
call fcn.0040104b
xor edi, edi
add esp, 0x18
cmp dword [esp + 0x10], edi
jle 0x401953
push 0
push 1
push 0
push dword [ebp + edi*4]
push esi
call fcn.0040104b
push 0
push 1
push 0
push 0x404444
push esi
call fcn.0040104b
inc edi
add esp, 0x28
cmp edi, dword [esp + 0x10]
jl 0x401928
push esi
call fcn.00401028
push esi
call fcn.00401028
add esp, 8
push 0
push 1
push 1
test bl, bl
je 0x401a9c
push 0x404448
push esi
call fcn.0040104b
push 0x407108
call fcn.00401014
add esp, 0x18
test al, al
je 0x401a8f
push 0x407108
push 0x104
push 0x407310
call fcn.0040102d
test eax, eax
js 0x401a8f
push str.CiscoSparkLauncher.dll
push 0x104
push 0x407310
call fcn.0040102d
test eax, eax
js 0x401a8f
push 0x407310
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x401a83
push eax
push 1
push 1
push str.Trying_the_launcher_in_the_current_directory_next_
push esi
call fcn.0040104b
add esp, 0x14
mov eax, 0x208
mov ecx, 0x407108
nop dword [eax + eax]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x401a00
mov eax, 0x208
mov ecx, 0x407310
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x401a15
push 0x407108
call fcn.00401005
add esp, 4
test al, al
je 0x401a61
push 0x407108
push 0x104
push 0x407310
call fcn.0040102d
test eax, eax
js 0x401a61
push str.CiscoSparkLauncher.dll
push 0x104
push 0x407310
call fcn.0040102d
test eax, eax
jns 0x401a83
push 0
push 1
push 1
push str.Error_getting_current_directory_path_
push esi
call fcn.0040104b
push esi
call fcn.00401032
add esp, 0x18
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov edi, 0x407108
mov ebx, 0x407310
jmp 0x401ad4
push 0
push 1
push 1
push str.Error_getting_launcher_paths_
jmp 0x401a6c
push str.Started_in_the_app_loader_mode.
push esi
call fcn.0040104b
mov edi, dword [ebp + 4]
add esp, 0x14
mov ebx, dword [ebp + 8]
push edi
push 0x104
push 0x407518
call fcn.0040102d
push 0x4043d4
push 0x104
push 0x407518
call fcn.0040102d
push ebx
push 0x104
push 0x407518
call fcn.0040102d
push esi
call fcn.00401028
push 0
push 1
push 1
push str.Params_selected:
push esi
call fcn.0040104b
push 0
push 1
push 1
push 0x407518
push esi
call fcn.0040104b
push 0
push 1
push 1
push edi
push esi
call fcn.0040104b
add esp, 0x40
push esi
call fcn.00401028
add esp, 4
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x401b59
push eax
push 1
push 1
push str.ERROR_path_not_a_directory_
push esi
call fcn.0040104b
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call fcn.00401032
add esp, 4
push 5
jmp 0x401a7d
push edi
call dword [sym.imp.KERNEL32.dll_SetDllDirectoryW]
test eax, eax
jne 0x401b8d
push eax
push 1
push 1
push str.ERROR_cant_set_dll_directory_
push esi
call fcn.0040104b
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call fcn.00401032
add esp, 4
push 2
jmp 0x401a7d
push 0x407518
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
test edi, edi
jne 0x401bc7
push eax
push 1
push 1
push str.ERROR_cant_load_library_
push esi
call fcn.0040104b
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call fcn.00401032
add esp, 4
push 8
jmp 0x401a7d
push str.SparkEntryPoint
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0
mov ebx, eax
push 1
push 1
test ebx, ebx
jne 0x401c03
push str.ERROR_cant_get_an_entry_point:
push esi
call fcn.0040104b
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call fcn.00401032
add esp, 4
push 9
jmp 0x401a7d
push str.ACTION_Calling_the_entry_point.
push esi
call fcn.0040104b
push 0
push 1
push 1
push str...._BEFORE_ENTRY_POINT_...
push esi
call fcn.0040104b
push esi
call fcn.00401032
push ebp
push dword [esp + 0x40]
call ebx
add esp, 0x34
push 0x407720
test eax, eax
jne 0x401c4a
call fcn.00401050
mov esi, eax
push esi
call fcn.00401019
add esp, 8
jmp 0x401c54
call fcn.00401041
add esp, 4
mov esi, eax
push 0
push 1
push 1
push str...._AFTER_ENTRY_POINT_...
push esi
call fcn.0040104b
push 0
push 1
push 1
push str.ACTION_Exited_from_the_entry_point.
push esi
call fcn.0040104b
add esp, 0x28
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
jne 0x401cad
push eax
push 1
push 1
push str.ERROR_cant_free_the_library_
push esi
call fcn.0040104b
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call fcn.00401032
add esp, 4
push 4
jmp 0x401a7d
push esi
call fcn.00401028
push 0
push 1
push 1
push str.Finished_successfully__exiting.
push esi
call fcn.0040104b
push esi
call fcn.00401032
add esp, 0x1c
push 0
jmp 0x401a7d