Function at 0x413940
Capabilities:
Accept command line arguments
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x454
mov eax, dword [0x4ea080]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0x3e8
lea eax, [ebp - 0x3ec]
mov ebx, ecx
push 0
push eax
mov dword [ebp - 0x454], ebx
mov dword [ebp - 0x450], esi
call fcn.0048f070
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
push esi
push 0x3e8
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push 0x4b1c6c
push 0x4b1988
call edi
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4139b0
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x3ec]
push edx
lea ecx, [ebx + 0xd4]
call fcn.004110e0
push 0x13
lea ecx, [ebx + 0x10c]
push str.SoftwareShouyoudao
call fcn.004110e0
push 1
push 0x4b1930
lea ecx, [ebx + 0x10c]
call fcn.004111d0
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x413a00
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0x10c]
call fcn.004111d0
push 0x3e8
lea ecx, [ebp - 0x3ec]
push 0
push ecx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push str.PlayName
push 0x4b1988
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413a60
sub eax, ecx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0xf0]
call fcn.004110e0
push 0x3e8
lea ecx, [ebp - 0x3ec]
push 0
push ecx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push str.RegService
push str.RunApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413ac0
sub eax, ecx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0x9c]
call fcn.004110e0
push 0x3e8
lea ecx, [ebp - 0x3ec]
push 0
push ecx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push 0x4b1c3c
push str.RunApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413b20
sub eax, ecx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0xb8]
call fcn.004110e0
push 0x3e8
lea ecx, [ebp - 0x3ec]
push 0
push ecx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push str.CloseExe
push str.SetupApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413b80
sub eax, ecx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0x198]
call fcn.004110e0
push 0x3e8
lea ecx, [ebp - 0x3ec]
push 0
push ecx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push str.LnkFile
push str.SetupApp
call edi
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x413be0
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebx + 0x128]
call fcn.004110e0
cmp dword [ebx + 0x138], 0
push str.IsWow64Process
setne cl
push str.kernel32
mov byte [ebx + 8], cl
mov dword [ebp - 0x444], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x448], eax
test eax, eax
je 0x413c4e
lea edx, [ebp - 0x444]
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [ebp - 0x448]
cmp dword [ebp - 0x444], 0
push 0x3e8
push 0
je 0x413d54
lea eax, [ebp - 0x3ec]
push eax
call fcn.0048f070
add esp, 0xc
push esi
push 0x104
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push str.RunUninstall64
push str.UninstallApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
jmp 0x413ca0
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413ca0
sub eax, ecx
sar eax, 1
push eax
lea edx, [ebp - 0x3ec]
push edx
lea ecx, [ebx + 0x1b4]
call fcn.004110e0
push 0x3e8
lea eax, [ebp - 0x3ec]
push 0
push eax
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push str.RunUninstall64Path
push str.UninstallApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413d00
sub eax, ecx
sar eax, 1
push eax
lea edx, [ebp - 0x3ec]
push edx
lea ecx, [ebx + 0x1d0]
call fcn.004110e0
push 0x3e8
lea eax, [ebp - 0x3ec]
push 0
push eax
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push str.RunSetup64
jmp 0x413e3f
lea edx, [ebp - 0x3ec]
push edx
call fcn.0048f070
add esp, 0xc
push esi
push 0x104
lea eax, [ebp - 0x3ec]
push eax
push 0x4b1974
push str.RunUninstall32
push str.UninstallApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
lea ebx, [ebx]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413d90
sub eax, ecx
sar eax, 1
push eax
lea ecx, [ebp - 0x3ec]
push ecx
lea ecx, [ebx + 0x1b4]
call fcn.004110e0
push 0x3e8
lea edx, [ebp - 0x3ec]
push 0
push edx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea eax, [ebp - 0x3ec]
push eax
push 0x4b1974
push str.RunUninstall32Path
push str.UninstallApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
nop
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x413df0
sub eax, ecx
sar eax, 1
push eax
lea ecx, [ebp - 0x3ec]
push ecx
lea ecx, [ebx + 0x1d0]
call fcn.004110e0
push 0x3e8
lea edx, [ebp - 0x3ec]
push 0
push edx
call fcn.0048f070
add esp, 0xc
push esi
push 0x3e8
lea eax, [ebp - 0x3ec]
push eax
push 0x4b1974
push str.RunSetup32
push str.SetupApp
call edi
lea ecx, [ebx + 0xc]
call fcn.004130b0
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x413e57
sub eax, edx
sar eax, 1
je 0x413fc9
lea ecx, [ebp - 0x448]
push ecx
lea edx, [ebp - 0x3ec]
xor edi, edi
push edx
mov dword [ebp - 0x448], edi
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x444], eax
mov eax, 7
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x3f4], eax
mov eax, dword [ebp - 0x448]
xor ecx, ecx
xor edx, edx
dec eax
mov dword [ebp - 0x414], edi
mov word [ebp - 0x424], cx
mov dword [ebp - 0x3f8], edi
mov word [ebp - 0x408], dx
test eax, eax
jle 0x413f8e
lea esp, [esp]
mov ecx, dword [ebp - 0x444]
mov edx, dword [ecx + edi*4]
mov eax, edx
lea esi, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x413ee0
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x424]
call fcn.004110e0
mov edx, dword [ebp - 0x444]
mov ecx, dword [edx + edi*4 + 4]
mov eax, ecx
lea edx, [eax + 2]
jmp 0x413f10
mov si, word [eax]
add eax, 2
test si, si
jne 0x413f10
sub eax, edx
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x408]
call fcn.004110e0
mov eax, dword [ebx + 0xc]
mov esi, dword [eax]
mov edx, dword [esi + 4]
lea ecx, [ebp - 0x424]
push ecx
push edx
push esi
lea ecx, [ebx + 0xc]
add edi, 2
call fcn.004131a0
mov ecx, dword [ebx + 0x10]
mov edx, 0x4924923
sub edx, ecx
cmp edx, 1
jb 0x4144e8
inc ecx
mov dword [ebx + 0x10], ecx
mov dword [esi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov edx, dword [ebp - 0x448]
dec edx
cmp edi, edx
jl 0x413ed0
cmp dword [ebp - 0x3f4], 8
jb 0x413f8e
mov eax, dword [ebp - 0x408]
push eax
call fcn.0048e224
add esp, 4
xor ecx, ecx
cmp dword [ebp - 0x410], 8
mov dword [ebp - 0x3f4], 7
mov dword [ebp - 0x3f8], 0
mov word [ebp - 0x408], cx
jb 0x413fc3
mov edx, dword [ebp - 0x424]
push edx
call fcn.0048e224
add esp, 4
mov esi, dword [ebp - 0x450]
mov edi, dword [ebp - 0x454]
lea ecx, [edi + 0x18]
xor ebx, ebx
call fcn.00413140
push 0x3e8
lea eax, [ebp - 0x3ec]
push ebx
push eax
call fcn.0048f070
add esp, 0xc
push esi
push 0x104
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push 0x4b1b14
push str.SetupApp
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x414020
sub eax, edx
sar eax, 1
je 0x4141ad
lea edx, [ebp - 0x448]
push edx
lea eax, [ebp - 0x3ec]
push eax
mov dword [ebp - 0x448], ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x44c], eax
mov eax, 7
mov dword [ebp - 0x42c], eax
mov dword [ebp - 0x410], eax
mov dword [ebp - 0x3f4], eax
xor eax, eax
mov word [ebp - 0x408], ax
xor ecx, ecx
xor edx, edx
mov word [ebp - 0x440], cx
mov ecx, dword [ebp - 0x448]
mov word [ebp - 0x424], dx
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + eax*2]
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x430], ebx
mov dword [ebp - 0x414], ebx
mov dword [ebp - 0x3f8], ebx
jne 0x4141a2
add ecx, 0xfffffffe
mov dword [ebp - 0x444], ebx
test ecx, ecx
jle 0x4141a2
mov ebx, dword [ebp - 0x44c]
add ebx, 8
mov edx, dword [ebx - 8]
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4140e0
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x440]
call fcn.004110e0
mov ecx, dword [ebx - 4]
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x414104
sub eax, esi
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x424]
call fcn.004110e0
mov ecx, dword [ebx]
mov eax, ecx
lea edx, [eax + 2]
mov si, word [eax]
add eax, 2
test si, si
jne 0x414127
sub eax, edx
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x408]
call fcn.004110e0
mov ecx, dword [edi + 0x18]
mov esi, dword [ecx]
mov eax, dword [esi + 4]
add dword [ebp - 0x444], 3
lea edx, [ebp - 0x440]
push edx
push eax
push esi
lea ecx, [edi + 0x18]
add ebx, 0xc
call fcn.00413270
mov ecx, dword [edi + 0x1c]
mov edx, 0x30c30c2
sub edx, ecx
cmp edx, 1
jb 0x4144e8
inc ecx
mov dword [edi + 0x1c], ecx
mov dword [esi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
mov edx, dword [ebp - 0x448]
add edx, 0xfffffffe
cmp dword [ebp - 0x444], edx
jl 0x4140d4
mov esi, dword [ebp - 0x450]
xor ebx, ebx
lea ecx, [ebp - 0x440]
call fcn.00412db0
push 0x3e8
lea eax, [ebp - 0x3ec]
push ebx
push eax
call fcn.0048f070
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
push esi
push 0x104
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1b10
push str.Space
push str.SetupApp
call edi
lea edx, [ebp - 0x3ec]
push edx
call fcn.0048fa2d
mov ecx, dword [ebp - 0x454]
push 0x3e8
lea edx, [ebp - 0x3ec]
push ebx
push edx
mov dword [ecx + 4], eax
call fcn.0048f070
add esp, 0x10
push esi
push 0x104
lea eax, [ebp - 0x3ec]
push eax
push 0x4b1974
push str.UninstallEXE
push str.UninstallApp
call edi
lea eax, [ebp - 0x3ec]
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
cmp dx, bx
jne 0x414237
mov esi, dword [ebp - 0x454]
sub eax, ecx
sar eax, 1
push eax
lea ecx, [ebp - 0x3ec]
push ecx
lea ecx, [esi + 0x17c]
call fcn.004110e0
lea ecx, [esi + 0x30]
call fcn.00411760
push 0x3e8
xor ebx, ebx
lea edx, [ebp - 0x3ec]
push ebx
push edx
call fcn.0048f070
mov eax, dword [ebp - 0x450]
add esp, 0xc
push eax
push 0x104
lea ecx, [ebp - 0x3ec]
push ecx
push 0x4b1974
push str.RetainFile
push str.SetupApp
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4142b0
sub eax, edx
sar eax, 1
je 0x414397
lea edx, [ebp - 0x444]
push edx
lea eax, [ebp - 0x3ec]
push eax
mov dword [ebp - 0x444], ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x44c], eax
cmp dword [ebp - 0x444], ebx
jle 0x414397
mov ecx, dword [ebp - 0x44c]
mov ecx, dword [ecx + ebx*4]
xor edx, edx
mov eax, ecx
mov dword [ebp - 0x3f4], 7
mov dword [ebp - 0x3f8], 0
mov word [ebp - 0x408], dx
lea edi, [eax + 2]
lea esp, [esp]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x414320
sub eax, edi
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x408]
call fcn.004110e0
mov edi, dword [esi + 0x30]
mov ecx, dword [edi + 4]
lea eax, [ebp - 0x408]
push eax
push ecx
push edi
lea ecx, [esi + 0x30]
call fcn.004117c0
mov ecx, dword [esi + 0x34]
mov edx, 0x9249248
sub edx, ecx
cmp edx, 1
jb 0x4144e8
inc ecx
mov dword [esi + 0x34], ecx
mov dword [edi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
cmp dword [ebp - 0x3f4], 8
jb 0x41438a
mov edx, dword [ebp - 0x408]
push edx
call fcn.0048e224
add esp, 4
inc ebx
cmp ebx, dword [ebp - 0x444]
jl 0x4142f1
mov edi, esi
lea ecx, [edi + 0x3c]
call fcn.00411760
push 0x3e8
lea eax, [ebp - 0x3ec]
push 0
push eax
call fcn.0048f070
mov ecx, dword [ebp - 0x450]
add esp, 0xc
push ecx
push 0x104
lea edx, [ebp - 0x3ec]
push edx
push 0x4b1974
push str.DataFile
push str.SetupApp
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x3ec]
lea edx, [eax + 2]
jmp 0x4143f0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4143f0
sub eax, edx
sar eax, 1
je 0x4144d3
lea eax, [ebp - 0x444]
push eax
lea ecx, [ebp - 0x3ec]
xor ebx, ebx
push ecx
mov dword [ebp - 0x444], ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x44c], eax
cmp dword [ebp - 0x444], ebx
jle 0x4144d3
mov edx, dword [ebp - 0x44c]
mov ecx, dword [edx + ebx*4]
xor eax, eax
mov word [ebp - 0x408], ax
mov eax, ecx
mov dword [ebp - 0x3f4], 7
mov dword [ebp - 0x3f8], 0
lea esi, [eax + 2]
mov edi, edi
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x414460
sub eax, esi
sar eax, 1
push eax
push ecx
lea ecx, [ebp - 0x408]
call fcn.004110e0
mov esi, dword [edi + 0x3c]
mov edx, dword [esi + 4]
lea ecx, [ebp - 0x408]
push ecx
push edx
push esi
lea ecx, [edi + 0x3c]
call fcn.004117c0
mov ecx, dword [edi + 0x40]
mov edx, 0x9249248
sub edx, ecx
cmp edx, 1
jb 0x4144e8
inc ecx
mov dword [edi + 0x40], ecx
mov dword [esi + 4], eax
mov ecx, dword [eax + 4]
mov dword [ecx], eax
cmp dword [ebp - 0x3f4], 8
jb 0x4144c6
mov edx, dword [ebp - 0x408]
push edx
call fcn.0048e224
add esp, 4
inc ebx
cmp ebx, dword [ebp - 0x444]
jl 0x414433
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov al, 1
pop ebx
call fcn.0048ef91
mov esp, ebp
pop ebp
ret 4
push str.list_T__too_long
call fcn.00425a9a
int3