Function at 0x4402e0
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x4792b2
mov eax, dword fs:[0]
push eax
sub esp, 0x62c
mov eax, dword [0x4a3eb0]
xor eax, esp
mov dword [esp + 0x628], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4a3eb0]
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 [0x4a440c]
mov eax, dword [edx + 0xc]
xor esi, esi
mov ecx, 0x4a440c
mov dword [esp + 0x648], esi
call eax
add eax, 0x10
mov dword [esp + 0x58], eax
mov edx, dword [0x4a440c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a440c
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 [0x4a440c]
mov edx, dword [eax + 0xc]
add esp, 0xc
mov ecx, 0x4a440c
call edx
add eax, 0x10
mov dword [esp + 0x50], eax
lea eax, [esp + 0x4c]
push eax
push 0x492fb0
push 1
push esi
push 0x492fd0
mov byte [esp + 0x65c], 4
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, esi
jl 0x440c70
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 0x440c70
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 0x440c70
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 0x440c70
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 0x47edf8
push ecx
call fcn.00402e30
mov esi, dword [esp + 0x65c]
add esp, 0xc
test esi, esi
jne 0x44048b
push 0x80004003
call fcn.004650f0
push 0x4869d4
lea ecx, [esp + 0x20]
call fcn.004066b0
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 0x4404bb
call fcn.00401440
mov edi, dword [edi]
test edi, edi
je 0x4404c5
mov ecx, dword [edi]
jmp 0x4404c7
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.004084a0
mov esi, dword [esp + 0x20]
push esi
push str.OrigName
push str.Ident
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042a4d0
add esp, 0x10
test eax, eax
jne 0x44050e
push str.Samsung_WM
mov ecx, esi
call fcn.00403430
lea ecx, [esp + 0x30]
push ecx
push 0x47f4ec
push str.SoftwareSamsungHomeDownloader
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0042a4d0
mov edx, dword [esp + 0x40]
add esp, 0x10
cmp dword [edx - 0xc], 0
je 0x44054f
lea eax, [esp + 0x30]
push eax
call fcn.0042e670
add esp, 4
lea ecx, [esp + 0x30]
push ecx
mov ecx, ebp
call fcn.00404410
jmp 0x440576
push 0x28
lea edx, [esp + 0x1e0]
push edx
lea eax, [esp + 0x6c]
push eax
call ebx
lea ecx, [esp + 0x1dc]
push ecx
push 0x47edf8
push ebp
call fcn.00402e30
add esp, 0xc
mov edi, dword [esp + 0x650]
xor ebp, ebp
cmp edi, ebp
jne 0x44058d
push 0x80004003
call fcn.004650f0
push 0x485f40
lea ecx, [esp + 0x1c]
call fcn.004066b0
mov esi, eax
push 0x4869cc
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 6
call fcn.004066b0
mov ecx, dword [esi]
mov byte [esp + 0x648], 7
cmp ecx, ebp
je 0x4405c5
mov ecx, dword [ecx]
jmp 0x4405c7
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x4405d1
mov eax, dword [eax]
jmp 0x4405d3
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.004084a0
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.004084a0
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x44060c
push 0x80004003
call fcn.004650f0
push str.DEFAULTVALUE
lea ecx, [esp + 0x1c]
call fcn.004066b0
mov edi, eax
push str.HARDWAREID0
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 8
call fcn.004066b0
mov ecx, dword [edi]
mov byte [esp + 0x648], 9
cmp ecx, ebp
je 0x440644
mov ecx, dword [ecx]
jmp 0x440646
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x440650
mov eax, dword [eax]
jmp 0x440652
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.004084a0
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.004084a0
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x44068b
push 0x80004003
call fcn.004650f0
push 0x4869a0
lea ecx, [esp + 0x20]
call fcn.004066b0
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 0x4406bd
call fcn.00401440
mov edi, dword [edi]
cmp edi, ebp
je 0x4406c7
mov ecx, dword [edi]
jmp 0x4406c9
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.004084a0
call fcn.004552e0
lea ecx, [esp + 0x44]
push ecx
call fcn.00455110
add esp, 4
cmp eax, ebp
jl 0x440c70
xor ebx, ebx
mov edx, dword [0x4a440c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4a440c
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 0x440c15
cmp dword [esp + 0x54], 1
jne 0x440c5f
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push 0x483024
push eax
mov eax, dword [ecx]
call eax
cmp eax, ebp
jl 0x4407b4
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 0x440792
mov dword [esp + 0x24], ebp
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebp
jge 0x4407b4
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 0x440beb
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.004062c0
lea eax, [esp + 0x60]
push eax
call fcn.00430460
add esp, 8
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x64c], 0xc
call fcn.00404410
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 0x44080f
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.004062c0
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x650], 0xd
call fcn.0041b650
mov ecx, eax
mov byte [esp + 0x650], 0xb
call fcn.00411a70
mov byte [esp + 0x648], 0xe
call fcn.0041b650
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.004062c0
call fcn.0044ee20
movzx eax, ax
mov ecx, 0x6662
add esp, 4
cmp ax, cx
je 0x44089c
mov edx, 0x6785
cmp ax, dx
je 0x44089c
mov ecx, 0x6619
cmp ax, cx
je 0x44089c
mov edx, 0x6797
cmp ax, dx
jne 0x440bb0
push 0xd5c
call fcn.00473d5a
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xf
cmp esi, ebp
je 0x4408d0
call fcn.004552e0
push eax
mov ecx, esi
call fcn.0044c8e0
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x4408d6
xor esi, esi
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xe
cmp esi, ebp
je 0x440bb0
mov eax, dword [esp + 0x28]
push eax
mov ecx, esi
call fcn.0044cee0
cmp eax, ebp
jl 0x440ba6
cmp dword [esi + 0xae4], ebp
je 0x440ba6
lea ecx, [esp + 0x14]
call fcn.004023a0
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 0x440c1d
push ebx
lea edx, [esp + 0x18]
push str.HARDWAREID_d
push edx
call fcn.00402e30
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x440481
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.00407000
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push str.StorageName_d
push edx
call fcn.00402e30
mov edi, dword [esp + 0x65c]
add esp, 0xc
inc ebx
cmp edi, ebp
je 0x440481
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.00407000
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push 0x47f460
push edx
call fcn.00402e30
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x440481
push 0x4869cc
lea ecx, [esp + 0x64]
call fcn.004066b0
mov eax, dword [eax]
mov byte [esp + 0x648], 0x13
cmp eax, ebp
je 0x440a3d
mov ebp, dword [eax]
jmp 0x440a3f
xor ebp, ebp
mov esi, dword [edi]
lea ecx, [esp + 0x14]
add esi, 0x6c
call fcn.00407000
push eax
mov eax, dword [esi]
push ebp
push edi
call eax
lea ecx, [esp + 0x60]
call fcn.004084a0
lea ecx, [esp + 0x34]
call fcn.004023a0
lea ecx, [esp + 0x434]
push ecx
lea ecx, [esp + 0x38]
mov byte [esp + 0x64c], 0x14
call fcn.00403430
lea ecx, [esp + 0x34]
call fcn.00408030
push eax
lea ecx, [esp + 0x38]
call fcn.00404410
lea edx, [ebx - 1]
push edx
lea eax, [esp + 0x18]
push str.IsInternalMemory_d
push eax
call fcn.00402e30
add esp, 0xc
lea ecx, [esp + 0x38]
call fcn.004023a0
lea ecx, [esp + 0x38]
push ecx
push str.Folder
push str.SystemStorageManagerProfilesSDMemory
push reloc.OLEAUT32.dll_SysReAllocString
mov byte [esp + 0x658], 0x15
call fcn.0042a4d0
add esp, 0x10
lea ecx, [esp + 0x38]
call fcn.00408030
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00406970
mov edi, dword [esp + 0x658]
add esp, 8
test al, al
je 0x440b25
test edi, edi
je 0x440481
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.00407000
mov ecx, dword [esi]
push eax
push edi
call ecx
jmp 0x440b4d
test edi, edi
je 0x440481
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.00407000
mov edx, dword [esi]
push eax
push edi
call edx
lea ecx, [esp + 0x38]
call fcn.00401df0
lea ecx, [esp + 0x34]
call fcn.00401df0
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
test eax, eax
je 0x440b77
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 0x440b8f
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
mov byte [esp + 0x648], 0xe
call fcn.00401df0
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 0x440be4
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 0x440700
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x440700
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x440c5f
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
cmp eax, ebp
je 0x440c35
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 0x440c4d
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
call fcn.00401df0
lea ecx, [esp + 0x1c]
call fcn.00401df0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x648], 4
call fcn.00401df0
mov eax, dword [esp + 0x44]
test eax, eax
je 0x440c88
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 0x440c98
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x440ca8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x440cb8
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 0x440ce0
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 0x440cf8
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 0x440d20
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 0x440d48
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 0x440d66
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.00473c8a
add esp, 0x638
ret