Function at 0x401870
Capabilities:
Get geographical location
Hide graphical window
Identify system language via api
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x508
mov eax, dword [0x424008]
xor eax, esp
mov dword [esp + 0x504], eax
movups xmm0, xmmword [str.SoftwareSamsungSamsung_DeX]
mov ax, word [0x420be8]
push esi
movups xmmword [esp + 0xf4], xmm0
push edi
movups xmm0, xmmword [0x420bc0]
mov edi, dword [ebp + 8]
push 0x1ce
movups xmmword [esp + 0x10c], xmm0
mov word [esp + 0x134], ax
lea eax, [esp + 0x136]
movups xmm0, xmmword [0x420bd0]
push 0
push eax
movups xmmword [esp + 0x124], xmm0
mov dword [esp + 0x24], edi
movq xmm0, qword [0x420be0]
movq qword [esp + 0x134], xmm0
call fcn.00408300
add esp, 0xc
lea eax, [esp + 0xc]
push eax
push 0x20119
push 0
lea eax, [esp + 0x104]
push eax
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x401980
push 0x208
push eax
lea eax, [esp + 0x308]
push eax
call fcn.00408300
add esp, 0xc
mov dword [esp + 8], 0x104
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x304]
push eax
push 0
push 0
push str.InstallPath
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [esp + 0xc]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x401980
lea ecx, [esp + 0x300]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401971
sub ecx, edx
jne 0x40237d
movups xmm0, xmmword [str.Main_Window]
mov esi, dword [sym.imp.USER32.dll_LoadIconW]
push 0x67
movups xmmword [esp + 0xd4], xmm0
push edi
movq xmm0, qword [0x420ce8]
mov dword [0x4257f8], edi
movq qword [esp + 0xe8], xmm0
mov dword [esp + 0x2c], 0x30
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0x4013e0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], edi
call esi
push 0x7f00
push 0
mov dword [esp + 0x44], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push 0xffffff
mov dword [esp + 0x44], eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esp + 0x44], eax
lea eax, [esp + 0xd0]
push 0x67
push edi
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], eax
call esi
mov dword [esp + 0x50], eax
call dword [sym.imp.USER32.dll_SetProcessDPIAware]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
push 0x18
movzx esi, ax
mov dword [esp + 0x18], 0
call fcn.00406fd8
add esp, 4
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esp + 0x10], eax
cmp esi, 0x409
je 0x401a67
push 0x409
lea eax, [esp + 0x14]
push eax
call fcn.004026d0
push esi
push 0x42581c
call fcn.004026d0
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
cmp esi, eax
je 0x401af4
nop dword [eax]
push 0x420910
push dword [esi + 0x10]
call fcn.00402a70
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x401aa8
push dword [esi + 0x14]
push dword [esi + 0x10]
push 0x42581c
call fcn.00402b80
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
je 0x401ad4
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x401ad0
nop word [eax + eax]
cmp esi, dword [eax + 8]
jne 0x401ad0
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x401ac0
mov esi, eax
jmp 0x401aec
mov esi, eax
mov ecx, dword [esi]
cmp byte [ecx + 0xd], 0
jne 0x401aec
nop
mov eax, dword [ecx]
mov esi, ecx
mov ecx, eax
cmp byte [eax + 0xd], 0
je 0x401ae0
mov eax, dword [esp + 0x10]
cmp esi, eax
jne 0x401a80
mov esi, dword [eax + 4]
cmp byte [esi + 0xd], 0
jne 0x401b28
nop dword [eax]
push dword [esi + 8]
lea eax, [esp + 0x14]
push eax
mov ecx, eax
call fcn.00402cf0
mov eax, esi
mov esi, dword [esi]
push 0x18
push eax
call fcn.00407008
add esp, 8
cmp byte [esi + 0xd], 0
je 0x401b00
mov eax, dword [esp + 0x10]
push 0x18
push eax
call fcn.00407008
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
push 0x10
lea ecx, [esp + 0xb4]
movzx eax, ax
push ecx
push 0x58
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x401b67
test dword [esp + 0xbc], 0x8000000
je 0x401b67
mov eax, 0x2000
jmp 0x401b69
xor eax, eax
mov dword [0x425804], eax
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExW]
test ax, ax
je 0x4023ae
push 0
push edi
push 0
push 0
push 0x230
push 0x320
push 0x80000000
push 0x80000000
push 0xcf0000
push str.Window
lea eax, [esp + 0xf8]
push eax
push 0x200
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
mov dword [esp + 8], esi
test esi, esi
je 0x4023c9
push str.PC_DEX_BODY_APP_TITLE
call fcn.00402a70
push eax
push esi
call dword [sym.imp.USER32.dll_SetWindowTextW]
push 0xc80000
push 0xfffffffffffffff0
push esi
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edi, eax
push 0x58
push edi
call esi
push 0x5a
push edi
mov dword [0x4248b4], eax
call esi
push edi
push 0
mov dword [0x4248b0], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edi, dword [esp + 8]
mov ecx, edi
call fcn.00401090
mov eax, dword [0x4248b4]
push str.Segoe_UI
push 0x20
push 0
lea eax, [eax + eax*4]
mov esi, dword [sym.imp.GDI32.dll_CreateFontW]
shl eax, 3
push 0
push 0
push 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
push 0
push 0
push 0
push 0x258
push 0
push 0
divsd xmm0, qword [0x421c20]
push 0
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
push eax
call esi
mov dword [0x425808], eax
mov eax, dword [0x4248b4]
push str.Segoe_UI
push 0x20
push 0
lea eax, [eax + eax*8]
add eax, eax
push 0
push 0
push 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
push 0
push 0
push 0
push 0x190
push 0
push 0
divsd xmm0, qword [0x421c20]
push 0
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
push eax
call esi
mov ecx, dword [0x4248b4]
shl ecx, 4
sub ecx, dword [0x4248b4]
mov dword [0x425800], eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x421c20]
push str.Segoe_UI
push 0x20
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x258
push 0
push 0
push 0
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
push eax
call esi
mov dword [0x4257fc], eax
lea eax, [esp + 0xa0]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
push 2
lea eax, [esp + 0xa4]
push eax
call dword [sym.imp.USER32.dll_MonitorFromRect]
lea ecx, [esp + 0x78]
mov dword [esp + 0x78], 0x28
push ecx
push eax
call dword [sym.imp.USER32.dll_GetMonitorInfoW]
mov eax, dword [esp + 0x98]
sub eax, dword [esp + 0x90]
sub eax, 0x230
cdq
push 4
sub eax, edx
push 0x230
sar eax, 1
push 0x320
push eax
mov eax, dword [esp + 0xa4]
sub eax, dword [esp + 0x9c]
sub eax, 0x320
cdq
sub eax, edx
sar eax, 1
push eax
push 0
push edi
call dword [sym.imp.USER32.dll_SetWindowPos]
push 0xffff
push dword [esp + 0x1c]
call dword [sym.imp.USER32.dll_LoadBitmapW]
push 1
push dword [0x425808]
mov dword [0x42580c], eax
push 0x30
push 0x66
push edi
mov edi, dword [sym.imp.USER32.dll_GetDlgItem]
call edi
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
call esi
push 1
push dword [0x425800]
push 0x30
push 0x67
push dword [esp + 0x18]
call edi
push eax
call esi
push 1
push dword [0x425800]
push 0x30
push 0x68
push dword [esp + 0x18]
call edi
push eax
call esi
push 1
push dword [0x425800]
push 0x30
push 0x69
push dword [esp + 0x18]
call edi
push eax
call esi
push 1
push dword [0x4257fc]
push 0x30
push 0x65
push dword [esp + 0x18]
call edi
push eax
call esi
push 0x67
push dword [esp + 0xc]
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push dword [0x425800]
mov edi, eax
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push str.PC_DEX_BODY_UNLEASH_THE_POWER_OF_YOUR_GALAXY_WITH_SAMSUNG_DEX
call fcn.00402a70
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.PC_DEX_BODY_UNLEASH_THE_POWER_OF_YOUR_GALAXY_WITH_SAMSUNG_DEX
call fcn.00402a70
push eax
push edi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push esi
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
push edi
call esi
push edi
mov edi, dword [esp + 0xc]
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x1c]
push 0x68
push edi
mov dword [esp + 0x14], eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push dword [0x425800]
mov edi, eax
push edi
call esi
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push str.PC_DEX_BODY_GET_PS_TO_BRING_THE_FULL_GALAXY_EXPERIENCE_TO_YOUR_COMPUTER
call fcn.00402a70
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.PC_DEX_BODY_GET_PS_TO_BRING_THE_FULL_GALAXY_EXPERIENCE_TO_YOUR_COMPUTER
call fcn.00402a70
push eax
push edi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push esi
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
push edi
call esi
push edi
mov edi, dword [esp + 0xc]
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x1c]
cmovl ecx, dword [esp + 0x1c]
push 0x69
push edi
mov dword [esp + 0x14], ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push dword [0x425800]
mov edi, eax
push edi
call esi
mov esi, eax
lea eax, [esp + 0x1c]
push eax
push str.PC_DEX_BODY_TO_GET_STARTED_DOWNLOAD_AND_INSTALL_THE_DEX_FOR_PC_APP
call fcn.00402a70
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.PC_DEX_BODY_TO_GET_STARTED_DOWNLOAD_AND_INSTALL_THE_DEX_FOR_PC_APP
call fcn.00402a70
push eax
push edi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push esi
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
push edi
call esi
push edi
mov edi, dword [esp + 0xc]
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [esp + 0xc]
mov eax, 0x320
cmp ecx, dword [esp + 0x1c]
push 0x65
cmovl ecx, dword [esp + 0x20]
imul ecx, dword [0x4248b4]
push edi
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si ecx, xmm0
add ecx, 0x64
cmp ecx, eax
cmovg eax, ecx
mov dword [0x424b08], eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push dword [0x4257fc]
mov edi, eax
push edi
call esi
mov esi, eax
lea eax, [esp + 0x54]
push eax
push str.PC_DEX_BODY_DOWNLOAD_APP
call fcn.00402a70
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.PC_DEX_BODY_DOWNLOAD_APP
call fcn.00402a70
push eax
push edi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push esi
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
push edi
call esi
push edi
mov edi, dword [esp + 0xc]
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [esp + 0x54], 0x8c
mov esi, 0x8c
mov eax, dword [0x4248b0]
cmovg esi, dword [esp + 0x54]
mov dword [esp + 0x18], esi
lea eax, [eax + eax*4]
shl eax, 3
push 4
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
push eax
push dword [0x424b08]
push 0x10f
push 0
push 0
push 0x66
push edi
mov edi, dword [sym.imp.USER32.dll_GetDlgItem]
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
mov ecx, dword [0x4248b0]
push 4
lea eax, [ecx + ecx*8]
add eax, eax
movd xmm0, eax
lea eax, [ecx + ecx*4]
cvtdq2pd xmm0, xmm0
shl eax, 3
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si edx, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
push edx
push dword [0x424b08]
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add eax, 0x120
push eax
push 0
push 0
push 0x67
push dword [esp + 0x24]
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
mov ecx, dword [0x4248b0]
push 4
lea eax, [ecx + ecx*8]
add eax, eax
movd xmm0, eax
lea eax, [ecx + ecx*4]
cvtdq2pd xmm0, xmm0
shl eax, 3
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si edx, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
push edx
add edx, 0x120
push dword [0x424b08]
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add eax, edx
push eax
push 0
push 0
push 0x68
push dword [esp + 0x24]
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
mov ecx, dword [0x4248b0]
lea eax, [ecx + ecx*8]
add eax, eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
lea eax, [ecx + ecx*4]
shl eax, 3
cvttss2si edx, xmm0
push 4
movd xmm0, eax
cvtdq2pd xmm0, xmm0
push edx
push dword [0x424b08]
divsd xmm0, qword [0x421c20]
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
lea eax, [eax + edx*2]
add eax, 0x12f
push eax
push 0
push 0
push 0x69
push dword [esp + 0x24]
call edi
push eax
call dword [sym.imp.USER32.dll_SetWindowPos]
mov eax, dword [0x4248b0]
movsd xmm1, qword [0x421c20]
push 4
lea eax, [eax + eax*8]
shl eax, 2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
mov dword [esp + 0x10], eax
mov eax, esi
mov esi, dword [0x4248b4]
imul eax, esi
push dword [esp + 0x10]
lea ecx, [esi + esi*4]
add ecx, ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
mov edx, dword [0x4248b0]
sar eax, 1
imul eax, esi
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si edi, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si ecx, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x18], ecx
lea eax, [edi + ecx]
push eax
lea eax, [edx + edx*8]
add eax, eax
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si esi, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add eax, 0x6f
lea ecx, [eax + eax*2]
lea eax, [edx + edx*4]
shl eax, 3
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add ecx, eax
mov eax, dword [0x424b08]
push ecx
mov edi, dword [esp + 0x18]
cdq
sub eax, edx
sar eax, 1
sub eax, esi
sub eax, dword [esp + 0x20]
push eax
push 0
push 0x65
push edi
call dword [sym.imp.USER32.dll_GetDlgItem]
mov esi, dword [sym.imp.USER32.dll_SetWindowPos]
push eax
call esi
mov edx, dword [0x4248b0]
movsd xmm1, qword [0x421c20]
push 4
lea eax, [edx + edx*8]
add eax, eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
lea ecx, [eax + eax*2]
lea eax, [edx + edx*4]
shl eax, 3
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add ecx, eax
lea eax, [edx + edx*8]
shl eax, 2
add ecx, 0x1a5
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
cvttss2si eax, xmm0
add eax, ecx
cmp dword [0x424b08], 0x320
push eax
mov eax, dword [esp + 0xa0]
mov ecx, 0x320
cmovg ecx, dword [0x424b08]
sub eax, dword [esp + 0x98]
sub eax, 0x230
cdq
sub eax, edx
sar eax, 1
push ecx
push eax
mov eax, dword [esp + 0xa4]
sub eax, dword [esp + 0x9c]
sub eax, 0x320
cdq
sub eax, edx
sar eax, 1
push eax
push 0
push edi
call esi
push dword [ebp + 0x14]
push edi
call dword [sym.imp.USER32.dll_ShowWindow]
push edi
call dword [sym.imp.USER32.dll_UpdateWindow]
push 0
push 0
push 0
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
je 0x40237d
mov esi, dword [sym.imp.USER32.dll_IsDialogMessageW]
cmp eax, 0xffffffff
je 0x402395
lea eax, [esp + 0x5c]
push eax
push edi
call esi
test eax, eax
jne 0x402368
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 0
push 0
push 0
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
jne 0x402341
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x504]
xor ecx, esp
call fcn.00406d71
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [esp + 0x50c]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, esp
call fcn.00406d71
mov esp, ebp
pop ebp
ret 0x10
push 0x30
push 0x420cf0
push str.Window_Registration_Failed_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 1
call fcn.0040a6bf
push 0x30
push str.Error_
push str.Window_Creation_Failed_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 1
call fcn.0040a6bf
int3