Function at 0x4012d0
Capabilities:
Identify system language via api
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc0
mov esi, esp
mov eax, 0x10
call fcn.00403020
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov ecx, 4
mov dword [esi + 0xa4], eax
mov eax, ecx
mov dword [esi + 0xa0], ecx
call fcn.00403020
mov eax, esp
mov ecx, dword [esi + 0xa0]
mov dword [esi + 0x9c], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
mov ecx, dword [esi + 0xa0]
mov dword [esi + 0x98], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
mov ecx, 8
mov dword [esi + 0x94], eax
mov eax, ecx
mov dword [esi + 0x90], ecx
call fcn.00403020
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov ecx, dword [esi + 0x90]
mov dword [esi + 0x8c], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov ecx, dword [esi + 0xa0]
mov dword [esi + 0x88], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
mov ecx, 0xc0
mov dword [esi + 0x84], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov ecx, 0x90
mov dword [esi + 0x80], eax
mov eax, ecx
call fcn.00403020
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
mov dword [esi + 0xb8], 0
mov dword [esi + 0x7c], eax
jmp 0x401466
mov eax, dword [esi + 0x9c]
mov ecx, dword [eax]
add ecx, 1
mov dword [eax], ecx
jmp 0x401554
mov eax, dword [esi + 0x94]
mov byte [eax], 2
sub esp, 0x14
mov ecx, esp
mov dword [ecx], eax
mov dword [ecx + 0x10], 0x74f
mov dword [ecx + 0xc], 0xccd
mov dword [ecx + 8], 0xc5b
mov dword [ecx + 4], 0xf90
mov ecx, dword [sym.imp.USER32.dll_LookupIconIdFromDirectoryEx]
call ecx
mov ecx, dword [esi + 0xb8]
mov edx, 0xcc29786d
mov dword [esi + 0x78], eax
mov eax, ecx
mul edx
shr edx, 8
imul eax, edx, 0x141
sub ecx, eax
mov eax, ecx
sub eax, 9
mov dword [esi + 0x74], ecx
mov dword [esi + 0x70], eax
je 0x40166f
jmp 0x401441
mov eax, dword [esi + 0x74]
sub eax, 0x2b
mov dword [esi + 0x6c], eax
je 0x4015ed
jmp 0x40169e
mov eax, dword [esi + 0xb8]
add eax, 1
mov dword [esi + 0xb8], eax
cmp dword [esi + 0xb8], 0x66
setne al
mov byte [esi + 0x6b], al
mov al, byte [esi + 0x6b]
test al, 1
jne 0x401482
jmp 0x4017cc
mov word [esi + 0xb6], 0x58
mov eax, dword [esi + 0xa4]
mov dword [esi + 0xac], 0x85e
mov ecx, dword [esi + 0xb0]
mov dword [esi + 0xa8], ecx
mov dx, word [esi + 0xb6]
sub esp, 0x14
mov ecx, esp
lea edi, [esi + 0xac]
mov dword [ecx + 0x10], edi
mov edi, dword [esi + 0xa8]
mov dword [ecx + 0xc], edi
movzx edi, dx
mov dword [ecx + 4], edi
mov dword [ecx + 8], 0x2ad
mov dword [ecx], 0xd266cb
mov ecx, dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterW]
mov dword [esi + 0x64], eax
call ecx
sub esp, 8
mov ecx, esp
mov dword [ecx + 4], 0xc58
mov dword [ecx], 0x284213
mov ecx, dword [sym.imp.USER32.dll_FlashWindow]
mov dword [esi + 0x60], eax
call ecx
xor ecx, ecx
mov edi, 0x10
sub esp, 0xc
mov ebx, dword [esi + 0x64]
mov dword [esp], ebx
mov dword [esp + 4], 0
mov dword [esp + 8], 0x10
mov dword [esi + 0x5c], eax
mov dword [esi + 0x58], ecx
mov dword [esi + 0x54], edi
call fcn.004036d0
add esp, 0xc
sub esp, 4
mov eax, esp
mov ecx, dword [esi + 0xa4]
mov dword [eax], ecx
mov eax, dword [sym.imp.USER32.dll_TrackMouseEvent]
call eax
mov ecx, dword [esi + 0x9c]
mov dword [ecx], 0
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x9c]
cmp dword [eax], 0x337
je 0x4013dd
mov eax, dword [esi + 0x9c]
mov ecx, dword [eax]
and ecx, 0xf
mov edx, ecx
sub edx, 0xa
mov dword [esi + 0x4c], ecx
mov dword [esi + 0x48], edx
je 0x4015d3
jmp 0x401580
mov eax, dword [esi + 0x4c]
sub eax, 6
mov dword [esi + 0x44], eax
jne 0x4015e8
jmp 0x40158d
mov eax, dword [esi + 0x98]
mov byte [eax], 8
sub esp, 0x10
mov ecx, esp
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0x15a
mov dword [ecx + 4], 0x15a
mov dword [ecx], 0x5b7116
mov ecx, dword [sym.imp.ADVAPI32.dll_CryptSetProvParam]
call ecx
sub esp, 4
mov ecx, esp
mov dword [ecx], 0x5f4acf
mov ecx, dword [sym.imp.ole32.dll_RevokeDragDrop]
mov dword [esi + 0x40], eax
call ecx
mov dword [esi + 0x3c], eax
sub esp, 4
mov eax, esp
mov dword [eax], 0x11864d
mov eax, dword [sym.imp.USER32.dll_GetDC]
call eax
mov dword [esi + 0x38], eax
jmp 0x4013c8
sub esp, 4
mov eax, esp
mov dword [eax], 0x5a2
mov eax, dword [sym.imp.GDI32.dll_GdiSetBatchLimit]
call eax
sub esp, 8
mov ecx, esp
mov edx, dword [esi + 0x8c]
mov dword [ecx + 4], edx
mov dword [ecx], 0x9f2c42
mov ecx, dword [sym.imp.GDI32.dll_GetViewportOrgEx]
mov dword [esi + 0x34], eax
call ecx
sub esp, 0x24
mov ecx, esp
mov dword [ecx + 0x20], 0x265
mov dword [ecx + 0x1c], 0xb2c
mov dword [ecx + 0x18], 0xb2c
mov dword [ecx + 0x14], 0x96ed0c
mov dword [ecx + 0x10], 0xb2c
mov dword [ecx + 0xc], 0x1e0
mov dword [ecx + 8], 0x1e0
mov dword [ecx + 4], 0x195
mov dword [ecx], 0xde6107
mov ecx, dword [sym.imp.GDI32.dll_BitBlt]
mov dword [esi + 0x30], eax
call ecx
mov dword [esi + 0x2c], eax
sub esp, 8
mov eax, esp
mov ecx, dword [esi + 0x88]
mov dword [eax + 4], ecx
mov dword [eax], 0x6dd916
mov eax, dword [sym.imp.USER32.dll_ClientToScreen]
call eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov dword [esi + 0x28], eax
call ecx
mov word [esi + 0x26], ax
jmp 0x4017a5
mov eax, dword [esi + 0x84]
mov dword [eax], 0
mov eax, dword [esi + 0x84]
mov ecx, dword [eax]
mov dword [esi + 0x20], ecx
mov eax, dword [esi + 0x20]
cmp eax, 0xa
je 0x4017a3
sub esp, 0x10
mov eax, esp
mov dword [eax + 0xc], 0x96b987
mov dword [eax + 8], 0x680
mov dword [eax + 4], 0x295
mov dword [eax], 0x6bb0fe
mov eax, dword [sym.imp.USER32.dll_DrawIcon]
call eax
xor ecx, ecx
mov edx, 0x90
mov edi, 0xc0
mov ebx, dword [esi + 0x80]
sub esp, 0xc
mov dword [esp], ebx
mov dword [esp + 4], 0
mov dword [esp + 8], 0xc0
mov dword [esi + 0x1c], eax
mov dword [esi + 0x18], ecx
mov dword [esi + 0x14], edx
mov dword [esi + 0x10], edi
call fcn.004036d0
add esp, 0xc
mov eax, dword [esi + 0x7c]
push 0x90
push 0
push eax
call fcn.004036d0
add esp, 0xc
sub esp, 8
mov eax, esp
mov ecx, dword [esi + 0x7c]
mov dword [eax + 4], ecx
mov edx, dword [esi + 0x80]
mov dword [eax], edx
call sub.POWRPROF.dll_GetCurrentPowerPolicies
sub esp, 0xc
mov ecx, esp
mov dword [ecx + 8], 0x906
mov dword [ecx + 4], 0x906
mov dword [ecx], 0xefe23e
mov ecx, dword [sym.imp.GDI32.dll_OffsetRgn]
mov byte [esi + 0xf], al
call ecx
sub esp, 4
mov ecx, esp
mov dword [ecx], 0x314432
mov ecx, dword [sym.imp.GDI32.dll_GetTextCharacterExtra]
mov dword [esi + 8], eax
call ecx
mov dword [esi + 4], eax
mov eax, dword [esi + 0x84]
mov ecx, dword [eax]
add ecx, 1
mov dword [eax], ecx
jmp 0x4016aa
jmp 0x4017a5
sub esp, 0xc
mov eax, esp
mov dword [eax + 8], 0x375
mov dword [eax + 4], 0x375
mov dword [eax], 0x4c9a53
mov eax, dword [sym.imp.GDI32.dll_PtInRegion]
call eax
mov dword [esi], eax
jmp 0x401455
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret