Function at 0x40048740
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40073ff8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x80
push ebx
push esi
mov dword [ebp - 0x2c], ecx
mov ecx, str.PropertyService_fenrir.co.jp
push edi
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x18], 0
call fcn.400047fe
mov esi, eax
xor edi, edi
or ebx, 0xffffffff
mov dword [ebp - 0x10], edi
test esi, esi
je 0x400487bf
mov ecx, dword [esi]
test ecx, ecx
je 0x4004879a
mov eax, dword [ecx]
lea edx, [ebp - 0x10]
push edx
push 0x4007ce20
push ecx
call dword [eax]
lea ecx, [esi + 4]
mov eax, ebx
lock xadd dword [ecx], eax
cmp dword [ecx], edi
jne 0x400487bc
mov ecx, dword [esi]
test ecx, ecx
je 0x400487b3
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
push esi
call fcn.40053016
add esp, 4
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x38], edi
mov dword [ebp - 4], 0
mov eax, dword [0x40097b68]
test al, 1
jne 0x40048812
or eax, 1
mov dword [0x40097b68], eax
call fcn.40001ce1
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x400487f6
push 0x80004005
call fcn.40001ad1
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
push 0x40074e20
mov dword [0x40097b6c], eax
call fcn.400542cc
add esp, 4
test edi, edi
je 0x400488e0
call fcn.40001ce1
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40048836
push 0x80004005
call fcn.40001ad1
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x1c], esi
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
mov eax, dword [edi]
push ecx
push str.app.product.name
push edi
mov dword [ebp - 0x20], 0
call dword [eax + 0x10]
test eax, eax
jns 0x40048865
xor eax, eax
jmp 0x40048886
mov esi, dword [ebp - 0x20]
push 8
call fcn.400549a4
add esp, 4
test eax, eax
je 0x40048881
mov dword [eax], esi
mov dword [eax + 4], 1
jmp 0x40048883
xor eax, eax
mov esi, dword [ebp - 0x1c]
lea ecx, [ebp - 0x1c]
mov edx, eax
push ecx
lea ecx, [ebp - 0x24]
call fcn.40004aac
push eax
mov ecx, 0x40097b6c
mov byte [ebp - 4], 2
call fcn.400088ff
mov byte [ebp - 4], 1
mov ecx, ebx
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x400488c3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x400488e0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.40001ce1
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x400488fc
push 0x80004005
call fcn.40001ad1
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov esi, dword [ebp + 0xc]
mov byte [ebp - 4], 3
test esi, esi
je 0x40048935
test esi, 0xffff0000
jne 0x4004892a
movzx eax, si
lea ecx, [ebp - 0x14]
push eax
call fcn.40007342
jmp 0x40048941
push esi
call fcn.40054188
add esp, 4
jmp 0x40048937
xor eax, eax
push eax
push esi
lea ecx, [ebp - 0x14]
call fcn.40007835
mov byte [ebp - 4], 4
mov esi, dword [ebp - 0x14]
cmp dword [esi - 0xc], 0
jne 0x400489a2
mov eax, dword [0x40097b6c]
lea ebx, [esi - 0x10]
lea ecx, [eax - 0x10]
cmp ecx, ebx
je 0x400489a2
cmp dword [ebx + 0xc], 0
lea esi, [ebx + 0xc]
jl 0x40048993
mov edx, dword [ecx]
cmp edx, dword [ebx]
jne 0x40048993
call fcn.400073ec
mov dword [ebp + 0xc], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x4004898b
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
jmp 0x400489a2
push dword [eax - 0xc]
lea ecx, [ebp - 0x14]
push eax
call fcn.40007835
mov esi, dword [ebp - 0x14]
mov byte [ebp + 0xf], 0
call fcn.40048e70
mov ebx, eax
test ebx, ebx
jne 0x400489c9
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov ebx, eax
test ebx, ebx
jne 0x400489c9
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov ebx, eax
mov byte [ebp + 0xf], 1
test edi, edi
je 0x40048af7
call fcn.40001ce1
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x400489ed
push 0x80004005
call fcn.40001ad1
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 5
mov eax, dword [edi]
push ecx
push str.app.temp.messagebox_owner
push edi
mov dword [ebp - 0x1c], 0
call dword [eax + 0x10]
mov dword [ebp - 0x34], eax
test eax, eax
js 0x40048a3d
mov eax, dword [ebp - 0x1c]
push 8
mov dword [ebp - 0x30], eax
call fcn.400549a4
add esp, 4
test eax, eax
je 0x40048a3d
mov ecx, dword [ebp - 0x30]
mov dword [eax], ecx
mov dword [eax + 4], 1
jmp 0x40048a3f
xor eax, eax
lea ecx, [ebp - 0x24]
mov edx, eax
push ecx
lea ecx, [ebp - 0x20]
call fcn.40004aac
mov byte [ebp - 4], 7
or ecx, 0xffffffff
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40048a6e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x20]
jl 0x40048ad9
cmp dword [eax - 0xc], 0
mov dword [ebp - 0x30], eax
je 0x40048ad9
push 0
mov dword [ebp - 0x34], 0
call fcn.40054f03
push 0xa
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x30]
call fcn.40054dc2
add esp, 0x10
mov dword [ebp - 0x1c], eax
call fcn.40054eaf
cmp dword [eax], 0x22
mov eax, dword [ebp - 0x1c]
sete cl
xor edx, edx
test cl, cl
cmovne eax, edx
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x40048acb
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
cmovne ebx, dword [ebp - 0x1c]
mov eax, dword [edi]
push str.app.temp.messagebox_owner
push edi
call dword [eax + 0x20]
mov eax, dword [ebp - 0x20]
lea edx, [eax - 0x10]
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40048af7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x40048b96
cmp dword [0x40097448], 0
jne 0x40048b96
push ebx
call dword [sym.imp.USER32.dll_IsWindowVisible]
mov edi, eax
mov dword [ebp - 0x8c], 0
xor eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
lea eax, [ebp - 0x8c]
push eax
push ebx
call dword [sym.imp.USER32.dll_GetWindowPlacement]
test edi, edi
je 0x40048b93
test eax, eax
je 0x40048b93
cmp dword [ebp - 0x84], 2
je 0x40048b93
cmp byte [ebp + 0xf], 0
jne 0x40048b77
push 0xfffffffffffffffa
push ebx
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov edi, eax
jmp 0x40048b79
xor edi, edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push edi
push 0x40047e70
push 5
call dword [sym.imp.USER32.dll_SetWindowsHookExW]
mov dword [0x40097448], eax
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x28]
mov eax, ecx
and eax, 0xf0
add eax, 0xfffffff0
cmp eax, 0x30
ja case.0x40048baf.17
movzx eax, byte [eax + 0x40048d08]
jmp dword [eax*4 + 0x40048cf4]
mov dword [ebp - 0x18], 0x7f04
jmp case.0x40048baf.17
mov dword [ebp - 0x18], 0x7f02
jmp case.0x40048baf.17
mov dword [ebp - 0x18], 0x7f03
jmp case.0x40048baf.17
mov dword [ebp - 0x18], 0x7f01
mov eax, ecx
mov dword [ebp - 0x60], 0x28
xor ecx, ecx
and eax, 0xffffff0f
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x4c], eax
test ecx, ecx
je 0x40048c27
or eax, 0x80
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
movzx eax, ax
mov ecx, 0x400
cmp ax, cx
jne 0x40048c51
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
movzx eax, ax
test ax, ax
je 0x40048c60
mov ecx, 0x800
cmp ax, cx
jne 0x40048c81
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
test ax, ax
je 0x40048c78
mov ecx, 0x400
cmp ax, cx
jne 0x40048c81
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
movzx eax, ax
movzx eax, ax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x60]
push eax
call dword [sym.imp.USER32.dll_MessageBoxIndirectW]
mov ecx, eax
mov dword [ebp + 0xc], ecx
test ecx, ecx
jne 0x40048cac
push dword [ebp - 0x28]
push esi
push dword [ebp - 0x2c]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ebx, eax
jmp 0x40048caf
mov ebx, dword [ebp + 0xc]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
or ecx, 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40048ccd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x40048cde
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov ecx, dword [ebp - 0xc]
mov eax, ebx
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x10