Function at 0x45960f
Capabilities:
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10c
push ebx
push esi
push edi
mov dword [esp + 0x24], 0xbd10caad
xor edi, edi
inc edi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], edi
lea ecx, [esp + 0x94]
xor esi, esi
mov dword [esp + 0x24], esi
push 2
pop esi
mov dword [esp + 0x24], 0xa4087b33
mov dword [esp + 0x24], 0x80563ade
mov dword [esp + 0x20], 0x72c2e8b5
push esi
call fcn.004113a6
mov dword [esp + 0x20], 0xffffffff
xor eax, eax
mov dword [esp + 0x3c], 0xae3c
mov dword [esp + 0x14], eax
jmp 0x459683
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x38], eax
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jl 0x459677
mov dword [esp + 0x14], eax
jmp 0x4596a5
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x94]
mov dword [ecx + edx*4], 8
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x45968f
mov ecx, dword [esp + 0x38]
xor edx, edx
cmp ecx, 0x635290ce
setge dl
cmp edx, dword [esp + 0x38]
jle 0x4596c8
mov ecx, eax
cmp dword [esp + 0x38], eax
je 0x4596ca
mov ecx, edi
imul edx, ecx, 0xea
xor ebx, ebx
mov ecx, dword [esp + 0x38]
cmp edx, ecx
setl bl
mov dword [esp + 0x24], ebx
cmp dword [esp + 0x24], 0x5206
jg 0x4596ed
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
or edx, 0xffffffff
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
cmp edx, ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
test ecx, ecx
mov ecx, dword [esp + 0x38]
setg bl
xor edx, edx
cmp ebx, ecx
setle dl
xor ecx, ecx
or ebx, 0xffffffff
cmp edx, ebx
setne cl
mov dword [esp + 0x24], ecx
cmp dword [esp + 0x24], 0xbd6cd538
je 0x459743
mov ecx, eax
cmp dword [esp + 0x2c], eax
je 0x459745
mov ecx, edi
mov eax, dword [esp + 0x38]
add eax, ecx
xor ecx, ecx
cmp eax, 0xb96bc712
setne cl
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x94]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], eax
dec dword [esp + 0x3c]
call fcn.00411478
mov dword [esp + 0x14], 0xfffffffa
xor eax, eax
mov dword [esp + 0x10], 0xc42206dd
mov dword [esp + 0x10], eax
jmp 0x4597a4
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0xf4], 0xfffffff7
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x459791
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0xffffffe6
jne 0x45982c
xor ebx, ebx
inc ebx
mov dword [esp + 0x10], 0xfffffffc
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
neg edi
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
sbb edi, edi
xor edx, edx
neg edi
cmp ecx, 0x74952f34
setle dl
imul ecx, edx, 0xffff
mov edx, dword [esp + 0x10]
sub edx, ecx
mov ecx, dword [esp + 0x10]
cmp ebx, edx
sbb esi, esi
xor edx, edx
neg esi
sub esi, 2
cmp esi, ecx
mov ecx, 0xdebf889e
setg dl
cmp ecx, edx
sbb edx, edx
xor ecx, ecx
neg edx
add edx, dword [esp + 0x10]
cmp edi, edx
setg cl
mov dword [esp + 0x10], ecx
dec dword [esp + 0x14]
cmp dword [esp + 0x14], 0xffffffe6
je 0x4597b8
xor edi, edi
inc edi
or ebx, 0xffffffff
mov dword [esp + 0x14], eax
jmp 0x459889
mov dword [esp + 0x24], 0x886a6c65
mov dword [esp + 0x10], edi
cmp dword [esp + 0x10], eax
jl 0x459885
mov dword [esp + 0x1c], 4
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x1c], eax
jl 0x45987b
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x459875
push 0x1709
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowLongA]
xor eax, eax
dec dword [esp + 0x1c]
jns 0x459856
dec dword [esp + 0x24]
dec dword [esp + 0x10]
jns 0x459844
dec dword [esp + 0x14]
cmp dword [esp + 0x14], 0xffffffeb
jle 0x459832
mov dword [esp + 0x10], 0x58e469ad
mov dword [esp + 0x10], eax
jmp 0x4598aa
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x6c], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x45989e
mov dword [esp + 0x10], eax
jmp 0x4598c6
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x6c], 0xe57ad95e
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x4598b6
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x4598e6
push eax
push 0x659
push eax
call dword [sym.imp.ADVAPI32.dll_ControlService]
xor eax, eax
push dword [esp + 0x4c]
movdqa xmm0, xmmword [0xa5c880]
lea ecx, [esp + 0xf8]
push ecx
lea ecx, [esp + 0xec]
mov dword [esp + 0x58], eax
push ecx
push eax
lea ecx, [esp + 0x60]
mov dword [esp + 0x64], eax
movdqu xmmword [esp + 0xf4], xmm0
mov dword [esp + 0x68], eax
call fcn.004114da
mov dword [esp + 0x24], 0x1d8b9dbe
xor esi, esi
push 3
mov dword [esp + 0x2c], 0xca8cda2a
mov dword [esp + 0x14], esi
pop ecx
jmp 0x45994f
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xb8], 0x2e0cf572
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x45993c
mov ebx, dword [esp + 0x50]
mov dword [ebx + 8], esi
jmp 0x459961
push 3
pop ecx
push ecx
lea ecx, [esp + 0x74]
call fcn.004113a6
push 3
mov dword [esp + 0x14], esi
pop edx
jmp 0x459987
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x70]
mov dword [eax + ecx*4], 0xccbad86e
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edx
jl 0x459974
mov eax, dword [esp + 0x70]
mov dword [eax], esi
mov dword [esp + 0x20], esi
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x24]
mov eax, dword [ebx + 8]
mov dword [esp + eax*4 + 0xb8], ecx
mov eax, dword [esp + 0x70]
inc dword [eax]
mov eax, dword [eax]
cmp eax, 2
jle 0x459993
lea ecx, [esp + 0x70]
test eax, eax
jne 0x4599ce
call fcn.00411478
inc dword [ebx + 8]
cmp dword [ebx + 8], 2
jle 0x45995e
jmp 0x4599d3
call fcn.00411478
mov esi, dword [sym.imp.USER32.dll_GetDC]
xor eax, eax
cmp dword [esp + 0x28], eax
je 0x459a01
mov dword [esp + 0x20], 0xbf495e3b
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
sub eax, 0x2ba2
neg eax
sbb eax, eax
inc eax
mov dword [esp + 0x28], eax
jmp 0x459a58
mov dword [esp + 0x2c], 0x7a14
mov dword [esp + 0x20], 0x526c7153
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x459a38
push eax
push 0xa2d
push 0x113a
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_GetCharWidth32A]
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [ebx + 8], eax
cmp dword [esp + 0x2c], eax
jl 0x459a51
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x2c]
je 0x459a51
mov eax, edi
mov dword [esp + 0xb8], eax
lea ecx, [esp + 0x50]
call fcn.00411478
cmp byte [ebp + 0x10], 0
je 0x459fa5
or edx, 0xffffffff
mov dword [esp + 0x34], 0xbeaa32b1
xor esi, esi
mov dword [esp + 0x20], edx
push 2
mov dword [esp + 0x14], esi
pop ecx
jmp 0x459a98
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xdc], 0xfffffff8
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x459a85
mov dword [esp + 0x34], edx
mov dword [esp + 0x34], edi
cmp dword [esp + 0x34], esi
jl 0x459ae1
mov dword [esp + 0x10], 5
mov dword [esp + 0x10], esi
jmp 0x459acd
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xdc], 0x63384304
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x459aba
mov dword [esp + 0x20], 0xb9dd952e
dec dword [esp + 0x34]
jns 0x459aac
push 3
pop ebx
mov dword [esp + 0x14], edi
lea ecx, [esp + 0x7c]
push ebx
call fcn.004113a6
mov dword [esp + 0x20], 0xfffffffc
mov dword [esp + 0x24], 8
mov dword [esp + 0x14], esi
jmp 0x459b18
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x40], 0x4e2db58
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jl 0x459b08
mov dword [esp + 0x14], esi
jmp 0x459b37
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x7c]
mov dword [eax + ecx*4], 0xdfb1af9d
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x459b24
mov dword [esp + 0x14], esi
cmp dword [esp + 0x14], esi
jl 0x459c1a
mov dword [esp + 0x1c], 0xa290be4
lea ecx, [esp + 0xc4]
push 2
call fcn.004113a6
mov dword [esp + 0x2c], 0xffff
mov dword [esp + 0x10], esi
jmp 0x459b85
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc4]
mov dword [eax + ecx*4], 0xbafcb143
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 2
jl 0x459b6f
mov dword [esp + 0x1c], esi
cmp dword [esp + 0x1c], esi
jl 0x459baf
or eax, 0xffffffff
mov dword [esp + 0x20], 0xfffffffc
mov dword [esp + 0x20], eax
dec dword [esp + 0x2c]
dec dword [esp + 0x1c]
jns 0x459b99
cmp dword [esp + 0x2c], esi
jne 0x459bda
mov ecx, dword [esp + 0x40]
xor edx, edx
mov eax, dword [esp + 0x7c]
test ecx, ecx
setne dl
mov dword [eax], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + eax*4 + 0x40]
mov eax, dword [esp + 0x14]
sub eax, edx
cmp eax, ecx
mov ecx, esi
jge 0x459bdc
mov ecx, edi
mov eax, dword [esp + 0x14]
mov eax, dword [esp + eax*4 + 0x40]
imul eax, ecx
xor ecx, ecx
sub eax, dword [esp + 0x14]
cmp eax, 0xcef3cf68
setne cl
sub ecx, 0xb5cf
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0xc4]
call fcn.00411478
dec dword [esp + 0x14]
jns 0x459b4b
dec dword [esp + 0x24]
lea ecx, [esp + 0x7c]
call fcn.00411478
mov dword [esp + 0x30], 0x1078932
mov dword [esp + 0x34], edi
mov dword [esp + 0x10], 0x99958900
mov dword [esp + 0x3c], 0xfaeb382
mov dword [esp + 0x14], 0xfffffff7
mov dword [esp + 0x24], 0xe2e4ed
push 0xfffffffffffffffe
pop eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], eax
jmp 0x459c81
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0xfc], 0x4c6454c9
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x459c6e
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x14], eax
je 0x459cc0
cmp dword [esp + 0x24], eax
jne 0x459cc6
cmp dword [esp + 0x10], eax
je 0x459cc8
mov esi, edi
mov ecx, dword [esp + 0x14]
xor edx, edx
cmp esi, ecx
setne dl
sub edx, dword [esp + 0x3c]
neg edx
sbb edx, edx
inc edx
cmp edx, 0xb6b7be2d
ja 0x459cec
mov edx, edi
cmp dword [esp + 0x30], eax
jne 0x459cee
mov edx, eax
mov ecx, dword [esp + 0x3c]
imul ecx, edx
cmp ecx, 0xbc23cea
jne 0x459ea2
cmp dword [esp + 0x34], eax
jne 0x459ea2
cmp dword [esp + 0x14], eax
jne 0x459ea2
mov dword [esp + 0x10], 0xce3044b1
mov dword [esp + 0x28], edi
mov dword [esp + 0x28], 0xcb0ea5cd
mov dword [esp + 0x10], eax
jmp 0x459d3f
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x44], 0x3b36
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 2
jl 0x459d2f
mov ecx, dword [esp + 0x44]
xor edx, edx
imul ecx, dword [esp + 0x48], 0x1ec3
cmp ecx, edi
setg dl
xor ebx, ebx
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
cmp ecx, 0x13f3
mov ecx, dword [esp + 0x48]
setge bl
xor edx, edx
cmp ecx, ebx
setg dl
mov dword [esp + 0x34], edx
cmp dword [esp + 0x14], 0x673eefd7
jg 0x459e6e
mov dword [esp + 0x20], 0x2ec3887d
mov dword [esp + 0x28], 0xfffffffc
mov dword [esp + 0x28], 2
mov dword [esp + 0x14], 0xd
jmp 0x459e5e
mov dword [esp + 0x1c], 0x18fcd197
xor ebx, ebx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
cmp edx, ecx
setl bl
mov dword [esp + 0x28], ebx
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
neg esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
sbb esi, esi
xor edx, edx
neg esi
cmp ecx, esi
setl dl
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
sub edx, 0xfa32
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
cmp ecx, edx
mov ecx, dword [esp + 0x48]
setg bl
xor edx, edx
cmp ebx, ecx
setg dl
mov dword [esp + 0x28], edx
cmp dword [esp + 0x28], 6
jle 0x459e3e
mov edx, edi
cmp dword [esp + 0x1c], eax
jne 0x459e40
mov edx, eax
mov ecx, dword [esp + 0x44]
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setge bl
xor edx, edx
cmp ebx, ecx
setl dl
mov dword [esp + 0x28], edx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x1b
jne 0x459db2
jmp 0x459f32
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x459f32
push eax
push 0x1739
push 0x19fd
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetCharABCWidthsFloatA]
xor eax, eax
jmp 0x459f32
or edx, 0xffffffff
mov dword [esp + 0x1c], edx
mov dword [esp + 0x30], 0x9c1c73b0
mov dword [esp + 0x30], 0xadf851f0
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x10], ecx
jge 0x459ec7
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
xor ebx, ebx
mov dword [esp + 0x30], edi
mov ecx, dword [esp + 0x30]
imul ecx, dword [esp + 0x34]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
cmp ecx, edi
mov ecx, dword [esp + 0x1c]
setg bl
xor edx, edx
cmp ebx, ecx
setl dl
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x2c]
add ecx, 0x843085ad
imul edx, ecx
push 3
pop ecx
cmp ecx, edx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], 0x69ad59e5
mov dword [esp + 0x1c], eax
jmp 0x459f78
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x4c], 7
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jl 0x459f68
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x459f8f
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 8]
mov dword [eax], 0xe
jmp 0x45a374
mov dword [esp + 0x14], 0x925ef2c3
mov eax, 0xe820f90f
mov dword [esp + 0x1c], 0xfffffffc
mov dword [esp + 0x20], 0x5e19f8c5
mov dword [esp + 0x10], 0xd14b4322
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
xor eax, eax
push 3
mov dword [esp + 0x24], 0x46409ef3
mov dword [esp + 0x20], eax
pop edx
jmp 0x45a000
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0xd0], 0x259dba5c
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edx
jl 0x459fed
cmp dword [esp + 0x14], eax
jne 0x45a0a2
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
sub ecx, 0x8b47
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
imul ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x14]
jne 0x45a054
cmp dword [esp + 0x14], eax
jne 0x45a054
mov edx, eax
cmp dword [esp + 0x1c], eax
je 0x45a056
mov edx, edi
mov ecx, dword [esp + 0x14]
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0x14]
setle bl
xor edx, edx
inc ebx
cmp ebx, ecx
mov ecx, dword [esp + 0x14]
setne dl
sub ecx, edx
mov dword [esp + 0x20], ecx
jne 0x45a081
mov ecx, eax
cmp dword [esp + 0x1c], eax
je 0x45a083
mov ecx, edi
mov dword [esp + 0xd8], ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x60], ecx
cmp ecx, edi
jg 0x45a0b5
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x60]
xor ebx, ebx
mov ecx, dword [esp + 0x10]
cmp edx, ecx
setl bl
mov dword [esp + 0x20], ebx
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x10], eax
je 0x45a128
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x45a137
mov ebx, dword [sym.imp.USER32.dll_GetDesktopWindow]
push 0xab2
push 0x1a76
push 0xb5e
push eax
push 0x153b
push 0xced
call ebx
push eax
call esi
push eax
push 0x1bef
push 0x266d
push 0x202c
push 0x147c
call ebx
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_MaskBlt]
jmp 0x45a137
or eax, 0xffffffff
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x2c], 0xfffffffc
lea ecx, [esp + 0x88]
mov dword [esp + 0x20], edi
push edi
call fcn.004113a6
push 3
pop ebx
push ebx
lea ecx, [esp + 0xb0]
call fcn.004113a6
or eax, 0xffffffff
mov dword [esp + 0x28], 0xbb75da2c
xor esi, esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], esi
jmp 0x45a18d
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x88]
mov dword [eax + ecx*4], 0x4215e1ab
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jl 0x45a177
mov dword [esp + 0x14], esi
jmp 0x45a1ab
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0xac]
mov dword [eax + ecx*4], edi
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x45a199
mov dword [esp + 0x14], esi
jmp 0x45a1ca
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0xa0], 2
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x45a1b7
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
cmp ecx, 0xfff8
mov eax, dword [esp + 0x88]
mov dword [eax], ecx
sbb eax, eax
neg eax
xor edx, edx
cmp eax, 0xe9f2
mov eax, dword [esp + 0x28]
setl dl
xor ecx, ecx
cmp eax, edx
setl cl
xor eax, eax
test ecx, ecx
lea ecx, [esp + 0xac]
setg al
sub eax, 4
cmp eax, 0xafd47030
sbb eax, eax
inc eax
neg eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
inc dword [esp + 0xa0]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], esi
call fcn.00411478
lea ecx, [esp + 0x88]
call fcn.00411478
mov dword [esp + 0x14], 0xfffffffc
mov dword [esp + 0x10], 0x10e5e534
mov dword [esp + 0x24], 0xfffffff6
mov dword [esp + 0x20], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x28], 0x9b03be46
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
sub ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp ecx, eax
mov eax, dword [esp + 0x10]
setg dl
xor ecx, ecx
cmp edx, eax
setle cl
xor eax, eax
cmp ecx, 0x48a2b8ea
mov ecx, dword [esp + 0x14]
setl al
sub ecx, eax
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
imul ecx, dword [esp + 0x10]
test ecx, ecx
je 0x45a2cf
mov esi, edi
cmp dword [esp + 0x10], eax
jne 0x45a2d1
mov esi, eax
mov ecx, dword [esp + 0x14]
xor edx, edx
cmp esi, ecx
sete dl
cmp edx, edi
jg 0x45a2e8
cmp dword [esp + 0x14], eax
jne 0x45a2e8
mov edi, eax
mov edx, dword [esp + 0x14]
xor ebx, ebx
mov ecx, dword [esp + 0x14]
imul edx, edi
cmp edx, ecx
setge bl
xor ecx, ecx
or edx, 0xffffffff
cmp ebx, edx
setne cl
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x24], ecx
jg 0x45a366
cmp dword [esp + 0x10], eax
jne 0x45a366
mov dword [esp + 0x20], 8
push 3
mov dword [esp + 0x24], eax
pop edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
jmp 0x45a344
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x10c], 0x6a67606e
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edx
jl 0x45a331
inc dword [esp + 0x20]
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x45a36a
push 0xd0f
call dword [sym.imp.USER32.dll_GetKeyboardType]
jmp 0x45a36a
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
mov dword [eax], 0x23
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret