Function at 0x442450
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x47bf22
mov eax, dword fs:[0]
push eax
sub esp, 0x62c
mov eax, dword [0x4a6eb0]
xor eax, esp
mov dword [esp + 0x628], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4a6eb0]
xor eax, esp
push eax
lea eax, [esp + 0x640]
mov dword fs:[0], eax
mov eax, dword [esp + 0x654]
mov ebp, dword [esp + 0x658]
mov dword [esp + 0x20], eax
mov edx, dword [0x4a743c]
mov eax, dword [edx + 0xc]
xor esi, esi
mov ecx, 0x4a743c
mov dword [esp + 0x648], esi
call eax
add eax, 0x10
mov dword [esp + 0x58], eax
mov edx, dword [0x4a743c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a743c
mov byte [esp + 0x648], 1
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x24], esi
push 0x106
lea edx, [esp + 0x8a]
xor ecx, ecx
push esi
push edx
mov byte [esp + 0x654], 3
mov dword [esp + 0x58], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x4c], esi
mov word [esp + 0x90], cx
call sub.MSVCR90.dll_memset
mov eax, dword [0x4a743c]
mov edx, dword [eax + 0xc]
add esp, 0xc
mov ecx, 0x4a743c
call edx
add eax, 0x10
mov dword [esp + 0x50], eax
lea eax, [esp + 0x4c]
push eax
push 0x4967e0
push 1
push esi
push 0x496800
mov byte [esp + 0x65c], 4
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, esi
jl 0x442de0
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
lea edx, [esp + 0x48]
push edx
push eax
mov eax, dword [ecx + 0x10]
call eax
test eax, eax
jl 0x442de0
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
lea edx, [esp + 0x40]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jl 0x442de0
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
lea edx, [esp + 0x84]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
test eax, eax
jl 0x442de0
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
lea edx, [esp + 0x64]
push edx
push eax
mov eax, dword [ecx + 0x10]
call eax
mov ebx, dword [sym.imp.ole32.dll_StringFromGUID2]
push 0x28
lea ecx, [esp + 0x190]
push ecx
lea edx, [esp + 0x6c]
push edx
call ebx
lea eax, [esp + 0x18c]
push eax
lea ecx, [esp + 0x54]
push 0x481e70
push ecx
call fcn.00402e80
mov esi, dword [esp + 0x65c]
add esp, 0xc
test esi, esi
jne 0x4425fb
push 0x80004003
call fcn.00467970
push 0x48a0b4
lea ecx, [esp + 0x20]
call fcn.00406830
mov edi, eax
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov byte [esp + 0x650], 5
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x44262b
call fcn.00401450
mov edi, dword [edi]
test edi, edi
je 0x442635
mov ecx, dword [edi]
jmp 0x442637
xor ecx, ecx
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x6c]
push ecx
push esi
call eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x648], 4
call fcn.00408920
mov esi, dword [esp + 0x20]
push esi
push str.OrigName
push str.Ident
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042c4e0
add esp, 0x10
test eax, eax
jne 0x44267e
push str.Samsung_WM
mov ecx, esi
call fcn.00403480
lea ecx, [esp + 0x30]
push ecx
push 0x4826dc
push str.SoftwareSamsungHomeDownloader
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042c4e0
mov edx, dword [esp + 0x40]
add esp, 0x10
cmp dword [edx - 0xc], 0
je 0x4426bf
lea eax, [esp + 0x30]
push eax
call fcn.00430680
add esp, 4
lea ecx, [esp + 0x30]
push ecx
mov ecx, ebp
call fcn.00404460
jmp 0x4426e6
push 0x28
lea edx, [esp + 0x1e0]
push edx
lea eax, [esp + 0x6c]
push eax
call ebx
lea ecx, [esp + 0x1dc]
push ecx
push 0x481e70
push ebp
call fcn.00402e80
add esp, 0xc
mov edi, dword [esp + 0x650]
xor ebp, ebp
cmp edi, ebp
jne 0x4426fd
push 0x80004003
call fcn.00467970
push 0x4895a8
lea ecx, [esp + 0x1c]
call fcn.00406830
mov esi, eax
push 0x48a0ac
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 6
call fcn.00406830
mov ecx, dword [esi]
mov byte [esp + 0x648], 7
cmp ecx, ebp
je 0x442735
mov ecx, dword [ecx]
jmp 0x442737
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x442741
mov eax, dword [eax]
jmp 0x442743
xor eax, eax
mov edx, dword [edi]
push ecx
push eax
mov eax, dword [edx + 0x6c]
push edi
call eax
lea ecx, [esp + 0x1c]
call fcn.00408920
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00408920
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x44277c
push 0x80004003
call fcn.00467970
push str.DEFAULTVALUE
lea ecx, [esp + 0x1c]
call fcn.00406830
mov edi, eax
push str.HARDWAREID0
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 8
call fcn.00406830
mov ecx, dword [edi]
mov byte [esp + 0x648], 9
cmp ecx, ebp
je 0x4427b4
mov ecx, dword [ecx]
jmp 0x4427b6
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x4427c0
mov eax, dword [eax]
jmp 0x4427c2
xor eax, eax
mov edx, dword [esi]
push ecx
push eax
mov eax, dword [edx + 0x6c]
push esi
call eax
lea ecx, [esp + 0x1c]
call fcn.00408920
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00408920
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x4427fb
push 0x80004003
call fcn.00467970
push 0x48a080
lea ecx, [esp + 0x20]
call fcn.00406830
mov edi, eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov byte [esp + 0x650], 0xa
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
cmp eax, ebp
jne 0x44282d
call fcn.00401450
mov edi, dword [edi]
cmp edi, ebp
je 0x442837
mov ecx, dword [edi]
jmp 0x442839
xor ecx, ecx
mov edx, dword [esi]
push eax
mov eax, dword [edx + 0x6c]
push ecx
push esi
call eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x648], 4
call fcn.00408920
call fcn.00457880
lea ecx, [esp + 0x44]
push ecx
call fcn.004576b0
add esp, 4
cmp eax, ebp
jl 0x442de0
xor ebx, ebx
mov edx, dword [0x4a743c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a743c
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
lea edx, [esp + 0x54]
push edx
lea edx, [esp + 0x2c]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
mov byte [esp + 0x658], 0xb
call eax
cmp eax, ebp
jne 0x442d85
cmp dword [esp + 0x54], 1
jne 0x442dcf
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push 0x4865ac
push eax
mov eax, dword [ecx]
call eax
cmp eax, ebp
jl 0x442924
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
push 0x104
lea edx, [esp + 0x230]
push edx
push eax
mov eax, dword [ecx + 0x44]
call eax
mov esi, eax
mov eax, dword [esp + 0x24]
cmp eax, ebp
je 0x442902
mov dword [esp + 0x24], ebp
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebp
jge 0x442924
xor eax, eax
mov word [esp + 0x22c], ax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [edi - 0x10]
jmp 0x442d5b
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00406310
lea eax, [esp + 0x60]
push eax
call fcn.004323c0
add esp, 8
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x64c], 0xc
call fcn.00404460
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
mov byte [esp + 0x648], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44297f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00406310
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x650], 0xd
call fcn.0041d6a0
mov ecx, eax
mov byte [esp + 0x650], 0xb
call fcn.004131b0
mov byte [esp + 0x648], 0xe
call fcn.0041d6a0
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00406310
call fcn.0041add0
movzx eax, ax
mov ecx, 0x6662
add esp, 4
cmp ax, cx
je 0x442a0c
mov edx, 0x6785
cmp ax, dx
je 0x442a0c
mov ecx, 0x6619
cmp ax, cx
je 0x442a0c
mov edx, 0x6797
cmp ax, dx
jne 0x442d20
push 0xd5c
call fcn.004765c6
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xf
cmp esi, ebp
je 0x442a40
call fcn.00457880
push eax
mov ecx, esi
call fcn.0044f300
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x442a46
xor esi, esi
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xe
cmp esi, ebp
je 0x442d20
mov eax, dword [esp + 0x28]
push eax
mov ecx, esi
call fcn.0044f900
cmp eax, ebp
jl 0x442d16
cmp dword [esi + 0xae4], ebp
je 0x442d16
lea ecx, [esp + 0x14]
call fcn.004023f0
mov dword [esp + 0x20], ebp
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x20]
push edx
push eax
mov eax, dword [ecx + 0x2c]
mov byte [esp + 0x650], 0x12
call eax
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
lea edx, [esp + 0x54]
push edx
lea edx, [esp + 0x40]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
push 0x104
lea edx, [esp + 0x438]
push edx
push eax
mov eax, dword [ecx + 0x18]
call eax
xor ecx, ecx
cmp eax, ebp
setge cl
test ecx, ecx
jl 0x442d8d
push ebx
lea edx, [esp + 0x18]
push str.HARDWAREID_d
push edx
call fcn.00402e80
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x4425f1
lea eax, [esp + 0x22c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, dword [edi]
push eax
lea ecx, [esp + 0x18]
add esi, 0x6c
call fcn.004071c0
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push str.StorageName_d
push edx
call fcn.00402e80
mov edi, dword [esp + 0x65c]
add esp, 0xc
inc ebx
cmp edi, ebp
je 0x4425f1
lea eax, [esp + 0x434]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, dword [edi]
push eax
lea ecx, [esp + 0x18]
add esi, 0x6c
call fcn.004071c0
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push 0x482650
push edx
call fcn.00402e80
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x4425f1
push 0x48a0ac
lea ecx, [esp + 0x64]
call fcn.00406830
mov eax, dword [eax]
mov byte [esp + 0x648], 0x13
cmp eax, ebp
je 0x442bad
mov ebp, dword [eax]
jmp 0x442baf
xor ebp, ebp
mov esi, dword [edi]
lea ecx, [esp + 0x14]
add esi, 0x6c
call fcn.004071c0
push eax
mov eax, dword [esi]
push ebp
push edi
call eax
lea ecx, [esp + 0x60]
call fcn.00408920
lea ecx, [esp + 0x34]
call fcn.004023f0
lea ecx, [esp + 0x434]
push ecx
lea ecx, [esp + 0x38]
mov byte [esp + 0x64c], 0x14
call fcn.00403480
lea ecx, [esp + 0x34]
call fcn.00408420
push eax
lea ecx, [esp + 0x38]
call fcn.00404460
lea edx, [ebx - 1]
push edx
lea eax, [esp + 0x18]
push str.IsInternalMemory_d
push eax
call fcn.00402e80
add esp, 0xc
lea ecx, [esp + 0x38]
call fcn.004023f0
lea ecx, [esp + 0x38]
push ecx
push str.Folder
push str.SystemStorageManagerProfilesSDMemory
push reloc.OLEAUT32.dll_SysReAllocString
mov byte [esp + 0x658], 0x15
call fcn.0042c4e0
add esp, 0x10
lea ecx, [esp + 0x38]
call fcn.00408420
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00406b30
mov edi, dword [esp + 0x658]
add esp, 8
test al, al
je 0x442c95
test edi, edi
je 0x4425f1
push str.false
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, dword [edi]
push eax
lea ecx, [esp + 0x18]
add esi, 0x6c
call fcn.004071c0
mov ecx, dword [esi]
push eax
push edi
call ecx
jmp 0x442cbd
test edi, edi
je 0x4425f1
push str.true
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, dword [edi]
push eax
lea ecx, [esp + 0x18]
add esi, 0x6c
call fcn.004071c0
mov edx, dword [esi]
push eax
push edi
call edx
lea ecx, [esp + 0x38]
call fcn.00450df0
lea ecx, [esp + 0x34]
call fcn.00450df0
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
test eax, eax
je 0x442ce7
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x20]
mov byte [esp + 0x648], 0x10
test eax, eax
je 0x442cff
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
mov byte [esp + 0x648], 0xe
call fcn.00450df0
mov esi, dword [esp + 0x18]
xor ebp, ebp
mov eax, dword [esi]
mov edx, dword [eax]
push 1
mov ecx, esi
call edx
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x648], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x442d54
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x648], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x442870
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x442870
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x442dcf
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
cmp eax, ebp
je 0x442da5
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x20]
mov byte [esp + 0x648], 0x10
cmp eax, ebp
je 0x442dbd
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
call fcn.00450df0
lea ecx, [esp + 0x1c]
call fcn.00450df0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x648], 4
call fcn.00450df0
mov eax, dword [esp + 0x44]
test eax, eax
je 0x442df8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x442e08
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x442e18
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x442e28
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x50]
add eax, 0xfffffff0
mov byte [esp + 0x648], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x442e50
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x648], 2
test eax, eax
je 0x442e68
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x648], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x442e90
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
mov byte [esp + 0x648], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x442eb8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x650]
mov dword [esp + 0x648], 0xffffffff
test eax, eax
je 0x442ed6
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
xor eax, eax
mov ecx, dword [esp + 0x640]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x628]
xor ecx, esp
call fcn.004764f6
add esp, 0x638
ret