Function at 0x401d70
Capabilities:
Get geographical location
Inspect load icon resource

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46c7f9
mov eax, dword fs:[0]
push eax
sub esp, 0x44
push ebx
push esi
push edi
mov eax, dword [0x495574]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
push 0x80
mov dword [ebp - 0x24], 0
push dword [0x58e720]
call dword [sym.imp.USER32.dll_LoadIconW]
mov esi, dword [sym.imp.USER32.dll_SetClassLongW]
mov edi, eax
push edi
push 0xfffffffffffffff2
push ebx
call esi
push edi
push 0xffffffffffffffde
push ebx
call esi
call fcn.00437bed
mov ecx, eax
test ecx, ecx
je 0x4026e2
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x471758
jne 0x4026ec
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x14], eax
push 0x479bc8
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 0
call fcn.00404050
test al, al
jne 0x401e19
push 0x19
push 0x479bc8
lea ecx, [ebp - 0x14]
call fcn.004041d0
push 7
push str._23.5.0
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 1
call fcn.00403d30
mov esi, dword [ebp - 0x14]
push esi
push 0x3f2
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea ecx, [ebp - 0x50]
call fcn.00438075
mov byte [ebp - 4], 2
call fcn.004048e0
test al, al
jne 0x401ecc
lea ecx, [ebp - 0x2c]
call fcn.0040e910
mov byte [ebp - 4], 3
push dword [eax]
push str.Error:_Installer_file__s_corrupt
push ebx
call fcn.00401a80
mov byte [ebp - 4], 2
or edi, 0xffffffff
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
add ecx, 0xfffffff0
mov eax, edi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x401f45
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, 0x471758
jne 0x4026f3
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4026f3
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor bl, bl
jmp 0x40266d
lea ecx, [ebp - 0x50]
call fcn.00404a80
test al, al
jne 0x401f4c
lea ecx, [ebp - 0x2c]
call fcn.0040e910
mov byte [ebp - 4], 4
push dword [eax]
push str.Error:_Installer_file__s_corrupt
push ebx
call fcn.00401a80
mov byte [ebp - 4], 2
or edi, 0xffffffff
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
add ecx, 0xfffffff0
mov eax, edi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x401f45
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, 0x471758
jne 0x4026f3
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4026f3
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor bl, bl
jmp 0x40266d
xor bl, bl
jmp 0x40266d
call fcn.00437bed
mov ecx, eax
test ecx, ecx
je 0x4026fc
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x471758
jne 0x402706
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x20]
mov byte [ebp - 4], 5
push eax
push ecx
call fcn.00405ad0
add esp, 8
or edi, 0xffffffff
test al, al
jne 0x401faa
push dword [ebp - 0x20]
push 0x479c58
push ebx
call fcn.00401a80
add esp, 0xc
mov byte [ebp - 0xd], 0
jmp 0x402615
cmp dword [ebp - 0x48], 0
jle 0x40270d
mov eax, dword [ebp - 0x4c]
push dword [eax]
push 0x3ed
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
cmp dword [ebp - 0x48], 1
jle 0x402712
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 4]
sub eax, 0x10
push eax
call fcn.00403cc0
add esp, 4
mov dword [ebp - 0x38], eax
lea ecx, [eax + 0x10]
mov dword [ebp - 0x3c], ecx
mov byte [ebp - 4], 6
cmp dword [ebp - 0x48], 1
jle 0x402717
mov eax, dword [ebp - 0x4c]
push dword [eax + 4]
push 0x3ef
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea edx, [ebp - 0x18]
mov dword [ebp - 0x18], 0
call fcn.00407580
test eax, eax
jne 0x4020a2
lea ecx, [ebp - 0x2c]
call fcn.0040e910
mov byte [ebp - 4], 7
push dword [eax]
push str.Error:_Installer_file__s_corrupt
push ebx
call fcn.00401a80
mov byte [ebp - 4], 6
add esp, 0xc
mov ecx, dword [ebp - 0x2c]
mov eax, edi
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x402098
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, 0x471758
jne 0x40271c
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40271c
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor al, al
mov byte [ebp - 0xd], al
jmp 0x4025cd
xor al, al
mov byte [ebp - 0xd], al
jmp 0x4025cd
mov eax, dword [ebp - 0x18]
lea ecx, [ebp - 0x34]
push dword [eax]
call fcn.00404300
mov esi, eax
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
push dword [eax + 4]
call fcn.00404300
push 0x479c60
push eax
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 9
push eax
call fcn.00403bc0
push esi
push eax
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 0xa
push eax
call fcn.00403500
add esp, 0x18
push dword [eax]
push 0x3ee
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
mov ecx, dword [ebp - 0x2c]
mov eax, edi
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x402142
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x402725
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402725
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call esi
mov byte [ebp - 4], 9
mov eax, edi
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40218e
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x402738
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x24], esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x40272e
push 0
push dword [edx + 4]
call esi
mov byte [ebp - 4], 8
mov eax, edi
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x4021da
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x40274b
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x24], esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402741
push 0
push dword [edx + 4]
call esi
mov byte [ebp - 4], 6
mov eax, edi
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x402226
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x40275e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x24], esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402754
push 0
push dword [edx + 4]
call esi
mov ecx, dword [ebp - 0x18]
call fcn.00407840
mov eax, dword [0x58e918]
add eax, 0xfffffff0
push eax
call fcn.00403cc0
add esp, 4
mov dword [ebp - 0x24], 1
lea esi, [eax + 0x10]
push esi
push 0x3e8
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40229d
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x471758
jne 0x402767
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402767
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
lea ecx, [ebp - 0x2c]
call fcn.004048a0
movzx eax, word [0x58e914]
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 0xc
call fcn.00437bed
mov ecx, eax
test ecx, ecx
je 0x40276e
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x471758
jne 0x402778
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
push 0
lea esi, [eax + 0x10]
mov dword [ebp - 0x24], 3
mov eax, dword [ebp - 0x1c]
push 0
movzx eax, ax
push 2
push eax
mov dword [ebp - 0x18], esi
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov edx, eax
mov dword [ebp - 0x28], edx
test edx, edx
je 0x40236a
js 0x40277f
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
jge 0x402328
push edx
lea ecx, [ebp - 0x18]
call fcn.00404670
mov esi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x1c]
push edx
push esi
push 2
movzx eax, cx
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov eax, dword [ebp - 0x28]
dec eax
cmp eax, 0xffffffff
jne 0x40234e
push dword [esi - 8]
push esi
call fcn.004541f2
add esp, 8
test eax, eax
js 0x40277f
cmp eax, dword [esi - 8]
jg 0x40277f
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
jmp 0x40237c
push 0x12
push str._Unknown_language_
lea ecx, [ebp - 0x18]
call fcn.004041d0
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
push esi
movzx eax, cx
push eax
lea eax, [ebp - 0x2c]
push str._04x__s
push eax
call fcn.00403a80
add esp, 0x10
mov byte [ebp - 4], 0xb
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4023d9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x471758
jne 0x402789
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402789
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [ebp - 0x2c]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push edi
push 0x3e9
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea ecx, [ebp - 0x30]
call fcn.00405210
push dword [ebp - 0x30]
push 0x3ea
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
cmp byte [0x58eaa5], 0
push 0
je 0x402428
push 0x4de
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
jmp 0x40243e
push 1
push 0xf1
push 0x4de
push ebx
call esi
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea ecx, [ebp - 0x1c]
call fcn.004048a0
mov byte [ebp - 4], 0xe
cmp byte [0x58eaa4], 0
je 0x402474
cmp byte [0x58eaa5], 0
lea ecx, [ebp - 0x1c]
je 0x402468
push 0x20
push str.This_layout_is_already_installed
jmp 0x40246f
push 0x37
push str.A_different_version_of_this_layout_is_already_installed
call fcn.004041d0
mov esi, dword [ebp - 0x1c]
push esi
push 0x3f1
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
cmp byte [0x58eaa4], 0
je 0x4024b5
cmp byte [0x58eaa5], 0
jne 0x4024b5
push str.Reinstall
push 0x3eb
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
xor eax, eax
cmp byte [0x58eaa5], al
sete al
push eax
push 0x3eb
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
movzx eax, byte [0x58eaa4]
push eax
push 0x3ec
push ebx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
lea ecx, [esi - 0x10]
mov byte [ebp - 0xd], 1
or esi, 0xffffffff
mov byte [ebp - 4], 0xd
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40253e
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, 0x471758
jne 0x402790
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402790
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call ebx
jmp 0x402544
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0xb
mov eax, esi
mov ecx, dword [ebp - 0x30]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x402587
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x402799
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x402799
push 0
push dword [edx + 4]
call ebx
lea ecx, [edi - 0x10]
mov byte [ebp - 4], 6
or edi, 0xffffffff
mov eax, edi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x4025ca
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x471758
jne 0x4027a2
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4027a2
push 0
push dword [edx + 4]
call ebx
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x38]
mov eax, edi
mov byte [ebp - 4], 5
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x402615
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x471758
jne 0x4027ab
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4027ab
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call ebx
jmp 0x40261b
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 2
mov eax, edi
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40266a
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x14]
cmp eax, 0x471758
jne 0x4027bc
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x38], esi
mov esi, dword [ebp - 0x14]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4027b2
push 0
push dword [edx + 4]
call ebx
mov bl, byte [ebp - 0xd]
lea ecx, [ebp - 0x50]
call fcn.0043808c
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x4026ce
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x471758
jne 0x4027c6
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4027c6
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00404830
call edx
jmp 0x401dec
mov ecx, edx
call ebx
jmp 0x401f45
push 0x80004005
call fcn.00404830
call edx
jmp 0x401f72
call fcn.00437e01
call fcn.00437e01
call fcn.00437e01
mov ecx, edx
call ebx
jmp 0x402098
mov ecx, edx
call esi
jmp 0x402142
mov ecx, edx
call dword [ebp - 0x24]
jmp 0x40218e
mov ecx, edx
call esi
jmp 0x40218e
mov ecx, edx
call dword [ebp - 0x24]
jmp 0x4021da
mov ecx, edx
call esi
jmp 0x4021da
mov ecx, edx
call dword [ebp - 0x24]
jmp 0x402226
mov ecx, edx
call esi
jmp 0x402226
call edx
jmp 0x40229d
push 0x80004005
call fcn.00404830
call edx
jmp 0x4022d9
push 0x80070057
call fcn.00404830
call edx
jmp 0x4023d9
mov ecx, edx
call ebx
jmp 0x40253e
mov ecx, edx
call esi
jmp 0x402587
mov ecx, edx
call esi
jmp 0x4025ca
call edx
jmp 0x402615
mov ecx, edx
call dword [ebp - 0x38]
jmp 0x40266a
mov ecx, edx
call dword [ebp - 0x38]
jmp 0x40266a
call edx
jmp 0x4026ce