Function at 0x4687d0
Capabilities:
Identify system language via api
Link many functions at runtime

Disassembly:
push edi
push esi
push ebp
sub esp, 0x158
call fcn.00466fb4
call fcn.00466a74
test eax, eax
je 0x4687f6
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.00466dc8
call fcn.00403588
call fcn.00469cec
movzx eax, byte [0x873a18]
test eax, eax
jle 0x468833
cmp eax, 0x14
jge 0x468833
push 0x87e420
push 0x87d7f0
call fcn.00409070
mov eax, 0xffffffff
add esp, 0x160
pop ebp
pop esi
pop edi
ret
call fcn.00469bac
movsx eax, al
test eax, eax
je 0x46884e
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
push 0x87e460
push dword [0x873a28]
call fcn.004702b0
add esp, 8
test eax, eax
jne 0x468885
mov eax, 0x87e44c
mov edx, 0x87e460
xor ecx, ecx
call fcn.004656dd
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
push 0x87e468
push dword [0x873a28]
call fcn.004702b0
add esp, 8
test eax, eax
je 0x4694b1
push 0x87e470
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x873bfc], eax
test eax, eax
je 0x46946c
push 1
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bf4], eax
push 2
push dword [0x873bfc]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bf8], eax
cmp dword [0x873bf4], 0
je 0x469455
cmp dword [0x873bf8], 0
je 0x46943e
push 0x87e4d0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x873c10], eax
test eax, eax
je 0x4693f9
push 1
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c00], eax
push 2
push dword [0x873c10]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c04], eax
push 3
push dword [0x873c10]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c0c], eax
cmp dword [0x873c00], 0
je 0x4693e2
cmp dword [0x873c04], 0
je 0x4693cb
cmp dword [0x873c0c], 0
je 0x4693b4
cmp byte [0x59cc18], 1
je 0x46928e
cmp byte [0x873704], 1
je 0x46928e
cmp byte [0x873708], 1
je 0x46928e
cmp byte [0x87370c], 1
je 0x46928e
call fcn.00464320
test eax, eax
jne 0x469035
cmp byte [0x59cc18], 1
je 0x469272
cmp byte [0x873704], 1
je 0x469272
cmp byte [0x873708], 1
je 0x469272
cmp byte [0x87370c], 1
je 0x469272
movsx eax, byte [0x8739b4]
test eax, eax
jne 0x468a36
mov eax, 2
mov edx, 0x662160
call fcn.00465365
movsx eax, al
test eax, eax
je 0x468a1a
mov eax, 0x662040
call fcn.00410fec
call fcn.0041139c
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
mov eax, dword [0x8740bc]
test eax, eax
je 0x468a36
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push dword [0x8740bc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
movsx eax, byte [0x8739ac]
test eax, eax
jne 0x469259
call fcn.00465810
test eax, eax
je 0x468a5d
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.0046950c
call fcn.004652e8
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [0x87399c]
call fcn.0046705c
cmp eax, 0xffffffff
je 0x468a81
cmp eax, 4
jg 0x468a9c
push 0x87e678
push 0
call fcn.00409070
mov eax, 0xffffffff
add esp, 0x160
pop ebp
pop esi
pop edi
ret
call fcn.0046766c
test eax, eax
jge 0x468ac2
cmp eax, 0xfffffffe
jne 0x468a9c
xor eax, eax
push eax
push 0x87e6a8
push 0x87e684
push eax
call fcn.00409070
add esp, 0x10
jmp 0x468a9c
jle 0x468ad3
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.0046cc04
call fcn.0046cb94
call fcn.0046cc64
call fcn.00469b54
movsx eax, al
test eax, eax
je 0x468b08
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.00463e38
test eax, eax
jne 0x469035
movsx eax, byte [0x8739cc]
test eax, eax
je 0x468b31
movzx eax, byte [0x873a18]
cmp eax, 0x41
jl 0x468b31
call fcn.00574669
mov edi, dword [0x873e88]
mov ebp, dword [edi + 0xc]
mov dword [0x873aa0], ebp
mov ecx, dword [edi + 0x10]
mov dword [0x873aa4], ecx
mov esi, ecx
movsx eax, byte [0x87396c]
test eax, eax
je 0x468b81
mov edx, dword [0x873a88]
mov dword [edi + 0xc], edx
mov ecx, dword [0x873e88]
mov eax, dword [0x873a8c]
mov dword [ecx + 0x10], eax
mov ebp, dword [ecx + 0xc]
mov dword [0x873aa8], ebp
mov dword [0x873aac], eax
mov esi, eax
mov ecx, eax
jmp 0x468b98
mov dword [0x873aac], ecx
mov dword [0x873aa8], ebp
mov edx, dword [0x873a88]
mov eax, dword [0x873a8c]
cmp ebp, edx
jg 0x468ba0
cmp esi, eax
jle 0x468bc4
mov ebp, edx
shr ebp, 0x1f
add edx, ebp
mov ebp, edx
sar ebp, 1
mov dword [0x873ab0], ebp
mov edx, eax
shr edx, 0x1f
add eax, edx
mov esi, eax
sar esi, 1
mov dword [0x873ab4], esi
jmp 0x468bd0
mov dword [0x873ab4], ecx
mov dword [0x873ab0], ebp
mov ecx, dword [0x873928]
lea edx, [ebp + ebp]
add edx, edx
cmp ebp, 0x2000
jg 0x469232
test ecx, ecx
je 0x46921b
mov eax, edx
imul eax, esi
lea edx, [edx + eax + 4]
push edx
push ecx
call fcn.004703cf
add esp, 8
mov edi, eax
test edi, edi
je 0x4691f2
mov dword [0x873928], edi
push 0x661e00
mov ecx, dword [0x873e88]
call fcn.004685c0
mov dword [0x873af0], 1
push 0x661e00
push 0x662040
push dword [0x8739a0]
push dword [0x87399c]
mov ecx, dword [0x873e88]
call fcn.00457684
test eax, eax
jne 0x468c70
push 0x87e6b4
push 0x87d7f0
call fcn.00409070
mov eax, 0xffffffff
add esp, 0x160
pop ebp
pop esi
pop edi
ret
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
push 1
call dword [sym.imp.USER32.dll_ShowCursor]
movsx eax, byte [0x87396c]
test eax, eax
je 0x468c9d
mov eax, dword [0x873e88]
push 0
push dword [eax + 0x2a4]
call sub.IMM32.dll_ImmAssociateContext
call fcn.0046cf60
movsx eax, byte [0x87396c]
test eax, eax
je 0x468cb4
mov byte [0x8739b8], 0
movsx eax, byte [0x8739b8]
test eax, eax
jne 0x468cc9
mov eax, dword [0x873a90]
mov dword [0x873a80], eax
movsx eax, byte [0x8739bc]
test eax, eax
jne 0x4691e6
call fcn.004686e0
call fcn.0046977c
push dword [0x87399c]
call fcn.0046cf98
pop ecx
movsx eax, al
test eax, eax
je 0x468cfe
mov byte [0x8739d4], 1
jmp 0x468d05
mov byte [0x8739d4], 0
mov dword [0x873c94], 0
push 0x873a50
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
lea esi, [esp + 0xc]
mov edi, 0x662280
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x468d2f
lea edi, [esp + 0xc]
mov edx, 0x87e6d8
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
test al, al
jne 0x468d4c
movzx eax, byte [0x873a18]
cmp eax, 0x41
jl 0x468d69
mov ebp, 1
jmp 0x468d6b
xor ebp, ebp
xor eax, eax
mov byte [esp + 0x11c], al
mov byte [esp + 0x11d], al
movsx edx, byte [0x8739ac]
test edx, edx
jne 0x468d98
movsx eax, byte [0x8739f4]
test eax, eax
jne 0x468d98
mov eax, 1
jmp 0x468d9a
xor eax, eax
neg eax
inc eax
cmp edx, 1
je 0x4691cd
xor edx, edx
neg edx
inc edx
imul eax, edx
movsx eax, al
cmp byte [0x8739b4], 1
je 0x468dbe
test eax, eax
jne 0x468de0
mov byte [esp + 0x148], 0
mov byte [esp + 0x149], 1
mov byte [esp + 0x14a], 2
mov byte [esp + 0x14b], 3
jmp 0x468e00
mov byte [esp + 0x148], 0
mov byte [esp + 0x149], 1
mov byte [esp + 0x14a], 3
mov byte [esp + 0x14b], 2
xor eax, eax
mov dword [esp + 0x144], ebx
mov ebx, eax
jmp 0x468e0e
inc ebx
movsx edx, bl
cmp edx, 4
jge 0x4691bf
movsx edx, byte [esp + edx + 0x148]
test edx, edx
je 0x46919b
cmp edx, 1
je 0x468e65
cmp edx, 2
jne 0x468e4a
lea eax, [esp + 0x114]
lea edx, [esp + 0xc]
call fcn.00440758
test eax, eax
jne 0x468e7f
jmp 0x468e0d
cmp edx, 3
jne 0x468e0d
lea eax, [esp + 0xc]
call fcn.00440734
movsx eax, al
test eax, eax
jne 0x46917b
jmp 0x468e0d
lea eax, [esp + 0x114]
lea edx, [esp + 0xc]
call fcn.00440a48
test eax, eax
jne 0x46918f
jmp 0x468e0d
mov ebx, dword [esp + 0x144]
test eax, eax
jle 0x469174
mov eax, 1
test eax, eax
je 0x468e9c
mov ebp, 1
test ebp, ebp
jne 0x46912f
movzx eax, byte [0x873a18]
cmp eax, 0x50
jl 0x468f8c
call fcn.0046de34
test eax, eax
jne 0x468ec9
push 0x5e
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov ebp, eax
jmp 0x468ed3
push 0x5e
call dword [0x873760]
mov ebp, eax
push edi
mov eax, 0x5f
call fcn.00462658
test ebp, ebp
je 0x468ef6
test ebp, 0x80
je 0x468ef6
mov byte [0x873bd8], 1
mov dword [0x873bdc], eax
push 0x87e6e8
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x873bd4], eax
test eax, eax
je 0x468f73
push 0x87e6f4
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bc0], eax
push 0x87e708
push dword [0x873bd4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bc4], eax
push 0x87e71c
push dword [0x873bd4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bc8], eax
push 0x87e738
push dword [0x873bd4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bcc], eax
push 0x87e754
push dword [0x873bd4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bd0], eax
mov edx, dword [0x873bc8]
test edx, edx
je 0x468f8c
mov eax, dword [0x873e88]
push 0
push dword [eax + 0x2a4]
call edx
push 0x87e764
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x873bf0], eax
test eax, eax
je 0x468fd4
push 1
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873be4], eax
push 2
push dword [0x873bf0]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873be8], eax
push 3
push dword [0x873bf0]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873bec], eax
call fcn.0046d528
movsx eax, byte [0x8736f4]
test eax, eax
jne 0x468fef
movsx eax, byte [0x8736f8]
test eax, eax
je 0x468ff4
call fcn.00466020
call fcn.0046c9c4
movsx eax, al
test eax, eax
je 0x469014
call fcn.00410de4
mov eax, 1
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.0046b728
test eax, eax
je 0x46902c
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.0046c610
test eax, eax
je 0x469044
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
call fcn.0046b708
movsx eax, byte [0x8739dc]
call fcn.00457f41
cmp eax, 1
je 0x4690ed
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [0x873a60], eax
mov dword [0x873a64], eax
mov dword [0x873a68], eax
mov dword [0x873a6c], eax
call fcn.0046acc8
movsx eax, byte [0x8736f4]
test eax, eax
jne 0x469093
movsx eax, byte [0x8736f8]
test eax, eax
je 0x4690a6
call fcn.004090b0
cmp eax, 1
je 0x4690b2
cmp eax, 0xffffffff
je 0x4694d6
xor eax, eax
add esp, 0x158
pop ebp
pop esi
pop edi
ret
xor eax, eax
mov byte [0x873740], al
mov byte [0x59cc68], 1
mov byte [0x8736f4], al
mov byte [0x8736f8], al
push 0x87db3c
push 0x8792b0
call fcn.00423828
push 0x87db3c
push 0x8792b0
call fcn.00409070
add esp, 0x10
jmp 0x4690a6
mov eax, dword [0x873e88]
push 5
push dword [eax + 0x2a4]
call dword [sym.imp.USER32.dll_ShowWindow]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ebp, eax
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, ebp
cmp eax, 0x5dc
jae 0x46905e
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, ebp
cmp eax, 0x5dc
jb 0x46911b
jmp 0x46905e
call fcn.0046d764
movsx eax, byte [0x873b54]
test eax, eax
je 0x468ea4
mov eax, 1
mov byte [0x8736f4], al
xor ecx, ecx
mov byte [0x8736f8], cl
movsx edx, byte [0x59cc68]
cmp edx, 1
jle 0x469163
mov edx, eax
mov byte [0x59cc68], dl
mov byte [0x87373c], cl
jmp 0x468ea4
xor eax, eax
jmp 0x468e93
mov ebx, dword [esp + 0x144]
mov byte [esp + 0x11c], 1
jmp 0x468e86
mov ebx, dword [esp + 0x144]
jmp 0x468e86
lea eax, [esp + 0x114]
lea edx, [esp + 0xc]
call fcn.00440aa0
test eax, eax
je 0x468e0d
mov ebx, dword [esp + 0x144]
jmp 0x468e86
mov ebx, dword [esp + 0x144]
xor eax, eax
jmp 0x468e86
movsx edx, byte [0x8739f8]
test edx, edx
jne 0x468da6
mov edx, 1
jmp 0x468da8
mov byte [0x873a9c], 0
jmp 0x468cd8
push esi
push ebp
push 0
push 0x87a404
push 0x8792b0
call fcn.00423828
push 0
push 1
push 0x1965e
call fcn.0046d1fc
add esp, 0x20
jmp 0x468c0d
mov eax, edx
imul eax, esi
lea edx, [edx + eax + 4]
push edx
call fcn.0047016c
pop ecx
mov edi, eax
jmp 0x468c05
push esi
push ebp
push 0x87a3dc
push 0x8792b0
call fcn.00409070
push 1
push 0x186aa
call fcn.0046d258
add esp, 0x18
xor edi, edi
jmp 0x468c0d
mov esi, 0x6623a0
mov edi, 0x662280
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x469263
jmp 0x468a5d
cmp dword [0x873c24], 0
jne 0x4689db
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret
push 0x87e570
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x873c24], eax
test eax, eax
je 0x46936f
push 0x87e57c
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c14], eax
push 0x87e594
push dword [0x873c24]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c18], eax
push 0x87e5a4
push dword [0x873c24]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c1c], eax
push 0x87e5c0
push dword [0x873c24]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x873c20], eax
test eax, eax
je 0x46935b
cmp dword [0x873c18], 0
je 0x469347
cmp dword [0x873c1c], 0
je 0x469333
cmp dword [0x873c20], 0
jne 0x46899a
xor eax, eax
push eax
push eax
push 0x87e5d4
push eax
call fcn.00409070
add esp, 0x10
jmp 0x46899a
xor eax, eax
push eax
push eax
push 0x87e61c
push eax
call fcn.00409070
add esp, 0x10
jmp 0x46930f
xor eax, eax
push eax
push eax
push 0x87e5f8
push eax
call fcn.00409070
add esp, 0x10
jmp 0x469306
xor eax, eax
push eax
push eax
push 0x87e5d4
push eax
call fcn.00409070
add esp, 0x10
jmp 0x4692fd
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
xor ecx, ecx
lea edx, [esp + 0x14c]
push ecx
push ecx
push edx
push 0x400
push ebp
push ecx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push dword [esp + 0x14c]
push ebp
push 0x87e648
push 0x8792b0
call fcn.00409070
add esp, 0x10
jmp 0x46899a
xor eax, eax
push eax
push eax
push 0x87e520
push eax
call fcn.00409070
add esp, 0x10
jmp 0x468966
xor eax, eax
push eax
push eax
push 0x87e500
push eax
call fcn.00409070
add esp, 0x10
jmp 0x468959
xor eax, eax
push eax
push eax
push 0x87e4dc
push eax
call fcn.00409070
add esp, 0x10
jmp 0x46894c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
xor ecx, ecx
lea edx, [esp + 0x154]
push ecx
push ecx
push edx
push 0x400
push ebp
push ecx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push dword [esp + 0x154]
push ebp
push 0x87e540
push 0x8792b0
call fcn.00409070
add esp, 0x10
jmp 0x468966
xor eax, eax
push eax
push eax
push 0x87e47c
push eax
call fcn.00409070
add esp, 0x10
jmp 0x4688f3
xor eax, eax
push eax
push eax
push 0x87e47c
push eax
call fcn.00409070
add esp, 0x10
jmp 0x4688e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
xor ecx, ecx
lea edx, [esp + 0x150]
push ecx
push ecx
push edx
push 0x400
push ebp
push ecx
push 0x1300
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
push dword [esp + 0x150]
push ebp
push 0x87e4a0
push 0x8792b0
call fcn.00409070
add esp, 0x10
jmp 0x4688f3
mov dword [0x59cc78], 0x87a1ac
push 1
push 0x186a0
call fcn.0046d258
mov eax, 0xffffffff
add esp, 0x160
pop ebp
pop esi
pop edi
ret
xor edx, edx
mov byte [0x873740], dl
mov ecx, 1
mov byte [0x59cc68], cl
mov byte [0x8736f4], dl
mov byte [0x8736f8], dl
mov byte [0x873cf8], cl
mov eax, 0xffffffff
add esp, 0x158
pop ebp
pop esi
pop edi
ret