Function at 0x441510
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x47b6f2
mov eax, dword fs:[0]
push eax
sub esp, 0x62c
mov eax, dword [0x4a5eb0]
xor eax, esp
mov dword [esp + 0x628], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4a5eb0]
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 [0x4a643c]
mov eax, dword [edx + 0xc]
xor esi, esi
mov ecx, 0x4a643c
mov dword [esp + 0x648], esi
call eax
add eax, 0x10
mov dword [esp + 0x58], eax
mov edx, dword [0x4a643c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a643c
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 [0x4a643c]
mov edx, dword [eax + 0xc]
add esp, 0xc
mov ecx, 0x4a643c
call edx
add eax, 0x10
mov dword [esp + 0x50], eax
lea eax, [esp + 0x4c]
push eax
push 0x495460
push 1
push esi
push 0x495480
mov byte [esp + 0x65c], 4
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, esi
jl 0x441ea0
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 0x441ea0
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 0x441ea0
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 0x441ea0
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 0x480e70
push ecx
call fcn.00402e80
mov esi, dword [esp + 0x65c]
add esp, 0xc
test esi, esi
jne 0x4416bb
push 0x80004003
call fcn.004671f0
push 0x488d64
lea ecx, [esp + 0x20]
call fcn.00406820
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 0x4416eb
call fcn.00401560
mov edi, dword [edi]
test edi, edi
je 0x4416f5
mov ecx, dword [edi]
jmp 0x4416f7
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.00408700
mov esi, dword [esp + 0x20]
push esi
push str.OrigName
push str.Ident
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042b5a0
add esp, 0x10
test eax, eax
jne 0x44173e
push str.Samsung_WM
mov ecx, esi
call fcn.00403480
lea ecx, [esp + 0x30]
push ecx
push 0x481564
push str.SoftwareSamsungHomeDownloader
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042b5a0
mov edx, dword [esp + 0x40]
add esp, 0x10
cmp dword [edx - 0xc], 0
je 0x44177f
lea eax, [esp + 0x30]
push eax
call fcn.0042f740
add esp, 4
lea ecx, [esp + 0x30]
push ecx
mov ecx, ebp
call fcn.00404450
jmp 0x4417a6
push 0x28
lea edx, [esp + 0x1e0]
push edx
lea eax, [esp + 0x6c]
push eax
call ebx
lea ecx, [esp + 0x1dc]
push ecx
push 0x480e70
push ebp
call fcn.00402e80
add esp, 0xc
mov edi, dword [esp + 0x650]
xor ebp, ebp
cmp edi, ebp
jne 0x4417bd
push 0x80004003
call fcn.004671f0
push 0x4882d0
lea ecx, [esp + 0x1c]
call fcn.00406820
mov esi, eax
push 0x488d5c
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 6
call fcn.00406820
mov ecx, dword [esi]
mov byte [esp + 0x648], 7
cmp ecx, ebp
je 0x4417f5
mov ecx, dword [ecx]
jmp 0x4417f7
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x441801
mov eax, dword [eax]
jmp 0x441803
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.00408700
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00408700
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x44183c
push 0x80004003
call fcn.004671f0
push str.DEFAULTVALUE
lea ecx, [esp + 0x1c]
call fcn.00406820
mov edi, eax
push str.HARDWAREID0
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 8
call fcn.00406820
mov ecx, dword [edi]
mov byte [esp + 0x648], 9
cmp ecx, ebp
je 0x441874
mov ecx, dword [ecx]
jmp 0x441876
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x441880
mov eax, dword [eax]
jmp 0x441882
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.00408700
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00408700
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x4418bb
push 0x80004003
call fcn.004671f0
push 0x488d30
lea ecx, [esp + 0x20]
call fcn.00406820
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 0x4418ed
call fcn.00401560
mov edi, dword [edi]
cmp edi, ebp
je 0x4418f7
mov ecx, dword [edi]
jmp 0x4418f9
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.00408700
call fcn.004572f0
lea ecx, [esp + 0x44]
push ecx
call fcn.00457120
add esp, 4
cmp eax, ebp
jl 0x441ea0
xor ebx, ebx
mov edx, dword [0x4a643c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a643c
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 0x441e45
cmp dword [esp + 0x54], 1
jne 0x441e8f
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push 0x48533c
push eax
mov eax, dword [ecx]
call eax
cmp eax, ebp
jl 0x4419e4
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 0x4419c2
mov dword [esp + 0x24], ebp
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebp
jge 0x4419e4
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 0x441e1b
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00406300
lea eax, [esp + 0x60]
push eax
call fcn.00431480
add esp, 8
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x64c], 0xc
call fcn.00404450
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 0x441a3f
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.00406300
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x650], 0xd
call fcn.0041cb50
mov ecx, eax
mov byte [esp + 0x650], 0xb
call fcn.00412b50
mov byte [esp + 0x648], 0xe
call fcn.0041cb50
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00406300
call fcn.00451050
movzx eax, ax
mov ecx, 0x6662
add esp, 4
cmp ax, cx
je 0x441acc
mov edx, 0x6785
cmp ax, dx
je 0x441acc
mov ecx, 0x6619
cmp ax, cx
je 0x441acc
mov edx, 0x6797
cmp ax, dx
jne 0x441de0
push 0xd5c
call fcn.00475e46
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xf
cmp esi, ebp
je 0x441b00
call fcn.004572f0
push eax
mov ecx, esi
call fcn.0044e6c0
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x441b06
xor esi, esi
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xe
cmp esi, ebp
je 0x441de0
mov eax, dword [esp + 0x28]
push eax
mov ecx, esi
call fcn.0044ecc0
cmp eax, ebp
jl 0x441dd6
cmp dword [esi + 0xae4], ebp
je 0x441dd6
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 0x441e4d
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 0x4416b1
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.00407190
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 0x4416b1
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.00407190
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push 0x4814d8
push edx
call fcn.00402e80
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x4416b1
push 0x488d5c
lea ecx, [esp + 0x64]
call fcn.00406820
mov eax, dword [eax]
mov byte [esp + 0x648], 0x13
cmp eax, ebp
je 0x441c6d
mov ebp, dword [eax]
jmp 0x441c6f
xor ebp, ebp
mov esi, dword [edi]
lea ecx, [esp + 0x14]
add esi, 0x6c
call fcn.00407190
push eax
mov eax, dword [esi]
push ebp
push edi
call eax
lea ecx, [esp + 0x60]
call fcn.00408700
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.00408200
push eax
lea ecx, [esp + 0x38]
call fcn.00404450
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.0042b5a0
add esp, 0x10
lea ecx, [esp + 0x38]
call fcn.00408200
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00406b00
mov edi, dword [esp + 0x658]
add esp, 8
test al, al
je 0x441d55
test edi, edi
je 0x4416b1
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.00407190
mov ecx, dword [esi]
push eax
push edi
call ecx
jmp 0x441d7d
test edi, edi
je 0x4416b1
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.00407190
mov edx, dword [esi]
push eax
push edi
call edx
lea ecx, [esp + 0x38]
call fcn.004023d0
lea ecx, [esp + 0x34]
call fcn.004023d0
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
test eax, eax
je 0x441da7
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 0x441dbf
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
mov byte [esp + 0x648], 0xe
call fcn.004023d0
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 0x441e14
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 0x441930
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x441930
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x441e8f
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
cmp eax, ebp
je 0x441e65
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 0x441e7d
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
call fcn.004023d0
lea ecx, [esp + 0x1c]
call fcn.004023d0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x648], 4
call fcn.004023d0
mov eax, dword [esp + 0x44]
test eax, eax
je 0x441eb8
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 0x441ec8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x441ed8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x441ee8
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 0x441f10
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 0x441f28
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 0x441f50
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 0x441f78
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 0x441f96
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.00475d76
add esp, 0x638
ret