Function at 0x415645
Capabilities:
Create directory
Get session user name

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x464141
mov eax, dword fs:[0]
push eax
sub esp, 0x230
mov eax, dword [0x4a1d50]
xor eax, esp
mov dword [esp + 0x228], eax
push ebx
push esi
push edi
mov eax, dword [0x4a1d50]
xor eax, esp
push eax
lea eax, [esp + 0x240]
mov dword fs:[0], eax
mov ebx, ecx
push str.Downloading_Manifest:
lea ecx, [esp + 0x18]
mov dword [esp + 0x28], ebx
call fcn.0040130b
and dword [esp + 0x248], 0
push 0
lea eax, [esp + 0x18]
push eax
push 2
pop esi
push esi
call fcn.0040fcf3
or dword [esp + 0x254], 0xffffffff
mov ecx, dword [esp + 0x20]
add esp, 0xc
add ecx, 0xfffffff0
call fcn.004017c4
push str.___URL:
lea ecx, [esp + 0x18]
call fcn.0040130b
push 0
lea edi, [ebx + 0x10]
push edi
lea eax, [esp + 0x1c]
push eax
push esi
mov dword [esp + 0x258], 1
call fcn.0040f821
or dword [esp + 0x258], 0xffffffff
mov ecx, dword [esp + 0x24]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017c4
push str.___file:
lea ecx, [esp + 0x18]
call fcn.0040130b
mov dword [esp + 0x248], esi
push 0
lea esi, [ebx + 4]
push esi
lea eax, [esp + 0x1c]
push eax
push 2
mov dword [esp + 0x30], esi
call fcn.0040f821
or dword [esp + 0x258], 0xffffffff
mov ecx, dword [esp + 0x24]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017c4
push esi
push str.UpdateManifestPath
call fcn.00415461
test eax, eax
jne 0x415760
inc eax
jmp 0x4159dc
call fcn.00414ff8
test eax, eax
jne 0x415804
push 0x200
push eax
mov word [esp + 0x34], ax
lea eax, [esp + 0x36]
push eax
call fcn.00448000
add esp, 0xc
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x24], 0x101
call dword [sym.imp.ADVAPI32.dll_GetUserNameW]
test eax, eax
je 0x415804
lea eax, [esp + 0x2c]
lea ecx, [ebx + 8]
push eax
mov dword [esp + 0x18], ecx
call fcn.00406262
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov dword [esp + 0x28], eax
cmp eax, 0xa1
je 0x415924
cmp eax, 3
je 0x415924
mov ecx, dword [esp + 0x14]
push 0x5c
call fcn.00418f1b
push dword [esp + 0x14]
mov ecx, esi
call fcn.004063a1
mov ebx, dword [ebx + 0x14]
push dword [ebx - 0xc]
mov ecx, esi
push ebx
call fcn.00401175
call fcn.00414ff8
push dword [edi]
call dword [sym.imp.WININET.dll_DeleteUrlCacheEntryW]
mov eax, dword [0x4a66b4]
and dword [esp + 0x14], 0
mov edi, dword [edi]
neg eax
sbb eax, eax
and eax, 0xfff8ad00
add eax, 0x927c0
push eax
lea eax, [esp + 0x1c]
push eax
push edi
push esi
mov dword [esp + 0x28], 1
call fcn.00413d22
mov edi, eax
add esp, 0x10
lea eax, [esp + 0x13]
push eax
push dword [esp + 0x1c]
mov eax, str.BITS_Result
mov ebx, 0x4a6608
mov byte [esp + 0x1b], 0
call fcn.0040646b
cmp edi, 6
jne 0x4158a1
push str.BITs_download_success:
lea ecx, [esp + 0x1c]
call fcn.0040130b
push 0
push esi
lea eax, [esp + 0x20]
push eax
push 2
mov dword [esp + 0x258], 4
call fcn.0040f821
or dword [esp + 0x258], 0xffffffff
mov ecx, dword [esp + 0x28]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017c4
mov esi, dword [esi]
mov ebx, str.2_16_17_18_19_52_53_54_63_68_81_82_83_84_85_86_87_88_89_90_91_92_93_97
or edi, 0xffffffff
call fcn.0041e379
xor ebx, ebx
mov edi, str.Get_Product_Manifest_Result
cmp eax, ebx
jne 0x415980
push str.valid_after_BITs_download:
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], 1
call fcn.0040130b
push ebx
push dword [esp + 0x24]
lea eax, [esp + 0x20]
push eax
push 2
mov dword [esp + 0x258], 5
call fcn.0040f821
or dword [esp + 0x258], 0xffffffff
mov ecx, dword [esp + 0x28]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.004017c4
lea eax, [esp + 0x13]
push eax
push ebx
push str.OK_BITS
push edi
mov esi, 0x4a6608
mov byte [esp + 0x23], bl
call fcn.00406400
jmp 0x41599b
lea ecx, [esp + 0x13]
push ecx
push eax
mov eax, str.Get_Product_Manifest_Result
mov ebx, 0x4a6608
mov byte [esp + 0x1b], 0
call fcn.0040646b
push str.SHCreateDirectoryEx___failed:
lea ecx, [esp + 0x1c]
call fcn.0040130b
push dword [esp + 0x28]
mov dword [esp + 0x24c], 3
push dword [esp + 0x18]
lea eax, [esp + 0x20]
push eax
push 1
call fcn.0040f821
mov ecx, dword [esp + 0x28]
add esp, 0x10
add ecx, 0xfffffff0
mov esi, eax
call fcn.004017c4
mov eax, esi
jmp 0x4159dc
lea ecx, [esp + 0x13]
push ecx
mov byte [esp + 0x17], bl
push eax
mov eax, str.Signature_Validation_Error
mov ebx, 0x4a6608
call fcn.0040646b
xor ebx, ebx
cmp dword [0x4a66c8], ebx
je 0x4159a7
xor eax, eax
jmp 0x4159dc
cmp dword [esp + 0x14], ebx
jne 0x4159d8
mov ecx, dword [esp + 0x24]
call fcn.00415a00
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x4159d8
lea eax, [esp + 0x13]
push eax
push ebx
push str.OK_BB
push edi
mov esi, 0x4a6608
mov byte [esp + 0x23], bl
call fcn.00406400
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x240]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x228]
xor ecx, esp
call fcn.004472d5
mov esp, ebp
pop ebp
ret