Function at 0x43f590
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x478982
mov eax, dword fs:[0]
push eax
sub esp, 0x62c
mov eax, dword [0x49eef8]
xor eax, esp
mov dword [esp + 0x628], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x49eef8]
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 [0x49f474]
mov eax, dword [edx + 0xc]
xor esi, esi
mov ecx, 0x49f474
mov dword [esp + 0x648], esi
call eax
add eax, 0x10
mov dword [esp + 0x58], eax
mov edx, dword [0x49f474]
mov eax, dword [edx + 0xc]
mov ecx, 0x49f474
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 [0x49f474]
mov edx, dword [eax + 0xc]
add esp, 0xc
mov ecx, 0x49f474
call edx
add eax, 0x10
mov dword [esp + 0x50], eax
lea eax, [esp + 0x4c]
push eax
push 0x48e534
push 1
push esi
push 0x48e554
mov byte [esp + 0x65c], 4
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, esi
jl 0x43ff20
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 0x43ff20
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 0x43ff20
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 0x43ff20
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 0x47ddf8
push ecx
call fcn.00402e10
mov esi, dword [esp + 0x65c]
add esp, 0xc
test esi, esi
jne 0x43f73b
push 0x80004003
call fcn.004634f0
push 0x48577c
lea ecx, [esp + 0x20]
call fcn.00406670
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 0x43f76b
call fcn.00401580
mov edi, dword [edi]
test edi, edi
je 0x43f775
mov ecx, dword [edi]
jmp 0x43f777
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.00407820
mov esi, dword [esp + 0x20]
push esi
push str.OrigName
push str.Ident
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004273e0
add esp, 0x10
test eax, eax
jne 0x43f7be
push str.Samsung_WM
mov ecx, esi
call fcn.00403410
lea ecx, [esp + 0x30]
push ecx
push 0x47e440
push str.SoftwareSamsungHomeDownloader
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.004273e0
mov edx, dword [esp + 0x40]
add esp, 0x10
cmp dword [edx - 0xc], 0
je 0x43f7ff
lea eax, [esp + 0x30]
push eax
call fcn.0042bec0
add esp, 4
lea ecx, [esp + 0x30]
push ecx
mov ecx, ebp
call fcn.004043f0
jmp 0x43f826
push 0x28
lea edx, [esp + 0x1e0]
push edx
lea eax, [esp + 0x6c]
push eax
call ebx
lea ecx, [esp + 0x1dc]
push ecx
push 0x47ddf8
push ebp
call fcn.00402e10
add esp, 0xc
mov edi, dword [esp + 0x650]
xor ebp, ebp
cmp edi, ebp
jne 0x43f83d
push 0x80004003
call fcn.004634f0
push 0x484de0
lea ecx, [esp + 0x1c]
call fcn.00406670
mov esi, eax
push str.Count
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 6
call fcn.00406670
mov ecx, dword [esi]
mov byte [esp + 0x648], 7
cmp ecx, ebp
je 0x43f875
mov ecx, dword [ecx]
jmp 0x43f877
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x43f881
mov eax, dword [eax]
jmp 0x43f883
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.00407820
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00407820
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x43f8bc
push 0x80004003
call fcn.004634f0
push str.DEFAULTVALUE
lea ecx, [esp + 0x1c]
call fcn.00406670
mov edi, eax
push str.HARDWAREID0
lea ecx, [esp + 0x20]
mov byte [esp + 0x64c], 8
call fcn.00406670
mov ecx, dword [edi]
mov byte [esp + 0x648], 9
cmp ecx, ebp
je 0x43f8f4
mov ecx, dword [ecx]
jmp 0x43f8f6
xor ecx, ecx
mov eax, dword [eax]
cmp eax, ebp
je 0x43f900
mov eax, dword [eax]
jmp 0x43f902
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.00407820
lea ecx, [esp + 0x18]
mov byte [esp + 0x648], 4
call fcn.00407820
mov esi, dword [esp + 0x650]
cmp esi, ebp
jne 0x43f93b
push 0x80004003
call fcn.004634f0
push 0x485748
lea ecx, [esp + 0x20]
call fcn.00406670
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 0x43f96d
call fcn.00401580
mov edi, dword [edi]
cmp edi, ebp
je 0x43f977
mov ecx, dword [edi]
jmp 0x43f979
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.00407820
call fcn.00455680
lea ecx, [esp + 0x44]
push ecx
call fcn.004554b0
add esp, 4
cmp eax, ebp
jl 0x43ff20
xor ebx, ebx
mov edx, dword [0x49f474]
mov eax, dword [edx + 0xc]
mov ecx, 0x49f474
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 0x43fec5
cmp dword [esp + 0x54], 1
jne 0x43ff0f
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push 0x4818ec
push eax
mov eax, dword [ecx]
call eax
cmp eax, ebp
jl 0x43fa64
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 0x43fa42
mov dword [esp + 0x24], ebp
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp esi, ebp
jge 0x43fa64
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 0x43fe9b
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.004062a0
lea eax, [esp + 0x60]
push eax
call fcn.0042e550
add esp, 8
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x64c], 0xc
call fcn.004043f0
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 0x43fabf
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.004062a0
lea eax, [esp + 0x20]
push eax
mov byte [esp + 0x650], 0xd
call fcn.00419b00
mov ecx, eax
mov byte [esp + 0x650], 0xb
call fcn.00410560
mov byte [esp + 0x648], 0xe
call fcn.00419b00
push ecx
lea edx, [esp + 0x230]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.004062a0
call fcn.00450fb0
movzx eax, ax
mov ecx, 0x6662
add esp, 4
cmp ax, cx
je 0x43fb4c
mov edx, 0x6785
cmp ax, dx
je 0x43fb4c
mov ecx, 0x6619
cmp ax, cx
je 0x43fb4c
mov edx, 0x6797
cmp ax, dx
jne 0x43fe60
push 0xd5c
call fcn.00472146
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xf
cmp esi, ebp
je 0x43fb80
call fcn.00455680
push eax
mov ecx, esi
call fcn.0044eb20
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x43fb86
xor esi, esi
mov dword [esp + 0x18], esi
mov byte [esp + 0x648], 0xe
cmp esi, ebp
je 0x43fe60
mov eax, dword [esp + 0x28]
push eax
mov ecx, esi
call fcn.0044f120
cmp eax, ebp
jl 0x43fe56
cmp dword [esi + 0xae4], ebp
je 0x43fe56
lea ecx, [esp + 0x14]
call fcn.00402380
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 0x43fecd
push ebx
lea edx, [esp + 0x18]
push str.HARDWAREID_d
push edx
call fcn.00402e10
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x43f731
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.00406e50
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push str.StorageName_d
push edx
call fcn.00402e10
mov edi, dword [esp + 0x65c]
add esp, 0xc
inc ebx
cmp edi, ebp
je 0x43f731
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.00406e50
mov ecx, dword [esi]
push eax
push edi
call ecx
push ebx
lea edx, [esp + 0x18]
push 0x482c88
push edx
call fcn.00402e10
mov edi, dword [esp + 0x65c]
add esp, 0xc
cmp edi, ebp
je 0x43f731
push str.Count
lea ecx, [esp + 0x64]
call fcn.00406670
mov eax, dword [eax]
mov byte [esp + 0x648], 0x13
cmp eax, ebp
je 0x43fced
mov ebp, dword [eax]
jmp 0x43fcef
xor ebp, ebp
mov esi, dword [edi]
lea ecx, [esp + 0x14]
add esi, 0x6c
call fcn.00406e50
push eax
mov eax, dword [esi]
push ebp
push edi
call eax
lea ecx, [esp + 0x60]
call fcn.00407820
lea ecx, [esp + 0x34]
call fcn.00402380
lea ecx, [esp + 0x434]
push ecx
lea ecx, [esp + 0x38]
mov byte [esp + 0x64c], 0x14
call fcn.00403410
lea ecx, [esp + 0x34]
call fcn.00407c60
push eax
lea ecx, [esp + 0x38]
call fcn.004043f0
lea edx, [ebx - 1]
push edx
lea eax, [esp + 0x18]
push str.IsInternalMemory_d
push eax
call fcn.00402e10
add esp, 0xc
lea ecx, [esp + 0x38]
call fcn.00402380
lea ecx, [esp + 0x38]
push ecx
push str.Folder
push str.SystemStorageManagerProfilesSDMemory
push reloc.OLEAUT32.dll_SysReAllocString
mov byte [esp + 0x658], 0x15
call fcn.004273e0
add esp, 0x10
lea ecx, [esp + 0x38]
call fcn.00407c60
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00406930
mov edi, dword [esp + 0x658]
add esp, 8
test al, al
je 0x43fdd5
test edi, edi
je 0x43f731
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.00406e50
mov ecx, dword [esi]
push eax
push edi
call ecx
jmp 0x43fdfd
test edi, edi
je 0x43f731
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.00406e50
mov edx, dword [esi]
push eax
push edi
call edx
lea ecx, [esp + 0x38]
call fcn.00401e00
lea ecx, [esp + 0x34]
call fcn.00401e00
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
test eax, eax
je 0x43fe27
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 0x43fe3f
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
mov byte [esp + 0x648], 0xe
call fcn.00401e00
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 0x43fe94
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 0x43f9b0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x43f9b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x43ff0f
mov eax, dword [esp + 0x3c]
mov byte [esp + 0x648], 0x11
cmp eax, ebp
je 0x43fee5
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 0x43fefd
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x14]
call fcn.00401e00
lea ecx, [esp + 0x1c]
call fcn.00401e00
lea ecx, [esp + 0x2c]
mov byte [esp + 0x648], 4
call fcn.00401e00
mov eax, dword [esp + 0x44]
test eax, eax
je 0x43ff38
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 0x43ff48
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x43ff58
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x40]
test eax, eax
je 0x43ff68
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 0x43ff90
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 0x43ffa8
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 0x43ffd0
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 0x43fff8
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 0x440016
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.00472076
add esp, 0x638
ret