Function at 0x4040d0
Capabilities:
Create process on windows
Get geographical location
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3e8
mov eax, dword [0x41b360]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor ebx, ebx
mov eax, esi
push edi
mov dword [ebp - 0x310], 0xf
mov dword [ebp - 0x314], ebx
mov byte [ebp - 0x324], bl
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x404106
sub eax, edi
push eax
push esi
lea ecx, [ebp - 0x324]
call fcn.00402fa0
push 2
push ebx
push 0x4154bc
lea ecx, [ebp - 0x324]
call fcn.00401c20
cmp eax, 0xffffffff
push 0x14
setne al
mov esi, 0xf
push str.Starting_WT_MUI_shim
lea ecx, [ebp - 0x35c]
mov byte [0x41c4c0], al
mov dword [ebp - 0x348], esi
mov dword [ebp - 0x34c], ebx
mov byte [ebp - 0x35c], bl
call fcn.00402fa0
lea edi, [esi + 1]
cmp byte [0x41c4c0], bl
je 0x404190
mov eax, dword [ebp - 0x35c]
cmp dword [ebp - 0x348], edi
jae 0x404182
lea eax, [ebp - 0x35c]
push ebx
push 0x415345
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [ebp - 0x348], edi
jb 0x4041a7
mov ecx, dword [ebp - 0x35c]
push ecx
call fcn.00404d9f
add esp, 4
push 0x103
lea edx, [ebp - 0x107]
push ebx
push edx
mov byte [ebp - 0x108], bl
call fcn.00405540
add esp, 0xc
push 0x104
lea eax, [ebp - 0x108]
push eax
push ebx
mov dword [ebp - 0x24c], esi
mov dword [ebp - 0x250], ebx
mov byte [ebp - 0x260], bl
mov dword [ebp - 0x268], esi
mov dword [ebp - 0x26c], ebx
mov byte [ebp - 0x27c], bl
mov dword [ebp - 0x2a0], esi
mov dword [ebp - 0x2a4], ebx
mov byte [ebp - 0x2b4], bl
mov dword [ebp - 0x2d8], esi
mov dword [ebp - 0x2dc], ebx
mov byte [ebp - 0x2ec], bl
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x108]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x404226
sub eax, edx
push eax
lea ecx, [ebp - 0x108]
push ecx
lea ecx, [ebp - 0x260]
call fcn.00402fa0
lea eax, [ebp - 0x108]
lea edx, [eax + 1]
jmp 0x404250
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x404250
sub eax, edx
push eax
lea edx, [ebp - 0x108]
push edx
lea ecx, [ebp - 0x27c]
call fcn.00402fa0
push 1
push 0xffffffffffffffff
push 0x4154a0
lea ecx, [ebp - 0x260]
call fcn.00401cd0
push eax
push ebx
lea eax, [ebp - 0x244]
push eax
lea ecx, [ebp - 0x260]
call fcn.00403410
push eax
lea ecx, [ebp - 0x27c]
call fcn.00403810
cmp dword [ebp - 0x230], edi
jb 0x4042b7
mov ecx, dword [ebp - 0x244]
push ecx
call fcn.00404d9f
add esp, 4
push 1
push 0xffffffffffffffff
push 0x4154a0
lea ecx, [ebp - 0x260]
call fcn.00401cd0
push 0xffffffffffffffff
inc eax
push eax
lea edx, [ebp - 0x244]
push edx
lea ecx, [ebp - 0x260]
call fcn.00403410
push eax
lea ecx, [ebp - 0x260]
call fcn.00403810
cmp dword [ebp - 0x230], edi
jb 0x404304
mov eax, dword [ebp - 0x244]
push eax
call fcn.00404d9f
add esp, 4
mov edx, dword [ebp - 0x268]
mov ecx, dword [ebp - 0x27c]
mov esi, ecx
cmp edx, edi
jae 0x404619
lea esi, [ebp - 0x27c]
mov eax, esi
add eax, dword [ebp - 0x26c]
cmp edx, edi
jae 0x404332
lea ecx, [ebp - 0x27c]
cmp ecx, eax
je 0x40434d
push 0x4068ff
push esi
push eax
push ecx
lea ecx, [ebp - 0x360]
push ecx
call fcn.00402600
add esp, 0x14
mov edx, dword [ebp - 0x24c]
mov ecx, dword [ebp - 0x260]
mov esi, ecx
cmp edx, edi
jae 0x404620
lea esi, [ebp - 0x260]
mov eax, esi
add eax, dword [ebp - 0x250]
cmp edx, edi
jae 0x40437b
lea ecx, [ebp - 0x260]
cmp ecx, eax
je 0x404396
push 0x4068ff
push esi
push eax
push ecx
lea edx, [ebp - 0x360]
push edx
call fcn.00402600
add esp, 0x14
lea eax, [ebp - 0x260]
push eax
push str._n_napplication_name_is
lea ecx, [ebp - 0x27c]
push ecx
lea edx, [ebp - 0x244]
push str.application_dir_is
push edx
call fcn.004039c0
add esp, 0xc
push eax
lea eax, [ebp - 0x228]
push eax
call fcn.00403a90
add esp, 0xc
push eax
lea ecx, [ebp - 0x35c]
push ecx
call fcn.00403ae0
add esp, 0xc
cmp byte [0x41c4c0], bl
je 0x404407
mov eax, dword [ebp - 0x35c]
cmp dword [ebp - 0x348], edi
jae 0x4043f9
lea eax, [ebp - 0x35c]
push ebx
push 0x415345
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [ebp - 0x348], edi
jb 0x40441e
mov edx, dword [ebp - 0x35c]
push edx
call fcn.00404d9f
add esp, 4
mov esi, 0x10
mov edi, 0xf
mov dword [ebp - 0x348], edi
mov dword [ebp - 0x34c], ebx
mov byte [ebp - 0x35c], bl
cmp dword [ebp - 0x214], esi
jb 0x404451
mov eax, dword [ebp - 0x228]
push eax
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x214], edi
mov dword [ebp - 0x218], ebx
mov byte [ebp - 0x228], bl
cmp dword [ebp - 0x230], esi
jb 0x40447a
mov ecx, dword [ebp - 0x244]
push ecx
call fcn.00404d9f
add esp, 4
push 0x103
lea edx, [ebp - 0x20b]
push ebx
push edx
mov byte [ebp - 0x20c], bl
call fcn.00405540
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
push 0x10
movzx esi, ax
call dword [sym.imp.KERNEL32.dll_GetUserGeoID]
push esi
push 0x104
lea ecx, [ebp - 0x20c]
push ecx
push 6
push eax
call dword [sym.imp.KERNEL32.dll_GetGeoInfoA]
lea eax, [ebp - 0x20c]
mov dword [ebp - 0x284], edi
mov dword [ebp - 0x288], ebx
mov byte [ebp - 0x298], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4044d7
sub eax, esi
push eax
lea edx, [ebp - 0x20c]
push edx
lea ecx, [ebp - 0x298]
call fcn.00402fa0
push 2
push ebx
lea eax, [ebp - 0x308]
push eax
lea ecx, [ebp - 0x298]
call fcn.00403410
mov eax, dword [ebp - 0x284]
mov edx, dword [ebp - 0x298]
mov esi, edx
cmp eax, 0x10
jae 0x404627
lea esi, [ebp - 0x298]
mov ecx, esi
add ecx, dword [ebp - 0x288]
cmp eax, 0x10
mov eax, edx
jae 0x40453a
lea eax, [ebp - 0x298]
cmp eax, ecx
je 0x404555
push 0x4068ff
push esi
push ecx
push eax
lea ecx, [ebp - 0x360]
push ecx
call fcn.00402600
add esp, 0x14
mov edx, dword [ebp - 0x2f4]
mov ecx, dword [ebp - 0x308]
mov esi, ecx
cmp edx, 0x10
jae 0x40462e
lea esi, [ebp - 0x308]
mov eax, esi
add eax, dword [ebp - 0x2f8]
mov edi, 0x10
cmp edx, edi
jae 0x404589
lea ecx, [ebp - 0x308]
cmp ecx, eax
je 0x4045a4
push 0x4068ff
push esi
push eax
push ecx
lea edx, [ebp - 0x360]
push edx
call fcn.00402600
add esp, 0x14
lea eax, [ebp - 0x308]
push eax
push str._n_nusers_language_is
lea ecx, [ebp - 0x298]
push ecx
lea edx, [ebp - 0x244]
push str.users_locale_is
push edx
call fcn.004039c0
add esp, 0xc
push eax
lea eax, [ebp - 0x228]
push eax
call fcn.00403a90
add esp, 0xc
push eax
lea ecx, [ebp - 0x35c]
push ecx
call fcn.00403ae0
add esp, 0xc
cmp byte [0x41c4c0], bl
je 0x404635
mov eax, dword [ebp - 0x35c]
cmp dword [ebp - 0x348], edi
jae 0x404607
lea eax, [ebp - 0x35c]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
push 0x415345
push eax
push ebx
call esi
jmp 0x40463b
mov eax, ecx
jmp 0x404322
mov eax, ecx
jmp 0x40436b
mov ecx, edx
jmp 0x404527
mov eax, ecx
jmp 0x404574
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [ebp - 0x348], edi
jb 0x404652
mov edx, dword [ebp - 0x35c]
push edx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x348], 0xf
mov dword [ebp - 0x34c], ebx
mov byte [ebp - 0x35c], bl
cmp dword [ebp - 0x214], edi
jb 0x40467f
mov eax, dword [ebp - 0x228]
push eax
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x214], 0xf
mov dword [ebp - 0x218], ebx
mov byte [ebp - 0x228], bl
cmp dword [ebp - 0x230], edi
jb 0x4046ac
mov ecx, dword [ebp - 0x244]
push ecx
call fcn.00404d9f
add esp, 4
push 0xffffffffffffffff
push ebx
push 0x41b32c
lea ecx, [ebp - 0x2d0]
mov dword [ebp - 0x2bc], 0xf
mov dword [ebp - 0x2c0], ebx
mov byte [ebp - 0x2d0], bl
call fcn.00402dd0
mov eax, dword [ebp - 0x2d0]
cmp dword [ebp - 0x2bc], edi
jae 0x4046e9
lea eax, [ebp - 0x2d0]
push ebx
push 0x415345
push eax
call fcn.00401040
add esp, 0xc
cmp eax, ebx
jne 0x40470f
xor eax, eax
cmp dword [ebp - 0x2c0], ebx
setne al
cmp eax, ebx
je 0x404a40
lea edx, [ebp - 0x2d0]
push edx
push 0x4154a0
lea eax, [ebp - 0x27c]
push eax
lea ecx, [ebp - 0x244]
push ecx
call fcn.00403b20
add esp, 0xc
push eax
lea edx, [ebp - 0x228]
push edx
call fcn.00403ae0
add esp, 0xc
push eax
lea ecx, [ebp - 0x2b4]
call fcn.00403810
cmp dword [ebp - 0x214], edi
jb 0x404764
mov eax, dword [ebp - 0x228]
push eax
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x214], 0xf
mov dword [ebp - 0x218], ebx
mov byte [ebp - 0x228], bl
cmp dword [ebp - 0x230], edi
jb 0x404791
mov ecx, dword [ebp - 0x244]
push ecx
call fcn.00404d9f
add esp, 4
lea edx, [ebp - 0x2b4]
push edx
call fcn.00403f40
add esp, 4
test al, al
je 0x404a40
lea eax, [ebp - 0x2b4]
push eax
lea ecx, [ebp - 0x228]
push str....found_a_valid_path__and_the_file_exists:
push ecx
call fcn.004039c0
add esp, 0xc
cmp byte [0x41c4c0], bl
je 0x4047e9
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x4047df
lea eax, [ebp - 0x228]
push ebx
push 0x415345
push eax
push ebx
call esi
cmp dword [ebp - 0x214], edi
jb 0x404800
mov edx, dword [ebp - 0x228]
push edx
call fcn.00404d9f
add esp, 4
push 1
push 0xffffffffffffffff
push 0x4154a0
lea ecx, [ebp - 0x2b4]
call fcn.00401cd0
push eax
push ebx
lea eax, [ebp - 0x244]
push eax
lea ecx, [ebp - 0x2b4]
call fcn.00403410
push eax
lea ecx, [ebp - 0x2ec]
call fcn.00403810
cmp dword [ebp - 0x230], edi
jb 0x40484b
mov ecx, dword [ebp - 0x244]
push ecx
call fcn.00404d9f
add esp, 4
lea edx, [ebp - 0x2ec]
push edx
push str._n_ndirectory:
lea eax, [ebp - 0x2b4]
push eax
lea ecx, [ebp - 0x340]
push str.About_to_launch_process_n_nfile:
push ecx
call fcn.004039c0
add esp, 0xc
push eax
lea edx, [ebp - 0x244]
push edx
call fcn.00403a90
add esp, 0xc
push eax
lea eax, [ebp - 0x228]
push eax
call fcn.00403ae0
add esp, 0xc
cmp byte [0x41c4c0], bl
je 0x4048b8
mov eax, dword [ebp - 0x228]
cmp dword [ebp - 0x214], edi
jae 0x4048ae
lea eax, [ebp - 0x228]
push ebx
push 0x415345
push eax
push ebx
call esi
cmp dword [ebp - 0x214], edi
jb 0x4048cf
mov ecx, dword [ebp - 0x228]
push ecx
call fcn.00404d9f
add esp, 4
mov esi, 0xf
mov dword [ebp - 0x214], esi
mov dword [ebp - 0x218], ebx
mov byte [ebp - 0x228], bl
cmp dword [ebp - 0x230], edi
jb 0x4048fd
mov edx, dword [ebp - 0x244]
push edx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x230], esi
mov dword [ebp - 0x234], ebx
mov byte [ebp - 0x244], bl
cmp dword [ebp - 0x32c], edi
jb 0x404926
mov eax, dword [ebp - 0x340]
push eax
call fcn.00404d9f
add esp, 4
push 0x44
lea ecx, [ebp - 0x3e8]
push ebx
push ecx
call fcn.00405540
mov ecx, 0x11
lea esi, [ebp - 0x3e8]
lea edi, [ebp - 0x3a4]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x2ec]
add esp, 0xc
cmp dword [ebp - 0x2d8], 0x10
mov edx, 5
mov dword [ebp - 0x3a4], 0x44
mov dword [ebp - 0x378], 1
mov word [ebp - 0x374], dx
mov dword [ebp - 0x350], ebx
mov dword [ebp - 0x34c], ebx
mov dword [ebp - 0x348], ebx
mov dword [ebp - 0x344], ebx
jae 0x404998
lea edi, [ebp - 0x2ec]
push 0x22
lea eax, [ebp - 0x2b4]
push eax
lea ecx, [ebp - 0x340]
push 0x22
push ecx
call fcn.00403c00
add esp, 0xc
push eax
lea edx, [ebp - 0x244]
push edx
call fcn.00403cc0
mov esi, 0x10
add esp, 0xc
cmp dword [eax + 0x14], esi
jb 0x4049ce
mov eax, dword [eax]
lea ecx, [ebp - 0x350]
push ecx
lea edx, [ebp - 0x3a4]
push edx
push edi
push ebx
push ebx
push ebx
push ebx
push ebx
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
cmp dword [ebp - 0x230], esi
jb 0x404a01
mov eax, dword [ebp - 0x244]
push eax
call fcn.00404d9f
add esp, 4
mov edi, 0xf
mov dword [ebp - 0x230], edi
mov dword [ebp - 0x234], ebx
mov byte [ebp - 0x244], bl
cmp dword [ebp - 0x32c], esi
jb 0x404a2f
mov ecx, dword [ebp - 0x340]
push ecx
call fcn.00404d9f
add esp, 4
mov edx, dword [ebp - 0x350]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x404a55
push ebx
push str.WT_MUI
push str.Error___could_not_find_game_application_for_this_user_language
push ebx
call esi
mov esi, edi
mov edi, 0xf
cmp dword [ebp - 0x2bc], esi
jb 0x404a6c
mov eax, dword [ebp - 0x2d0]
push eax
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x2bc], edi
mov dword [ebp - 0x2c0], ebx
mov byte [ebp - 0x2d0], bl
cmp dword [ebp - 0x2f4], esi
jb 0x404a95
mov ecx, dword [ebp - 0x308]
push ecx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x2f4], edi
mov dword [ebp - 0x2f8], ebx
mov byte [ebp - 0x308], bl
cmp dword [ebp - 0x284], esi
jb 0x404abe
mov edx, dword [ebp - 0x298]
push edx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x284], edi
mov dword [ebp - 0x288], ebx
mov byte [ebp - 0x298], bl
cmp dword [ebp - 0x2d8], esi
jb 0x404ae7
mov eax, dword [ebp - 0x2ec]
push eax
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x2d8], edi
mov dword [ebp - 0x2dc], ebx
mov byte [ebp - 0x2ec], bl
cmp dword [ebp - 0x2a0], esi
jb 0x404b10
mov ecx, dword [ebp - 0x2b4]
push ecx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x2a0], edi
mov dword [ebp - 0x2a4], ebx
mov byte [ebp - 0x2b4], bl
cmp dword [ebp - 0x268], esi
jb 0x404b39
mov edx, dword [ebp - 0x27c]
push edx
call fcn.00404d9f
add esp, 4
mov dword [ebp - 0x268], edi
mov dword [ebp - 0x26c], ebx
mov byte [ebp - 0x27c], bl
cmp dword [ebp - 0x24c], esi
jb 0x404b62
mov eax, dword [ebp - 0x260]
push eax
call fcn.00404d9f
add esp, 4
cmp dword [ebp - 0x310], esi
mov dword [ebp - 0x24c], edi
pop edi
pop esi
mov dword [ebp - 0x250], ebx
mov byte [ebp - 0x260], bl
pop ebx
jb 0x404b8e
mov ecx, dword [ebp - 0x324]
push ecx
call fcn.00404d9f
add esp, 4
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004059d8
mov esp, ebp
pop ebp
ret 0x10