Function at 0x401172
Capabilities:
Create directory
Delete directory
Enumerate gui resources
Identify system language via api
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x208
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [0x404120], eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
xor ebx, ebx
and eax, 0x3ff
push ebx
push 0x40185b
mov dword [ebp - 0xc], eax
call dword [sym.imp.USER32.dll_EnumWindows]
push 0x4040b4
push dword [ebp + 0x10]
call fcn.004019e9
mov edi, eax
push 0x4040b0
push dword [ebp + 0x10]
neg edi
sbb edi, edi
neg edi
mov dword [ebp - 8], edi
call fcn.004019e9
add esp, 0x10
mov esi, 0x4030e4
neg eax
sbb eax, eax
neg eax
cmp edi, ebx
mov dword [0x40411c], eax
jne 0x401226
push 0x4040ac
push dword [ebp + 0x10]
call fcn.004019e9
neg eax
sbb eax, eax
push 1
inc eax
push str.Visible
push esi
mov dword [0x40411c], eax
call fcn.00401b06
add esp, 0x14
test eax, eax
jne 0x401226
push 1
push str.Visible
push esi
call fcn.00401b47
push 1
push str.Maximized
push esi
call fcn.00401b47
add esp, 0x18
call section..text
cmp edi, ebx
jne 0x40130f
cmp eax, ebx
jne 0x40130f
push 0x404094
push dword [ebp + 0x10]
call fcn.004019e9
pop ecx
cmp eax, ebx
pop ecx
jne 0x401289
lea eax, [ebp - 0x208]
push 0x63
push eax
push 1
push ebx
call dword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
jle 0x40130f
lea eax, [ebp - 0x208]
push 0x404094
push eax
mov byte [ebp - 0x1a5], bl
call fcn.004019e9
pop ecx
cmp eax, ebx
pop ecx
je 0x40130f
push 0x3d
push eax
call fcn.00401949
pop ecx
cmp eax, ebx
pop ecx
je 0x40130f
inc eax
mov dword [ebp + 8], ebx
mov dword [ebp - 4], eax
movsx eax, byte [eax]
push eax
call fcn.00401a11
test eax, eax
pop ecx
jne 0x4012d7
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 4]
mov al, byte [ecx + edx]
cmp al, 0x2f
je 0x4012d1
cmp al, bl
je 0x4012d1
movsx eax, byte [ecx + edx + 1]
inc ecx
push eax
mov dword [ebp + 8], ecx
call fcn.00401a11
test eax, eax
pop ecx
je 0x4012ac
cmp dword [ebp + 8], 0x64
jae 0x40130f
mov eax, dword [ebp + 8]
inc eax
push eax
lea eax, [ebp - 0x1a4]
push dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push ebx
push ebx
push str.pid2
push esi
call fcn.00401c8d
lea eax, [ebp - 0x1a4]
push ebx
push eax
push 0x404048
push esi
call fcn.00401c8d
add esp, 0x20
push ebx
push ebx
push 0x404088
push esi
call fcn.00401c8d
add esp, 0x10
cmp edi, ebx
jne 0x4013c6
push 0x404084
push dword [ebp + 0x10]
call fcn.004019e9
mov edi, eax
pop ecx
cmp edi, ebx
pop ecx
je 0x4013c6
mov al, byte [edi + 3]
add edi, 3
cmp al, 0x27
mov dword [ebp + 0x10], ebx
je 0x40137e
cmp al, 0x22
je 0x40137e
movsx eax, al
push eax
call fcn.00401a11
test eax, eax
pop ecx
jne 0x40139d
mov eax, dword [ebp + 0x10]
cmp byte [eax + edi], bl
je 0x401397
inc dword [ebp + 0x10]
mov eax, dword [ebp + 0x10]
movsx eax, byte [eax + edi]
push eax
call fcn.00401a11
test eax, eax
pop ecx
je 0x40135f
jmp 0x401397
mov cl, byte [edi + 1]
inc edi
cmp al, cl
je 0x40139d
cmp cl, bl
je 0x401397
inc dword [ebp + 0x10]
mov ecx, dword [ebp + 0x10]
mov cl, byte [ecx + edi]
cmp al, cl
jne 0x401386
cmp dword [ebp + 0x10], 0x64
jae 0x4013c6
mov eax, dword [ebp + 0x10]
inc eax
push eax
lea eax, [ebp - 0x1a4]
push edi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
lea eax, [ebp - 0x1a4]
push ebx
push eax
push 0x404088
push esi
call fcn.00401c8d
add esp, 0x10
mov al, byte [0x404124]
push 0x4a
mov byte [ebp - 0x140], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x13f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp - 8]
push ebx
neg eax
sbb eax, eax
push str.CurInstall
and eax, 2
push esi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ebx
call fcn.00401b06
add esp, 0xc
cmp dword [ebp - 8], ebx
mov dword [ebp + 0x10], eax
jne 0x40140b
inc dword [ebp + 0x10]
lea eax, [ebp - 0x140]
push 0xfa
push eax
push ebx
push ebx
push 0x4030e8
push esi
call fcn.00401d96
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x18
test eax, eax
je 0x401626
cmp byte [ebp - 0x140], bl
je 0x401626
lea eax, [ebp - 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push dword [ebp + 0x10]
lea eax, [ebp + eax - 0x140]
mov dword [ebp - 4], eax
push str._x.bin_
push eax
call edi
add esp, 0xc
cmp dword [ebp - 8], ebx
jne 0x4014dc
lea eax, [ebp - 0x140]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x4014dc
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 5]
cmp eax, ecx
jge 0x4014dc
inc eax
mov dword [ebp + 8], eax
push eax
push str._x.bin_
push dword [ebp - 4]
call edi
add esp, 0xc
lea eax, [ebp - 0x140]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x4014be
mov eax, dword [ebp + 0x10]
add eax, 5
cmp dword [ebp + 8], eax
jg 0x4014c4
inc dword [ebp + 8]
push dword [ebp + 8]
jmp 0x40148c
mov eax, dword [ebp + 8]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 8]
cmp dword [ebp + 0x10], eax
je 0x4014dc
push dword [ebp + 0x10]
push str._x.bin_
push dword [ebp - 4]
call edi
add esp, 0xc
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
jl 0x401626
mov dword [ebp - 0x10], ebx
lea eax, [ebp - 0x140]
push eax
push 0x4016a7
push str.PART
push dword [0x404120]
call dword [sym.imp.KERNEL32.dll_EnumResourceNamesA]
mov ecx, dword [ebp - 0x14]
xor eax, eax
cmp dword [ebp - 0x10], ebx
setne al
lea eax, [eax + ecx*2]
mov eax, dword [eax*4 + 0x4031c0]
cmp eax, 4
mov dword [ebp - 0x14], eax
jne 0x4014ee
cmp dword [ebp - 0x10], ebx
jne 0x401620
cmp dword [ebp - 8], ebx
jne 0x4015b3
push ebx
push ebx
push str.ConfigDateStamp
push esi
call fcn.00401c8d
push dword [ebp + 0x10]
push str.CurInstall
push esi
call fcn.00401b47
add esp, 0x1c
dec dword [ebp + 0x10]
push str.Game_
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x140]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x14], ebx
lea eax, [ebp - 0x140]
push eax
push 0x4016a7
push str.GAME
push dword [0x404120]
call dword [sym.imp.KERNEL32.dll_EnumResourceNamesA]
mov ecx, dword [ebp - 0x14]
xor eax, eax
cmp dword [ebp - 0x10], ebx
setne al
lea eax, [eax + ecx*2]
mov eax, dword [eax*4 + 0x4031c0]
cmp eax, 4
mov dword [ebp - 0x14], eax
jne 0x401579
cmp dword [ebp + 0x10], ebx
jle 0x40161d
push dword [ebp + 0x10]
push str._x.bin_
push dword [ebp - 4]
call edi
add esp, 0xc
lea eax, [ebp - 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
je 0x401618
lea eax, [ebp - 0x140]
mov dword [ebp - 0x10], ebx
push eax
push 0x4016a7
push str.PART
mov dword [ebp - 0x14], 3
push dword [0x404120]
call dword [sym.imp.KERNEL32.dll_EnumResourceNamesA]
push 0x404070
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea eax, [ebp - 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
dec dword [ebp + 0x10]
jmp 0x4015b3
mov dword [ebp - 0x10], ebx
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [0x40411c], ebx
jne 0x401672
cmp dword [ebp - 8], ebx
mov ecx, 0x404088
jne 0x40163d
mov ecx, 0x404124
cmp dword [ebp - 0x10], ebx
mov eax, str.The_My_Web_Search_Bar_has_been_successfully__sinstalled
je 0x40164c
mov eax, str.Failed_to__sinstall_the_My_Web_Search_Bar
push ecx
push eax
lea eax, [ebp - 0x1a4]
push eax
call edi
add esp, 0xc
lea eax, [ebp - 0x1a4]
push 0x1000
push str.My_Web_Search_Bar_Installer
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [ebp - 8], ebx
jne 0x40167c
call fcn.00401060
push dword [ebp - 0x10]
push 0x404050
push esi
call fcn.00401b47
movzx eax, word [ebp - 0xc]
push eax
push 0x40404c
push esi
call fcn.00401b47
mov eax, dword [ebp - 0x10]
add esp, 0x18
pop edi
pop esi
pop ebx
leave
ret 0x10