Function at 0x446ef0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x58c488
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push esi
push edi
mov eax, dword [0x5ef60c]
xor eax, esp
push eax
lea eax, [esp + 0x60]
mov dword fs:[0], eax
push str.UI_MODE_:_INSTALL_:_START__r_n
push 0x5f80f8
call fcn.00403a70
mov esi, dword [ebp + 0xc]
push esi
push str.UI_MODE_:_INSTALL_:_DOWNLOAD_ONLY___d__r_n
push 0x5f80f8
call fcn.00403a70
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x20]
add esp, 0x14
push 0
push 0
push 0x2b1d
push eax
mov dword [esp + 0x2c], 0
call dword [sym.imp.USER32.dll_SendMessageW]
call fcn.00467a9c
mov eax, dword [eax + 4]
add eax, 0x13c
push eax
call fcn.0041edc0
test esi, esi
jne 0x446f9e
call fcn.00467a9c
mov eax, dword [eax + 4]
cmp dword [eax + 0x168], esi
lea ebx, [eax + 0x13c]
jne 0x446f93
call fcn.0041dd30
jmp 0x446f96
mov eax, dword [ebx + 0x28]
test eax, eax
je 0x4475ac
mov ecx, dword [edi + 0x20]
push 0
push 0
push 0x2b1c
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
lea esi, [esp + 0x34]
mov ebx, eax
call fcn.0043fd80
mov dword [esp + 0x68], 0
cmp dword [edi + 0x154], ebx
jbe 0x446ff4
test ebx, ebx
jl 0x447378
cmp ebx, dword [edi + 0x154]
jge 0x447378
mov eax, dword [edi + 0x150]
lea edx, [ebx + ebx*4]
lea edi, [eax + edx*8]
call fcn.00442d30
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x34]
cmp dword [ecx - 0xc], 0
je 0x4475a3
mov eax, dword [esp + 0x38]
cmp eax, 3
je 0x447014
cmp eax, 2
jne 0x4475a3
mov edx, dword [edi + 0x388]
cmp dword [edx - 0xc], 0
jne 0x44706b
push str.UI_MODE_:_INSTALL_:_LAUNCH_EULA__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 8
push 0
mov ecx, edi
call fcn.004660b6
call fcn.00467a9c
mov eax, dword [eax + 4]
lea ecx, [eax + 0x13c]
call fcn.0041d0c0
mov esi, eax
push esi
push str.UI_MODE_:_INSTALL_:_LAUNCH_EULA_:_RETURN___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
test esi, esi
jne 0x447590
fldz
mov eax, dword [edi + 0x90]
xor esi, esi
fstp qword [edi + 0x178]
xor ebx, ebx
cmp eax, esi
mov dword [esp + 0x14], esi
jle 0x447448
lea esp, [esp]
push ebx
push str.UI_MODE_:_INSTALL_:_STRUCT_NUMBER___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
test esi, esi
jl 0x447378
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0x90]
push eax
push str.UI_MODE_:_INSTALL_:_LIST_NUMBER___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + esi + 0x98]
add eax, esi
push ecx
push str.UI_MODE_:_INSTALL_:_SOFTWARENAME___s__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov edx, dword [eax + esi + 0x9c]
add eax, esi
push edx
push str.UI_MODE_:_INSTALL_:_VERSION___s__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0xa4]
push eax
push str.UI_MODE_:_INSTALL_:_DESCRIPTION___s__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + esi + 0xb0]
add eax, esi
push ecx
push str.UI_MODE_:_INSTALL_:_SIZE___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov edx, dword [eax + esi + 0xb4]
add eax, esi
push edx
push str.UI_MODE_:_INSTALL_:_NEWVERSION___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0xbc]
push eax
push str.UI_MODE_:_INSTALL_:_INSTALLED___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + esi + 0xb8]
add eax, esi
push ecx
push str.UI_MODE_:_INSTALL_:_DOWNLOAD___d__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0x98]
sub eax, 0x10
push eax
call fcn.00401ff0
add eax, 0x10
add esp, 4
mov dword [esp + 0x18], eax
mov byte [esp + 0x68], 1
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0xd4], 0
je 0x447273
cmp ebx, dword [edi + 0x90]
jge 0x447378
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0xb8], 0
je 0x44738e
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0x8c], 0
je 0x4472b7
cmp dword [ebp + 0xc], 0
je 0x4472e9
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
mov edx, dword [eax + esi + 0x3c]
fild dword [eax + esi + 0x3c]
add eax, esi
test edx, edx
jge 0x4472dd
fadd qword [0x5c4c40]
fadd qword [edi + 0x178]
fstp qword [edi + 0x178]
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0x88], 0
je 0x44733a
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0x80]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
test eax, eax
jge 0x44732e
fadd qword [0x5c4c40]
fadd qword [edi + 0x178]
fstp qword [edi + 0x178]
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
mov eax, dword [eax + 0x18]
mov ecx, str.PLogLP
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x44737d
test dx, dx
je 0x447374
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x44737d
add eax, 4
add ecx, 4
test dx, dx
jne 0x447352
xor eax, eax
jmp 0x447382
call fcn.0045e880
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x44738e
mov dword [esp + 0x14], 1
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0xb4], 0
je 0x447410
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
cmp dword [eax + 0xb8], 0
je 0x447410
cmp ebx, dword [edi + 0x90]
jge 0x447378
mov eax, dword [edi + 0x8c]
add eax, esi
add eax, 0x98
mov dword [esp + 0x20], eax
push eax
mov eax, 0x5f844c
call fcn.00407a20
cmp eax, 0xffffffff
je 0x447410
push eax
mov eax, 0x5f8480
call fcn.00408210
mov ecx, dword [esp + 0x20]
inc dword [eax + 8]
mov edx, dword [ecx]
push edx
push str.GALog:Add_Update_Count__s__r_n
push 0x5f80f8
call fcn.00403a70
add esp, 0xc
mov byte [esp + 0x68], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x447435
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc ebx
add esi, 0x138
cmp ebx, dword [edi + 0x90]
jl 0x447090
mov ecx, dword [edi + 0x20]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 1
push 1
push 0x2b18
push ecx
call esi
lea ebx, [edi + 0x130]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push ebx
mov dword [edi + 0x114], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0
push 0x400
mov ecx, edi
call fcn.00465eae
mov ecx, eax
call fcn.004660b6
push 5
push 0x400
mov ecx, edi
call fcn.00465eae
mov ecx, eax
call fcn.004660b6
push 0x5b95a8
push 0x400
mov ecx, edi
call fcn.00465eae
mov ecx, eax
call fcn.00465feb
push 0x3fe
mov ecx, edi
call fcn.00465eae
mov edx, dword [eax + 0x20]
push 0x640000
push 0
push 0x401
push edx
call esi
push 0x3fe
mov ecx, edi
call fcn.00465eae
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x402
push eax
call esi
mov eax, 1
mov esi, edi
call fcn.0044a1a0
push 5
mov ecx, edi
call fcn.004660b6
mov ecx, dword [edi + 0x20]
push ecx
call dword [sym.imp.USER32.dll_UpdateWindow]
fldz
sub esp, 0x28
fstp qword [edi + 0x168]
mov edx, esp
mov dword [esp + 0x50], esp
push edx
lea edi, [esp + 0x60]
call fcn.00430600
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
push eax
push esi
call fcn.00447a20
cmp dword [esi + 0x128], 0
mov dword [esp + 0x18], eax
jne 0x4475c3
mov eax, dword [esi + 0xa0]
cmp dword [eax - 0xc], 0
lea edi, [esi + 0xa0]
je 0x4475c3
push 0
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x30], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
add esp, 4
mov dword [ebx], eax
mov esi, dword [esi + 0x20]
push esi
push 0x5f8100
call fcn.0041c420
push 0x5b95a8
mov ecx, edi
call fcn.004019e0
call fcn.00467a9c
mov eax, dword [eax + 4]
add eax, 0x13c
push eax
call fcn.0041edc0
lea esi, [esp + 0x34]
call fcn.0042d520
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0
push 0x400
mov ecx, esi
call fcn.00465eae
mov ecx, eax
call fcn.004660b6
push 5
push 0x400
mov ecx, esi
call fcn.00465eae
mov ecx, eax
call fcn.004660b6
push 0x5b95a8
push 0x400
mov ecx, esi
call fcn.00465eae
mov ecx, eax
call fcn.00465feb
cmp dword [ebp + 0xc], 0
jne 0x447643
cmp dword [esp + 0x18], 0
jne 0x447643
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [esi + 0x114]
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebx
mov dword [esp + 0x24], ecx
call edi
cmp dword [esp + 0x20], 0
jne 0x447649
push 1
lea edx, [esi + 0x88]
push edx
call fcn.00432dd0
jmp 0x447649
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esi + 0x20]
push 0
push 0
push 0x2b22
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [esi + 0x114]
push ebx
mov dword [esp + 0x24], ecx
call edi
cmp dword [ebp + 0xc], 0
je 0x4476ad
cmp dword [esp + 0x20], 0
je 0x447693
push 0
push ecx
mov edx, esp
mov dword [esp + 0x30], esp
push 0x1f
mov dword [esp + 0x28], 0
push edx
jmp 0x4476d6
cmp dword [esp + 0x18], 0
je 0x4476a3
push 0
push ecx
mov dword [esp + 0x30], esp
jmp 0x4476d1
mov dword [esp + 0x1c], 1
jmp 0x447722
cmp dword [esp + 0x20], 0
push 0
push ecx
mov dword [esp + 0x30], esp
je 0x4476ca
mov edx, esp
push 0x27
mov dword [esp + 0x28], 0
push edx
jmp 0x4476d6
cmp dword [esp + 0x20], 0
je 0x4476f0
mov eax, esp
push 0x2a
push eax
mov ecx, 0x5f8100
call fcn.0041bf20
mov eax, dword [esi + 0x20]
push eax
push 0x5f8100
call fcn.0041c420
jmp 0x447722
mov ecx, esp
push 0x22
push ecx
mov edi, 1
mov ecx, 0x5f8100
mov dword [esp + 0x2c], edi
call fcn.0041bf20
mov eax, dword [esi + 0x20]
push eax
push 0x5f8100
call fcn.0041c420
cmp dword [esp + 0x14], edi
jne 0x447722
mov dword [esi + 0xca8], edi
xor eax, eax
call fcn.0044a1a0
cmp dword [ebp + 0xc], 0
jne 0x4479dc
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [esi + 0x114]
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jne 0x4479dc
cmp dword [esi + 0x90], edi
mov dword [esp + 0x18], edi
jle 0x4479dc
push 0x5b95a8
lea ecx, [esp + 0x18]
mov dword [esp + 0x24], 0
call fcn.00401a30
mov byte [esp + 0x68], 2
test edi, edi
jl 0x447378
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esi + 0x90]
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
cmp dword [eax + 0x28], 0
je 0x44788e
mov dword [esi + 0x214], 1
cmp ecx, dword [esi + 0x90]
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
mov eax, dword [eax + 0x2c]
push ecx
sub eax, 0x10
mov dword [esp + 0x30], esp
mov ebx, esp
push eax
call fcn.00401ff0
lea edx, [esp + 0x2c]
add esp, 4
add eax, 0x10
push edx
mov dword [ebx], eax
call fcn.004104e0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x6c], 3
call fcn.00401f40
mov byte [esp + 0x68], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44781e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
cmp dword [ecx - 0xc], 0
je 0x44788e
mov eax, dword [esp + 0x18]
cmp eax, dword [esi + 0x90]
lea edx, [esp + 0x20]
push edx
push 0
push 0
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
mov eax, dword [eax + 0x34]
push ecx
sub eax, 0x10
mov dword [esp + 0x3c], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
mov dword [ebx], eax
mov byte [esp + 0x7c], 4
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov dword [esp + 0x44], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
mov dword [ebx], eax
add esp, 4
mov byte [esp + 0x7c], 2
call fcn.00412850
add esp, 0x14
mov ecx, dword [esp + 0x18]
cmp ecx, dword [esi + 0x90]
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
cmp dword [eax + 0x6c], 0
je 0x44799c
mov edx, ecx
mov dword [esi + 0x214], 1
cmp edx, dword [esi + 0x90]
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
mov eax, dword [eax + 0x70]
push ecx
sub eax, 0x10
mov dword [esp + 0x34], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
mov dword [ebx], eax
lea eax, [esp + 0x30]
add esp, 4
push eax
call fcn.004104e0
add esp, 8
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x6c], 5
call fcn.00401f40
mov byte [esp + 0x68], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44792c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
cmp dword [ecx - 0xc], 0
je 0x44799c
mov eax, dword [esp + 0x18]
cmp eax, dword [esi + 0x90]
lea edx, [esp + 0x20]
push edx
push 0
push 0
jge 0x447378
mov eax, dword [esi + 0x8c]
add eax, edi
mov eax, dword [eax + 0x78]
push ecx
sub eax, 0x10
mov dword [esp + 0x40], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
mov dword [ebx], eax
mov byte [esp + 0x7c], 6
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov dword [esp + 0x40], esp
mov ebx, esp
push eax
call fcn.00401ff0
add eax, 0x10
mov dword [ebx], eax
add esp, 4
mov byte [esp + 0x7c], 2
call fcn.00412850
add esp, 0x14
mov byte [esp + 0x68], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4479c1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
inc eax
add edi, 0x138
cmp eax, dword [esi + 0x90]
mov dword [esp + 0x18], eax
jl 0x44775f
mov ecx, dword [esi + 0x20]
push 0
push esi
push 0x2b13
push ecx
mov dword [esi + 0xcac], 0
call dword [sym.imp.USER32.dll_SendMessageW]
lea esi, [esp + 0x34]
call fcn.0042d520
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8