Function at 0x40cec0
Capabilities:
Create thread
Delete file
Read .ini file
Set console window title
Terminate process

Disassembly:
push ebx
push ebp
mov ebp, dword [esp + 0xc]
push esi
mov eax, str._doshiftdevice
push edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40ced0
sub eax, edx
cmp eax, 4
mov ecx, str._doshiftdevice
mov edx, ebp
mov ebx, 1
jb 0x40cf04
lea esp, [esp]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cf08
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cef0
test eax, eax
je 0x40cf59
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cf4e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40cf59
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cf4e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40cf59
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cf4e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40cf59
movzx esi, byte [edx]
movzx eax, byte [ecx]
sub esi, eax
je 0x40cf59
test esi, esi
mov eax, ebx
jg 0x40cf5b
or eax, 0xffffffff
jmp 0x40cf5b
xor eax, eax
test eax, eax
jne 0x40cf80
push 5
push eax
push eax
xor edx, edx
xor ecx, ecx
call fcn.004179b0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
mov dword [esp + 4], str.Success_to_operate.
jmp fcn.004301ca
mov eax, str._nolicense
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40cf88
sub eax, edx
cmp eax, 4
mov ecx, str._nolicense
mov edx, ebp
jb 0x40cfb4
nop
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40cfb8
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40cfa0
test eax, eax
je 0x40d009
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cffe
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d009
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cffe
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d009
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40cffe
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d009
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x40d009
test esi, esi
mov eax, ebx
jg 0x40d00b
or eax, 0xffffffff
jmp 0x40d00b
xor eax, eax
test eax, eax
jne 0x40d01e
mov byte [0x458e4a], bl
pop edi
pop esi
pop ebp
pop ebx
jmp fcn.0040c670
mov eax, 0x44f0ec
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40d026
sub eax, edx
cmp eax, 4
mov ecx, 0x44f0ec
mov edx, ebp
jb 0x40d054
lea ecx, [ecx]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40d058
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40d040
test eax, eax
je 0x40d0a9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d09e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d0a9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d09e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d0a9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d09e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d0a9
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x40d0a9
test esi, esi
mov eax, ebx
jg 0x40d0ab
or eax, 0xffffffff
jmp 0x40d0ab
xor eax, eax
test eax, eax
je 0x40d523
mov eax, 0x44f0ec
lea edx, [eax + 1]
jmp 0x40d0c0
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40d0c0
sub eax, edx
cmp eax, 4
mov ecx, str._liveupdate
mov edx, ebp
jb 0x40d0eb
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40d0ef
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40d0d7
test eax, eax
je 0x40d140
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d135
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d140
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d135
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d140
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d135
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d140
movzx esi, byte [edx]
movzx eax, byte [ecx]
sub esi, eax
je 0x40d140
test esi, esi
mov eax, ebx
jg 0x40d142
or eax, 0xffffffff
jmp 0x40d142
xor eax, eax
test eax, eax
je 0x40d523
mov eax, str._erase
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40d152
sub eax, edx
cmp eax, 4
mov ecx, str._erase
mov edx, ebp
jb 0x40d184
lea esp, [esp]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40d188
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40d170
test eax, eax
je 0x40d1d9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d1ce
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d1d9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d1ce
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d1d9
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d1ce
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d1d9
movzx esi, byte [edx]
movzx ecx, byte [ecx]
sub esi, ecx
je 0x40d1d9
test esi, esi
mov eax, ebx
jg 0x40d1db
or eax, 0xffffffff
jmp 0x40d1db
xor eax, eax
test eax, eax
jne 0x40d1ee
pop edi
pop esi
pop ebp
mov byte [0x45bd5d], bl
pop ebx
jmp fcn.0040c670
mov eax, str._checkversion
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40d1f6
sub eax, edx
cmp eax, 4
mov ecx, str._checkversion
mov edx, ebp
jb 0x40d224
lea ecx, [ecx]
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x40d228
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x40d210
test eax, eax
je 0x40d279
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d26e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d279
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d26e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d279
movzx esi, byte [edx]
movzx edi, byte [ecx]
sub esi, edi
jne 0x40d26e
sub eax, ebx
add ecx, ebx
add edx, ebx
test eax, eax
je 0x40d279
movzx esi, byte [edx]
movzx edx, byte [ecx]
sub esi, edx
je 0x40d279
test esi, esi
mov eax, ebx
jg 0x40d27b
or eax, 0xffffffff
jmp 0x40d27b
xor eax, eax
test eax, eax
jne 0x40d28e
pop edi
pop esi
pop ebp
mov byte [0x45be71], bl
pop ebx
jmp fcn.0040c670
mov edi, str.restore
mov esi, ebp
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d2f7
mov esi, 0x45bb50
mov byte [0x45bd5f], bl
call fcn.00401520
mov edi, esi
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, ebx
test al, al
jne 0x40d2b5
mov ecx, 6
mov esi, str._restore_data_restore.ini
rep movsd dword es:[edi], dword [esi]
mov eax, 0x45bb50
movsw word es:[edi], word [esi]
call fcn.00401fc0
test al, al
jne 0x40d015
push 0x45bb50
push str._s_is_not_exist.
call fcn.004301ca
add esp, 8
push 0
call fcn.00431368
mov edi, str._quick
mov esi, ebp
mov ecx, 7
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d318
pop edi
pop esi
pop ebp
mov byte [0x45bdeb], bl
pop ebx
jmp fcn.0040c670
mov edi, str._backupwifi
mov esi, ebp
mov ecx, 0xc
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d339
pop edi
pop esi
pop ebp
mov byte [0x45be73], bl
pop ebx
jmp fcn.0040c670
mov edi, str._atbmclrmru
mov esi, ebp
mov ecx, 0xc
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d35a
pop edi
pop esi
pop ebp
mov byte [0x45bf04], bl
pop ebx
jmp fcn.0040c670
mov edi, str._downloadall
mov esi, ebp
mov ecx, 0xd
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d37b
pop edi
pop esi
pop ebp
mov byte [0x45bf05], bl
pop ebx
jmp fcn.0040c670
mov edi, str.loadmcfg
mov esi, ebp
mov ecx, 9
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40d512
mov esi, 0x45bb50
mov byte [0x45bdea], bl
call fcn.00401520
xor eax, eax
jmp 0x40d3b0
mov cl, byte [eax + 0x45bb50]
mov byte [eax + 0x45b838], cl
add eax, ebx
test cl, cl
jne 0x40d3b0
xor eax, eax
jmp 0x40d3d0
mov cl, byte [eax + 0x45bb50]
mov byte [eax + 0x45b940], cl
add eax, ebx
test cl, cl
jne 0x40d3d0
xor eax, eax
jmp 0x40d3f0
mov cl, byte [eax + 0x45bb50]
mov byte [eax + 0x45ba48], cl
add eax, ebx
test cl, cl
jne 0x40d3f0
mov eax, 0x45b838
add eax, 0xffffffff
lea ebx, [ebx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x40d410
mov ecx, dword [str.imagemcfg_cust.mbn]
mov edx, dword [0x44f198]
mov dword [eax], ecx
mov ecx, dword [0x44f19c]
mov dword [eax + 4], edx
mov edx, dword [0x44f1a0]
mov dword [eax + 8], ecx
mov ecx, dword [0x44f1a4]
mov dword [eax + 0xc], edx
mov dl, byte [0x44f1a8]
mov dword [eax + 0x10], ecx
mov byte [eax + 0x14], dl
mov eax, 0x45b940
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x40d457
mov ecx, dword [str.imagemcfg_band.mbn]
mov esi, dword [0x44f1b0]
mov edi, dword [0x44f1b4]
mov ebp, dword [0x44f1b8]
mov edx, dword [0x44f1bc]
mov bl, byte [0x44f1c0]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov dword [eax + 0xc], ebp
mov dword [eax + 0x10], edx
mov byte [eax + 0x14], bl
mov eax, 0x45ba48
add eax, 0xffffffff
mov edi, edi
mov bl, byte [eax + 1]
add eax, 1
test bl, bl
jne 0x40d4a0
mov dword [eax], ecx
mov cl, byte [0x44f1c0]
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov dword [eax + 0xc], ebp
mov dword [eax + 0x10], edx
mov byte [eax + 0x14], cl
mov eax, 0x45b838
call fcn.00401fc0
test al, al
jne 0x40d015
mov eax, 0x45b940
call fcn.00401fc0
test al, al
jne 0x40d015
mov eax, 0x45ba48
call fcn.00401fc0
test al, al
jne 0x40d015
push 0x10
push str.Error
push str.Error_the_imagemcfg_xxxx.mbn_file_is_not_exist.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.00431368
pop edi
pop esi
pop ebp
pop ebx
mov dword [esp + 4], str.Invalid_input._n
jmp fcn.004301ca
pop edi
pop esi
pop ebp
mov byte [0x45bd5c], bl
pop ebx
jmp fcn.0040c670