Function at 0x4445c0
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6f81be
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
push ebx
push esi
push edi
mov eax, dword [0x7e6410]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebp + 0xc]
xor ecx, ecx
cmp dword [ebx + eax*8 + 0xd0], 0xffffffff
cmove eax, ecx
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
cmp eax, 5
ja 0x444e6b
add eax, 0x18
mov ecx, 0x790eb0
lea eax, [ebx + eax*4]
mov dword [ebp + 8], eax
mov eax, dword [eax]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x444646
test dx, dx
je 0x444642
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x444646
add eax, 4
add ecx, 4
test dx, dx
jne 0x444620
xor eax, eax
jmp 0x44464b
sbb eax, eax
or eax, 1
test eax, eax
je 0x444e6b
movdqu xmm0, xmmword [ebx + 0x20]
lea ecx, [ebp + 8]
push dword [ebp + 8]
movd eax, xmm0
movdqu xmmword [ebp - 0x48], xmm0
mov edi, dword [ebp - 0x3c]
add eax, dword [ebx + 0x90]
sub edi, dword [ebx + 0x9c]
mov esi, dword [ebp - 0x40]
sub esi, dword [ebx + 0x98]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x44]
add eax, dword [ebx + 0x94]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x10], edi
call fcn.00428690
push str._n____
push 0x785cec
lea ecx, [ebp + 8]
mov dword [ebp - 4], 0
call fcn.00429560
cmp dword [ebx + 0xb8], 0
je 0x4447b1
mov ecx, dword [ebx + 0xc4]
call fcn.0043b7e0
mov ecx, dword [0x7e7970]
mov edi, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x14], ecx
mov byte [ebp - 4], 1
sub esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
sub dword [ebp - 0x10], eax
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 0x30]
mov ecx, esi
call fcn.0042eb50
lea ecx, [ebp - 0x68]
or edi, 0x21
push ecx
lea ecx, [ebp - 0x14]
push ecx
push 0xffffffffffffffff
push ecx
push edi
push dword [ebp - 0x10]
mov edi, dword [ebp + 0xc]
lea edx, [ebp + 8]
push edi
push dword [ebp - 0x18]
mov ecx, eax
push dword [ebp - 0x1c]
call fcn.0047fcd0
add esp, 0x24
mov ecx, esi
call fcn.0042ec70
cmp dword [ebx + 0x84], 1
jne 0x4447a1
mov eax, dword [0x7e7970]
mov dword [ebp + 0xc], eax
movd xmm1, edi
cvtdq2ps xmm1, xmm1
mov byte [ebp - 4], 2
movss xmm0, dword [ebp - 0x60]
comiss xmm0, xmm1
jbe 0x444782
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp + 0xc]
call fcn.004289a0
lea ecx, [ebp + 0xc]
call fcn.0042a300
lea ecx, [ebp + 0xc]
call fcn.0042a1d0
mov eax, dword [ebx + 0x88]
cmp dword [eax - 8], 0
je 0x444782
push eax
lea ecx, [ebp + 0xc]
call fcn.0042a220
lea ecx, [ebp + 0xc]
call fcn.0042a300
push 0
push 0
push ecx
lea eax, [ebp + 0xc]
mov ecx, esp
push eax
call fcn.00428690
mov ecx, ebx
call fcn.00444330
lea ecx, [ebp + 0xc]
call fcn.00428810
lea ecx, [ebp - 0x14]
call fcn.00428810
mov esi, dword [ebp + 8]
jmp 0x444e4a
mov ecx, dword [ebp - 0x18]
sub edi, ecx
mov eax, dword [ebp - 0x1c]
sub esi, eax
cmp dword [ebx + 0x140], 0
movd xmm1, edi
movd xmm3, esi
movd xmm2, ecx
movd xmm0, eax
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm3, xmm3
cvtdq2ps xmm2, xmm2
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0x54], xmm2
movss dword [ebp - 0x58], xmm0
movss dword [ebp - 0x50], xmm3
movss dword [ebp - 0x4c], xmm1
je 0x444b55
mov eax, dword [ebp + 0xc]
lea edi, [eax*8 + 0xd4]
add edi, ebx
mov dword [ebp - 0x18], edi
cmp dword [edi], 0xffffffff
je 0x4449c8
mov eax, dword [ebx + 0x108]
test eax, eax
jns 0x44493a
cdq
mov ecx, 5
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovl ecx, eax
mov edx, ecx
mov dword [ebp - 0x20], ecx
neg edx
mov eax, edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x14], edx
cmp eax, ecx
jg 0x4449c8
mov esi, edx
cmp esi, ecx
jg 0x444929
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mov dword [ebp - 0x10], 0
movss dword [ebp - 0x24], xmm1
movss xmm0, dword [ebp - 0x50]
lea ecx, [ebp - 0x1c]
movss dword [ebp - 0x40], xmm0
movss xmm0, dword [ebp - 0x4c]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [ebp - 0x58]
addss xmm0, xmm1
push 0x790eb0
movss dword [ebp - 0x48], xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebp - 0x54]
movss dword [ebp - 0x44], xmm0
call fcn.00428840
mov byte [ebp - 4], 3
lea eax, [ebp - 0x10]
movsd xmm0, qword [ebx + 0x138]
mulsd xmm0, qword [ebx + 0x130]
push eax
mov ecx, dword [ebx + 0x140]
lea eax, [ebp - 0x1c]
push eax
sub esp, 8
lea eax, [ebp - 0x48]
movsd qword [esp], xmm0
push edi
push dword [ebx + 0xc4]
push eax
push 0xffffffffffffffff
lea eax, [ebp + 8]
push eax
push dword [ebx + 0x30]
push 0
call fcn.0047bd70
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, 0x7e8698
je 0x444912
lea edi, [eax - 0xc]
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x44490f
push edi
call fcn.006b31f8
add esp, 4
mov edi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x20]
inc esi
movss xmm1, dword [ebp - 0x24]
cmp esi, ecx
jle 0x444861
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, ecx
jle 0x444844
jmp 0x4449c8
movss xmm0, dword [ebp - 0x58]
lea ecx, [ebp - 0x1c]
addss xmm0, dword [0x792040]
addss xmm2, dword [0x792040]
push 0x790eb0
movss dword [ebp - 0x40], xmm3
movss dword [ebp - 0x3c], xmm1
movss dword [ebp - 0x48], xmm0
movss dword [ebp - 0x44], xmm2
mov dword [ebp - 0x28], 0
call fcn.00428840
mov byte [ebp - 4], 4
lea eax, [ebp - 0x28]
movsd xmm0, qword [ebx + 0x138]
mulsd xmm0, qword [ebx + 0x130]
push eax
mov ecx, dword [ebx + 0x140]
lea eax, [ebp - 0x1c]
push eax
sub esp, 8
lea eax, [ebp - 0x48]
movsd qword [esp], xmm0
push edi
push dword [ebx + 0xc4]
push eax
push 0xffffffffffffffff
lea eax, [ebp + 8]
push eax
push dword [ebx + 0x30]
push 0
call fcn.0047bd70
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0
call fcn.00428810
movsd xmm0, qword [ebx + 0x138]
lea eax, [ebx + 0xcc]
mulsd xmm0, qword [ebx + 0x130]
push eax
mov ecx, dword [ebx + 0x140]
lea eax, [ebx + 0xc8]
push eax
mov eax, dword [ebp + 0xc]
sub esp, 8
add eax, 0x1a
movsd qword [esp], xmm0
lea eax, [ebx + eax*8]
push eax
push dword [ebx + 0xc4]
lea eax, [ebp - 0x58]
push eax
push 0xffffffffffffffff
lea eax, [ebp + 8]
push eax
push dword [ebx + 0x30]
push 0
call fcn.0047bd70
cmp dword [ebx + 0x84], 1
jne 0x444b4d
mov eax, dword [0x809980]
test al, 1
jne 0x444a51
or eax, 1
mov dword [0x809980], eax
push ecx
mov byte [ebp - 4], 5
call fcn.00444e80
push 0x730830
call fcn.006b31e3
add esp, 4
mov byte [ebp - 4], 0
mov ecx, dword [ebx + 0x140]
lea eax, [ebp - 0x68]
push 0xffffffffffffffff
push eax
push 0x809984
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x68], 0
call fcn.0047baf0
cvttss2si eax, dword [ebp - 0x50]
mov ecx, dword [ebx + 0x140]
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x48], 0
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp + 8]
push eax
call fcn.0047baf0
mov eax, dword [0x7e7970]
mov dword [ebp + 0xc], eax
mov byte [ebp - 4], 6
movss xmm2, dword [ebp - 0x3c]
movss xmm0, dword [ebp - 0x4c]
cvtps2pd xmm2, xmm2
cvtps2pd xmm0, xmm0
movapd xmm1, xmm2
mulsd xmm1, qword [0x792048]
addsd xmm1, xmm0
comisd xmm2, xmm1
ja 0x444af5
movss xmm0, dword [ebp - 0x40]
comiss xmm0, dword [ebp - 0x50]
jbe 0x444b2e
lea eax, [ebp + 8]
push eax
lea ecx, [ebp + 0xc]
call fcn.004289a0
lea ecx, [ebp + 0xc]
call fcn.0042a300
lea ecx, [ebp + 0xc]
call fcn.0042a1d0
mov eax, dword [ebx + 0x88]
cmp dword [eax - 8], 0
je 0x444b2e
push eax
lea ecx, [ebp + 0xc]
call fcn.0042a220
lea ecx, [ebp + 0xc]
call fcn.0042a300
push 0
push 0
push ecx
lea eax, [ebp + 0xc]
mov ecx, esp
push eax
call fcn.00428690
mov ecx, ebx
call fcn.00444330
lea ecx, [ebp + 0xc]
call fcn.00428810
mov esi, dword [ebp + 8]
jmp 0x444e4a
mov ecx, dword [ebx + 0x30]
call fcn.0042eb50
mov edi, eax
mov dword [ebp - 0x1c], edi
call fcn.0047d460
push 0
push 3
push 0
push ecx
mov dword [esp], 0x41200000
lea ecx, [ebp - 0x38]
push eax
call fcn.00441480
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0
push eax
push 0
push 0
call dword [sym.imp.gdiplus.dll_GdipCreateStringFormat]
push dword [ebx + 0xc4]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
push eax
call fcn.0047b370
mov ecx, dword [ebp + 0xc]
add esp, 8
mov esi, dword [ebp + 8]
movsd xmm2, qword [0x792148]
cmp dword [ebx + ecx*8 + 0xd4], 0xffffffff
je 0x444db5
mov eax, dword [ebx + 0x108]
test eax, eax
jns 0x444d0f
cdq
mov ecx, 5
xor eax, edx
sub eax, edx
cmp eax, ecx
cmovl ecx, eax
mov edx, ecx
mov dword [ebp - 0x24], ecx
neg edx
mov eax, edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x18], edx
cmp eax, ecx
jg 0x444db5
jmp 0x444c00
mov edi, edx
cmp edi, ecx
jg 0x444cfb
movd xmm1, eax
cvtdq2ps xmm1, xmm1
movss dword [ebp - 0x20], xmm1
jmp 0x444c20
movss xmm0, dword [ebp - 0x50]
lea eax, [ebp + 8]
movss dword [ebp - 0x60], xmm0
movss xmm0, dword [ebp - 0x4c]
movss dword [ebp - 0x5c], xmm0
movss xmm0, dword [ebp - 0x58]
addss xmm0, xmm1
mov edx, dword [ebp + 0xc]
push eax
mov dword [ebp + 8], 0
movss dword [ebp - 0x68], xmm0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebp - 0x54]
movss dword [ebp - 0x64], xmm0
movsd xmm0, qword [ebx + 0x138]
mulsd xmm0, qword [ebx + 0x130]
mulsd xmm0, xmm2
cvttsd2si eax, xmm0
movzx ecx, al
movzx eax, byte [ebx + edx*8 + 0xd4]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + edx*8 + 0xd5]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + edx*8 + 0xd6]
shl ecx, 8
or ecx, eax
push ecx
call dword [sym.imp.gdiplus.dll_GdipCreateSolidFill]
mov eax, dword [ebp + 8]
push eax
push dword [ebp - 0x30]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x68]
push eax
push dword [ebp - 0x38]
mov eax, dword [ebp - 0x1c]
push 0xffffffffffffffff
push esi
push dword [eax]
call dword [sym.imp.gdiplus.dll_GdipDrawString]
test eax, eax
je 0x444cd3
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 4], eax
push dword [ebp - 0x28]
call dword [sym.imp.gdiplus.dll_GdipDeleteBrush]
mov ecx, dword [ebp - 0x24]
inc edi
movss xmm1, dword [ebp - 0x20]
movsd xmm2, qword [0x792148]
cmp edi, ecx
jle 0x444c20
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, ecx
jle 0x444c00
mov edi, dword [ebp - 0x1c]
jmp 0x444db5
movss xmm0, dword [ebp - 0x50]
movss dword [ebp - 0x60], xmm0
movss xmm0, dword [ebp - 0x4c]
movzx eax, byte [ebx + ecx*8 + 0xd6]
movss dword [ebp - 0x5c], xmm0
movss xmm0, dword [ebp - 0x58]
addss xmm0, dword [0x792040]
push eax
movzx eax, byte [ebx + ecx*8 + 0xd5]
push eax
movzx eax, byte [ebx + ecx*8 + 0xd4]
lea ecx, [ebp + 8]
movss dword [ebp - 0x68], xmm0
movss xmm0, dword [ebp - 0x54]
addss xmm0, dword [0x792040]
push eax
movss dword [ebp - 0x64], xmm0
movsd xmm0, qword [ebx + 0x138]
mulsd xmm0, qword [ebx + 0x130]
mulsd xmm0, xmm2
cvttsd2si eax, xmm0
movzx eax, al
push eax
call fcn.00439e80
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x44]
call fcn.004413c0
lea eax, [ebp - 0x44]
mov ecx, edi
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x38]
push eax
push 0xffffffffffffffff
push esi
call fcn.00441420
push dword [ebp - 0x40]
call dword [sym.imp.gdiplus.dll_GdipDeleteBrush]
movsd xmm0, qword [ebx + 0x138]
mulsd xmm0, qword [ebx + 0x130]
mov edx, dword [ebp + 0xc]
mulsd xmm0, qword [0x792148]
cvttsd2si eax, xmm0
movzx ecx, al
movzx eax, byte [ebx + edx*8 + 0xd0]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + edx*8 + 0xd1]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + edx*8 + 0xd2]
shl ecx, 8
or ecx, eax
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], ecx
lea ecx, [ebp - 0x44]
push eax
call fcn.004413c0
lea eax, [ebp - 0x44]
mov ecx, edi
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x38]
push eax
push 0xffffffffffffffff
push esi
call fcn.00441420
mov ecx, dword [ebx + 0x30]
call fcn.0042ec70
push dword [ebp - 0x40]
call dword [sym.imp.gdiplus.dll_GdipDeleteBrush]
push dword [ebp - 0x30]
call dword [sym.imp.gdiplus.dll_GdipDeleteStringFormat]
push dword [ebp - 0x38]
call dword [sym.imp.gdiplus.dll_GdipDeleteFont]
lea eax, [esi - 0xc]
cmp eax, 0x7e8698
je 0x444e6b
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x444e6b
push esi
call fcn.006b31f8
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8