Function at 0x4f6730
Capabilities:
Accept command line arguments
Check if file exists
Delete file
Read .ini file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a4b63
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x60f520]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
test cl, cl
jne 0x4f6976
xorps xmm0, xmm0
push ecx
movdqu xmmword [ebp - 0x48], xmm0
movq qword [ebp - 0x38], xmm0
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea ecx, [ebp - 0x48]
call fcn.00515dd0
push ecx
mov ecx, esp
mov dword [ebp - 4], 0
push str._install
mov dword [ebp - 0x1c], 0
call fcn.0040c2d0
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x48]
call fcn.00516a70
xorps xmm0, xmm0
mov dword [ebp - 0x28], 0
movq qword [ebp - 0x30], xmm0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
push 0x5c2c60
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 2
call fcn.0040c2d0
lea eax, [ebp - 0x30]
mov byte [ebp - 4], 3
push eax
lea edx, [ebp - 0x14]
lea ecx, [ebp - 0x1c]
call fcn.004f7710
mov byte [ebp - 4], 2
or esi, 0xffffffff
mov edx, dword [ebp - 0x14]
add esp, 4
add edx, 0xfffffff0
mov eax, esi
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4f6814
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
push 4
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0x1c
push eax
push 4
push 0x5cc314
mov edx, str.SOFTWAREAppleDesktop
call fcn.00516d70
add esp, 0x14
lea ecx, [ebp - 0x14]
call fcn.004f8900
mov edx, dword [eax]
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4f6845
sub ecx, edi
sar ecx, 1
push ecx
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
push str.InstVersion
mov edx, str.SoftwareAppleDesktop
call fcn.00516d70
mov edx, dword [ebp - 0x14]
add esp, 0x14
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4f688e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x30]
sub ecx, edi
sar ecx, 2
test ecx, ecx
je 0x4f68a4
mov eax, dword [edi]
mov dword [ebp - 0x20], eax
jmp 0x4f68ab
mov dword [ebp - 0x20], 1
cmp ecx, 1
jbe 0x4f68b8
mov eax, dword [edi + 4]
mov dword [ebp - 0x24], eax
jmp 0x4f68bf
mov dword [ebp - 0x24], 1
push ecx
push 4
lea eax, [ebp - 0x20]
mov edx, str.SOFTWAREAppleDesktop
push eax
push 4
push 0x5cc008
call fcn.00516d70
add esp, 0x10
lea eax, [ebp - 0x24]
mov edx, str.SOFTWAREAppleDesktop
push 4
push eax
push 4
push 0x5cc0a8
call fcn.00516d70
add esp, 0x14
mov edx, 1
mov ecx, edx
push 0
call fcn.004f51a0
add esp, 4
test edi, edi
je 0x4f6912
push edi
call fcn.00551995
add esp, 4
mov byte [ebp - 4], 0
mov ecx, esi
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4f6932
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x4f6953
mov edx, dword [ebp - 0x40]
call fcn.0043aae0
push dword [ebp - 0x44]
call fcn.00551f79
add esp, 4
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x4f6cbd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4f6cbd
mov eax, dword [0x6434b4]
test eax, eax
jne 0x4f69ae
push 0x2c
call fcn.00551c81
add esp, 4
mov dword [ebp - 0x18], eax
mov dword [ebp - 4], 4
test eax, eax
je 0x4f69a0
mov ecx, eax
call fcn.004947d0
jmp 0x4f69a2
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [0x6434b4], eax
push str.Apple_InstallRoutine_Update
push str.Guard
push eax
call fcn.00494d30
add esp, 0xc
call fcn.0050b280
test al, al
jne 0x4f6cbd
call fcn.0050b330
test al, al
jne 0x4f6cbd
call fcn.004fa010
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
or esi, 0xffffffff
test al, 1
je 0x4f6bd9
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x20], 0
call fcn.004f5f00
mov dword [ebp - 4], 5
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
call fcn.004f5f20
push dword [ebp - 0x20]
call edi
test eax, eax
je 0x4f6b96
push dword [ebp - 0x1c]
call edi
test eax, eax
je 0x4f6b96
xorps xmm0, xmm0
mov dword [ebp - 0x28], 0
movq qword [ebp - 0x30], xmm0
mov dword [ebp - 0x30], 0x5be2fc
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov byte [ebp - 4], 7
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x20]
lea edx, [ebp - 0x2c]
push eax
mov dword [ebp - 0x18], 0
call fcn.004139a0
add esp, 4
push dword [ebp - 0x2c]
call dword [sym.imp.SHLWAPI.dll_StrToIntA]
lea ecx, [ebp - 0x18]
mov edi, eax
call fcn.004fb7b0
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push dword [eax]
push 0
push str.DCTS
push str.Common
call esi
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x24], eax
call fcn.0040c450
push dword [ebp - 0x1c]
push 0
push str.DCTS
push str.Common
call esi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.00555f90
add esp, 4
call fcn.00555f6f
movd xmm0, edi
cvtdq2pd xmm0, xmm0
shr edi, 0x1f
movd xmm1, eax
addsd xmm0, qword [edi*8 + 0x5d0980]
cvtdq2pd xmm1, xmm1
mulsd xmm1, qword [0x5d0580]
mulsd xmm1, qword [0x5d05f0]
addsd xmm1, qword [0x5d05b0]
comisd xmm0, xmm1
jbe 0x4f6b6f
cmp dword [ebp - 0x24], esi
je 0x4f6b6f
sub esp, 8
call fcn.0048a120
add esp, 4
mov ecx, eax
call fcn.004f80b0
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], 0
call fcn.0040b840
push esi
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 8
push 0x5cbdac
push eax
call fcn.00422de0
add esp, 0xc
lea ecx, [ebp - 0x18]
call fcn.004fb7b0
push dword [eax]
push dword [ebp - 0x14]
push str.DCTS
push str.Common
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
lea ecx, [ebp - 0x18]
call fcn.0040c450
lea ecx, [ebp - 0x14]
call fcn.0040c450
mov esi, dword [ebp - 0x20]
push 0x80
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [ebp - 0x30]
call fcn.0043aa50
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
or esi, 0xffffffff
mov byte [ebp - 4], 5
mov ecx, esi
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4f6bb6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov ecx, esi
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4f6bd9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x18]
call fcn.004f5f40
push dword [eax]
call edi
mov edi, dword [ebp - 0x18]
mov edx, esi
add edi, 0xfffffff0
mov dword [ebp - 0x24], eax
lea ecx, [edi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4f6c07
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4f6cbd
push str.Start_Update_Driver
push str.Guard
call fcn.00494cb0
push eax
call fcn.00494d30
add esp, 0xc
lea ecx, [ebp - 0x18]
call fcn.004f5f40
mov dword [ebp - 4], 9
call fcn.0048a120
mov edi, eax
call fcn.0050acc0
cmp dword [0x6412b4], 0x400
jl 0x4f6c52
xor edi, edi
jmp 0x4f6c5b
mov ecx, edi
call fcn.004f83d0
mov edi, eax
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x18]
add edx, 0xfffffff0
lea ecx, [edx + 0xc]
lock xadd dword [ecx], esi
dec esi
test esi, esi
jg 0x4f6c7c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test edi, edi
je 0x4f6cbd
push str.Update_Driver_Succ_
push str.Guard
call fcn.00494cb0
push eax
call fcn.00494d30
add esp, 0xc
lea ecx, [ebp - 0x14]
call fcn.004f5f40
push 0x80
mov esi, dword [eax]
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [ebp - 0x14]
call fcn.0040c450
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0055199a
mov esp, ebp
pop ebp
ret