Function at 0x402f70
Capabilities:
Accept command line arguments
Create thread

Disassembly:
sub esp, 0x50
push edi
lea eax, [esp + 4]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov edi, eax
test edi, edi
jne 0x402fa2
push str._n_Switcher__error:_Unable_to_parse_command_line__n
call fcn.004017d0
add esp, 4
xor eax, eax
pop edi
add esp, 0x50
ret 0x10
push esi
mov esi, 1
cmp dword [esp + 8], esi
jle 0x402fe8
mov edi, edi
mov ecx, dword [edi + esi*4]
push ecx
push str._n_Switcher__Arglist_contents__s__n
call fcn.004017d0
mov eax, dword [edi + esi*4]
add esp, 8
cmp word [eax], 0x2d
jne 0x402fe1
movzx eax, word [eax + 2]
mov byte [0x417638], 0
cmp eax, 0x62
jne 0x402fe1
mov byte [0x417638], 1
inc esi
cmp esi, dword [esp + 8]
jl 0x402fb0
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0
push str.MTK_USBSWITCHTOOL_CLASS
call dword [sym.imp.USER32.dll_FindWindowW]
mov dword [esp + 0xc], eax
test eax, eax
je 0x40301b
push str._n_Switcher__error:_another_instance_is_already_running__n
call fcn.004017d0
add esp, 4
pop esi
xor eax, eax
pop edi
add esp, 0x50
ret 0x10
xor eax, eax
lea edx, [esp + 0x30]
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], eax
push edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x38], 0x402f00
mov dword [esp + 0x58], str.MTK_USBSWITCHTOOL_CLASS
call dword [sym.imp.USER32.dll_RegisterClassW]
test ax, ax
jne 0x40307c
push str._n_Switcher__error:_register_class_not_successful__n
call fcn.004017d0
add esp, 4
pop esi
xor eax, eax
pop edi
add esp, 0x50
ret 0x10
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push str.MTK_USBSWITCHTOOL_CLASS
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [esp + 0xc], eax
test eax, eax
jne 0x4030bc
push str._n_Switcher__error:_window_not_created__n
call fcn.004017d0
add esp, 4
pop esi
xor eax, eax
pop edi
add esp, 0x50
ret 0x10
call fcn.00402dd0
test eax, eax
jne 0x4030e0
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4030d0
push 0x3e8
call esi
call fcn.00402dd0
test eax, eax
je 0x4030d0
call fcn.00401f70
mov dword [0x415240], eax
call fcn.00401f30
mov dword [0x41523c], eax
movzx eax, byte [0x417638]
push eax
call fcn.00402d90
lea ecx, [esp + 0x14]
push ecx
push 0
lea edx, [esp + 0x18]
push edx
push 0x402ec0
push 0
push 0
call fcn.00404427
push str._n_Switcher__info:_entering_message_loop._n
call fcn.004017d0
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
add esp, 0x20
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
call esi
test eax, eax
je 0x40318b
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
push ebp
mov ebp, dword [sym.imp.USER32.dll_DispatchMessageW]
lea esp, [esp]
cmp eax, 0xffffffff
je 0x403176
lea ecx, [esp + 0x18]
push ecx
call edi
lea edx, [esp + 0x18]
push edx
call ebp
push 0
push 0
push 0
lea eax, [esp + 0x24]
push eax
call esi
test eax, eax
jne 0x403150
jmp 0x40318a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._n_Switcher__error:_GetMessage_err___d_n
call fcn.004017d0
add esp, 8
pop ebp
push str._n_Switcher__info:_leaving_message_loop._n
call fcn.004017d0
add esp, 4
push 0
push str.MTK_USBSWITCHTOOL_CLASS
call dword [sym.imp.USER32.dll_UnregisterClassW]
pop esi
xor eax, eax
pop edi
add esp, 0x50
ret 0x10