Function at 0x41a89c
Capabilities:
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x184
push ebx
push esi
push edi
call fcn.00415ee6
xor esi, esi
mov dword [esp + 0x14], 0x55059b8b
inc esi
lea eax, [esp + 0xc0]
mov dword [esp + 0xbc], esi
lea edx, [esp + 0xb0]
mov dword [esp + 0xc0], 0x37ac
lea ecx, [esp + 0xbc]
mov dword [esp + 0xb0], 0x51938d10
push eax
call fcn.00416995
pop ecx
mov dword [esp + 0x78], 7
call fcn.0041a558
mov dword [esp + 0x58], 0x55467101
xor eax, eax
mov dword [esp + 0x24], 0x860b4ffb
mov dword [esp + 0x2c], 0x4f27d270
mov dword [esp + 0x14], 0x4a41637c
mov dword [esp + 0x10], 0xfffffff8
mov dword [esp + 0x38], 0xc655ef1c
mov dword [esp + 0xc], eax
jmp 0x41a948
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x90], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x41a939
push 2
pop edi
mov dword [esp + 0x24], edi
cmp dword [esp + 0x24], eax
jl 0x41a9e6
mov dword [esp + 0x1c], 0x3b28
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + ecx*4 + 0x90]
mov ecx, dword [esp + 0x24]
cmp dword [esp + ecx*4 + 0x90], eax
jne 0x41a993
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + ecx*4 + 0x90]
cmp dword [esp + 0x2c], eax
jne 0x41a993
mov esi, eax
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + ecx*4 + 0x90]
neg ecx
mov dword [esp + 0x14], ecx
je 0x41a9b3
mov ecx, dword [esp + 0x24]
cmp dword [esp + ecx*4 + 0x90], eax
jne 0x41a9c4
mov ecx, dword [esp + 0x24]
cmp dword [esp + ecx*4 + 0x90], eax
jne 0x41a9c4
mov edx, eax
jmp 0x41a9c7
xor edx, edx
inc edx
xor ecx, ecx
cmp esi, edx
push 1
setle cl
sub ecx, dword [esp + 0x20]
mov dword [esp + 0x98], ecx
dec dword [esp + 0x28]
pop esi
jns 0x41a960
mov ecx, dword [esp + 0x90]
cmp dword [esp + 0x14], eax
jne 0x41aa13
cmp dword [esp + 0x10], eax
je 0x41a9fd
mov ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp ecx, esi
setl dl
mov dword [esp + 0x90], edx
mov edx, eax
jmp 0x41aa15
mov edx, esi
xor ecx, ecx
cmp edx, 0x6fbc
setg cl
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x24], eax
je 0x41ab2d
mov dword [esp + 0x28], 0xfffffffe
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], eax
jmp 0x41aa5b
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x138], 0xdd14a140
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x41aa48
mov edx, dword [esp + 0x18]
xor ebx, ebx
mov ecx, dword [esp + 0x10]
cmp ecx, edx
mov ecx, dword [esp + 0x24]
setge bl
cmp ebx, 0xaa7fcf62
sbb edx, edx
xor ebx, ebx
inc edx
cmp ecx, edx
mov ecx, dword [esp + 0x18]
setge bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x24]
setle dl
sub edx, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], edx
xor edx, edx
cmp dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x38]
setne dl
cmp edx, 0xfd6f6066
sbb edx, edx
xor ebx, ebx
inc edx
cmp edx, ecx
mov ecx, dword [esp + 0x28]
setg bl
xor edx, edx
cmp ebx, 3
setne dl
add ecx, 0x4378215c
add edx, ecx
xor ebx, ebx
mov ecx, dword [esp + 0x18]
cmp edx, ecx
mov ecx, dword [esp + 0x2c]
setne bl
xor edx, edx
cmp ebx, ecx
setle dl
mov dword [esp + 0x24], edx
cmp dword [esp + 0x24], 0xc9e48991
jb 0x41aafa
mov edx, esi
cmp dword [esp + 0x10], eax
jne 0x41aafc
mov edx, eax
mov ecx, dword [esp + 0x28]
sub edx, ecx
sub edx, 0x1961266c
cmp dword [esp + 0x14], edx
jg 0x41ab14
cmp dword [esp + 0x18], eax
jne 0x41ab16
mov esi, eax
mov ecx, dword [esp + 0x18]
xor edx, edx
cmp esi, ecx
sete dl
xor esi, esi
mov dword [esp + 0x138], edx
inc esi
jmp 0x41ab5e
mov dword [esp + 0x24], edi
cmp dword [esp + 0x24], eax
jl 0x41ab5e
mov byte [esp + 0x3f], al
cmp byte [esp + 0x3f], 0
je 0x41ab58
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_EndPage]
xor eax, eax
dec dword [esp + 0x24]
jns 0x41ab37
mov dword [esp + 0xdc], 0xcde6bc04
mov dword [esp + 0x38], 0x714a0256
mov dword [esp + 0x1c], 0x276b87d0
mov dword [esp + 0x10], eax
jmp 0x41ab92
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0xc8], 0x951ad386
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x41ab7f
mov dword [esp + 0x10], eax
jmp 0x41abad
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x154], eax
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x41ab9e
dec dword [esp + 0x158]
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x6c], 0x465cd386
call fcn.0041a5fc
push esi
lea ecx, [esp + 0x130]
call fcn.00413c51
mov dword [esp + 0xd4], 0x3995
xor eax, eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], 0x3ea3a722
mov dword [esp + 0xc], eax
jmp 0x41ac0f
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x48], 0x3342eb9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x41abff
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], eax
jl 0x41ad62
push dword [esp + 0x74]
movdqa xmm0, xmmword [0xaa5910]
lea ecx, [esp + 0x174]
push ecx
lea ecx, [esp + 0x168]
mov dword [esp + 0x30], 0xfffffffa
push ecx
push eax
lea ecx, [esp + 0x114]
mov dword [esp + 0x114], eax
movdqu xmmword [esp + 0x170], xmm0
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], eax
call fcn.00415220
mov dword [esp + 0x28], 0xd065835a
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0xc], 0
jmp 0x41ac9f
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x9c], 0xc511ec1f
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41ac8c
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0x48]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x48]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x48]
cmp eax, 0x70b1
setne cl
cmp ecx, 0xf928
jne 0x41acd7
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x48]
mov eax, dword [esp + 0x4c]
xor edx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x48]
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + eax*4 + 0x48]
mov eax, dword [esp + 0x48]
cmp ecx, eax
sete dl
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x104]
mov dword [esp + 0x9c], esi
mov dword [eax + 0xc], esi
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x48]
inc eax
je 0x41ad2c
cmp dword [esp + 0x9c], 0
je 0x41ad2c
mov ecx, esi
jmp 0x41ad2e
xor ecx, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x48], ecx
mov eax, dword [esp + 0x18]
sub ecx, eax
inc ecx
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x104]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], eax
call fcn.00413d23
dec dword [esp + 0x18]
push 0
pop eax
jns 0x41ac23
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x18], ecx
push 0xfffffffffffffffd
pop ebx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xf8], 0xfff9
mov dword [esp + 0x100], 0x26129dc0
mov dword [esp + 0x54], eax
jmp 0x41adaa
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x12c]
mov dword [ecx + edx*4], 0xfffffff8
inc dword [esp + 0x54]
cmp dword [esp + 0x54], esi
jl 0x41ad94
mov dword [esp + 0xc], ebx
mov dword [esp + 0x7c], 0xf6f97812
mov dword [esp + 0x2c], 0xea21
mov dword [esp + 0x14], 0x3f5cfeb4
mov dword [esp + 0xc], eax
jmp 0x41ade1
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xa0], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x41add2
xor ebx, ebx
mov dword [esp + 0xc], 0xfffffffe
mov ecx, dword [esp + 0xc]
cmp ecx, 0x91ba
mov ecx, dword [esp + 0x7c]
setg bl
xor edx, edx
cmp ebx, ecx
mov ecx, 0xf2f34e40
push 4
setge dl
cmp ecx, edx
pop ebx
sbb ecx, ecx
inc ecx
imul ecx, ecx, 0x8ffca
test ecx, ecx
je 0x41ae59
mov dword [esp + 0x28], 0xfffffffb
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
cmp ecx, edi
mov ecx, dword [esp + 0x2c]
setne bl
xor edx, edx
cmp ebx, ecx
push 4
setne dl
mov dword [esp + 0x18], edx
pop ebx
jmp 0x41afa3
mov dword [esp + 0x10], 0x3ede
mov dword [esp + 0x34], 0x4d3380d4
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x34], eax
jne 0x41ae8f
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0xa0], eax
je 0x41af62
mov dword [esp + 0xc], eax
jmp 0x41aeb9
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x110], 0xfffffff6
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x41aea6
cmp dword [esp + 0x11c], eax
jne 0x41aefb
mov ecx, dword [esp + 0x11c]
cmp ecx, dword [esp + 0xa0]
jle 0x41aee0
mov ecx, eax
cmp dword [esp + 0x34], eax
je 0x41aee2
mov ecx, esi
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x14], eax
je 0x41aef4
mov ecx, esi
cmp dword [esp + 0x7c], eax
jne 0x41aef6
mov ecx, eax
dec ecx
mov ecx, eax
je 0x41aefd
mov ecx, esi
cmp ecx, 9
sbb ecx, ecx
neg ecx
sub ecx, 0xc87c
je 0x41af13
mov ecx, dword [esp + 0x11c]
mov ecx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x110]
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x34]
neg esi
sbb esi, esi
xor edx, edx
neg esi
neg esi
cmp esi, ecx
mov ecx, dword [esp + 0x110]
setne dl
sub edx, ecx
jne 0x41af57
cmp dword [esp + 0xa0], eax
jne 0x41af57
xor esi, esi
mov ecx, eax
inc esi
jmp 0x41af5c
xor esi, esi
inc esi
mov ecx, esi
mov dword [esp + 0x34], ecx
jmp 0x41afa3
mov dword [esp + 0xac], 0x266a
mov dword [esp + 0x34], eax
jmp 0x41af80
cmp dword [esp + 0xac], eax
jne 0x41af87
inc dword [esp + 0x34]
cmp dword [esp + 0x34], 0xa
jl 0x41af73
mov dword [esp + 0x10], eax
jmp 0x41af9c
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x7c], ecx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 0x23
jg 0x41af8d
mov dword [esp + 0x6c], esi
xor edx, edx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x58]
cmp ecx, 0xfe35
setge dl
cmp edx, 0x57b6
jne 0x41b3a2
mov dword [esp + 0x8c], 0x3780d777
lea ecx, [esp + 0x120]
push 3
call fcn.00413c51
push ebx
lea ecx, [esp + 0x14c]
call fcn.00413c51
xor eax, eax
mov dword [esp + 0x5c], eax
jmp 0x41b00a
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x148]
mov dword [ecx + edx*4], ebx
inc dword [esp + 0x5c]
cmp dword [esp + 0x5c], ebx
jl 0x41aff8
mov byte [esp + 0x3e], al
cmp byte [esp + 0x3e], al
je 0x41b02c
push eax
push 0x1a3e
push eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor eax, eax
mov byte [esp + 0x3c], al
cmp byte [esp + 0x3c], 0
je 0x41b042
push 0x681
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
lea ecx, [esp + 0x148]
call fcn.00413d23
xor eax, eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
push 0xfffffffffffffffc
mov dword [esp + 0x30], 6
pop edi
mov dword [esp + 0x18], edi
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x41b08c
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x64], 0xe836ea0e
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x41b07c
mov ecx, dword [esp + 0x14]
xor ebx, ebx
cmp ecx, esi
mov ecx, dword [esp + 0x10]
setg bl
xor edx, edx
cmp ebx, ecx
setle dl
cmp edx, dword [esp + 0x14]
je 0x41b0b6
mov edx, eax
cmp dword [esp + 0x10], eax
je 0x41b0b8
mov edx, esi
mov ecx, 0x4087a912
sub ecx, edx
push 0xfffffffffffffff7
pop edx
cmp edx, ecx
sbb ecx, ecx
neg ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x14]
je 0x41b0de
cmp dword [esp + 0x10], eax
jne 0x41b0de
mov esi, eax
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp esi, ecx
setne dl
sub edx, dword [esp + 0x18]
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
cmp edx, ecx
mov ecx, dword [esp + 0x14]
setge bl
xor edx, edx
cmp ebx, ecx
setle dl
xor ebx, ebx
inc ebx
cmp edx, dword [esp + 0x14]
je 0x41b1ed
mov dword [esp + 0x14], ebx
push 2
pop esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], eax
jl 0x41b28d
mov dword [esp + 0x28], 0xe785e8a7
mov dword [esp + 0x1c], 0xf4a3ca5a
mov dword [esp + 0x10], eax
jmp 0x41b181
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + ecx*4 + 0x64]
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x64], edx
mov byte [esp + 0x23], al
cmp byte [esp + 0x23], 0
je 0x41b17d
push eax
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
xor eax, eax
inc dword [esp + 0x10]
cmp dword [esp + 0x10], eax
jle 0x41b158
cmp dword [esp + 0x14], esi
je 0x41b1a1
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + ecx*4 + 0x64]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + ecx*4 + 0x64]
cmp ecx, dword [esp + 0x64]
jle 0x41b1cb
mov ecx, eax
cmp dword [esp + 0x1c], eax
je 0x41b1cd
mov ecx, ebx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0xc], ecx
dec dword [esp + 0x18]
jns 0x41b142
jmp 0x41b28d
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], 0x3ae864ea
mov dword [esp + 0x14], eax
jmp 0x41b212
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x140], 0x2fb88b70
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x41b1ff
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esp + 0x2c]
je 0x41b26a
mov ecx, dword [esp + 0x10]
add ecx, ecx
dec ecx
neg ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
cmp ecx, 0xffffffff
mov ecx, dword [esp + 0x2c]
setge bl
xor edx, edx
cmp ebx, ecx
setl dl
mov dword [esp + 0x14], edx
cmp dword [esp + 0x14], 0x702
jl 0x41b25d
cmp dword [esp + 0x14], eax
jne 0x41b25d
xor ebx, ebx
mov ecx, eax
inc ebx
jmp 0x41b262
xor ebx, ebx
inc ebx
mov ecx, ebx
cmp ecx, dword [esp + 0xc]
mov ecx, ebx
jle 0x41b26c
mov ecx, eax
mov dword [esp + 0x144], ecx
mov byte [esp + 0x3d], al
cmp byte [esp + 0x3d], al
je 0x41b28d
push eax
push eax
push 0x17d5
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
xor eax, eax
mov dword [esp + 0x60], eax
jmp 0x41b2a9
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x120]
mov dword [ecx + edx*4], 0x70b3783e
inc dword [esp + 0x60]
cmp dword [esp + 0x60], 3
jl 0x41b293
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0x19
jle 0x41b38e
mov esi, dword [esp + 0x120]
call fcn.0041a7a6
mov dword [esp + 0xd0], 0x2699
mov dword [esp + 0xa8], 0x5e691445
mov dword [esp + 0xc4], 0xffffffff
mov dword [esp + 0xfc], 0x24039b64
mov dword [esp + 0xe0], 0x42b9193c
mov byte [esp + 0x23], 0
cmp byte [esp + 0x23], 0
je 0x41b316
push 0
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea edx, [esp + 0xe0]
lea ecx, [esp + 0xfc]
call fcn.0041a426
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x58], 0
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x78]
imul eax, ecx
mov dword [esi + 4], ecx
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xa8]
mov eax, dword [esp + 0xd0]
mov eax, dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
mov eax, dword [esp + 0x78]
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xc4], eax
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x19
jg 0x41b2c6
lea ecx, [esp + 0x120]
call fcn.00413d23
xor esi, esi
inc esi
jmp 0x41b6a6
push dword [esp + 0x74]
movdqa xmm0, xmmword [0xaa5860]
lea ecx, [esp + 0x184]
push ecx
lea ecx, [esp + 0x178]
mov dword [esp + 0x30], 0x44ad72d7
push ecx
mov dword [esp + 0x28], 0xa278c007
lea ecx, [esp + 0xf4]
mov dword [esp + 0x28], 0x2189f42c
mov dword [esp + 0x28], 0xd65f4e26
push eax
movdqu xmmword [esp + 0x180], xmm0
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], eax
call fcn.00415220
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x41b421
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x44], 0x2a4f
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x41b411
mov ecx, dword [esp + 0x44]
mov edx, 0x98e64e6d
mov dword [esp + 0x28], ecx
xor ebx, ebx
mov ecx, dword [esp + 0x44]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
sub edx, ecx
imul edx, dword [esp + 0x44]
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
sub edx, ecx
mov ecx, dword [esp + 0x44]
cmp ecx, edx
setle bl
xor ecx, ecx
cmp ebx, 0xdac7
setl cl
mov dword [esp + 0x1c], ecx
cmp dword [esp + 0x1c], eax
je 0x41b481
mov ecx, esi
cmp dword [esp + 0x44], eax
jne 0x41b483
mov ecx, eax
mov eax, dword [esp + 0xe8]
mov dword [eax], ecx
lea ecx, [esp + 0xe8]
call fcn.00413d23
mov dword [esp + 0xe4], 0xcc19ab5
xor eax, eax
mov dword [esp + 0x74], edi
push 0xfffffffffffffffc
pop edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x40], 0x49cec79e
mov dword [esp + 0x68], 0x16501874
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
neg edx
sbb edx, edx
xor ebx, ebx
neg edx
cmp edx, ecx
mov ecx, dword [esp + 0x30]
mov edx, 0x8e92eda8
sete bl
sub ebx, ecx
mov ecx, dword [esp + 0x30]
add ecx, ebx
cmp edx, ecx
mov edx, dword [esp + 0x30]
sbb ecx, ecx
inc ecx
sub edx, ecx
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x30]
cmp edx, ecx
setg bl
cmp ebx, dword [esp + 0x30]
jge 0x41b523
mov edx, eax
cmp dword [esp + 0x30], eax
je 0x41b525
mov edx, esi
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x40]
sub ecx, 2
cmp ecx, edx
jg 0x41b540
mov ecx, eax
cmp dword [esp + 0x40], eax
je 0x41b542
mov ecx, esi
cmp ecx, dword [esp + 0x30]
jle 0x41b550
mov edx, eax
cmp dword [esp + 0x40], eax
je 0x41b552
mov edx, esi
mov ecx, dword [esp + 0x30]
xor ebx, ebx
add edx, 3
cmp edx, ecx
setne bl
mov dword [esp + 0x50], ebx
cmp dword [esp + 0x50], eax
je 0x41b59f
mov dword [esp + 0xf4], 0xc2a41b87
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x68], ecx
cmp dword [esp + 0x68], eax
jne 0x41b58e
mov eax, dword [esp + 0xf4]
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
jmp 0x41b64b
mov dword [esp + 0x38], esi
mov dword [esp + 0x14], eax
jmp 0x41b5b5
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x70], esi
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x41b5a9
mov edx, dword [esp + 0x70]
xor ebx, ebx
mov ecx, dword [esp + 0x30]
add edx, 0x4fbfd527
cmp ecx, edx
mov ecx, dword [esp + 0x70]
setne bl
neg ecx
cmp ecx, ebx
jg 0x41b5e2
mov ecx, eax
cmp dword [esp + 0xc], eax
je 0x41b5e4
mov ecx, esi
cmp ecx, dword [esp + 0xc]
jne 0x41b5f0
cmp dword [esp + 0x70], eax
jne 0x41b5f8
mov edx, eax
cmp dword [esp + 0x30], eax
je 0x41b5fa
mov edx, esi
mov ecx, dword [esp + 0x70]
add ecx, 0xecce
add ecx, edx
mov dword [esp + 0xc], ecx
cmp dword [esp + 0xc], 0x9991
jg 0x41b61c
mov ecx, esi
cmp dword [esp + 0x38], eax
jne 0x41b61e
mov ecx, eax
mov dword [esp + 0x40], ecx
cmp dword [esp + 0x40], eax
je 0x41b630
mov ecx, esi
cmp dword [esp + 0x30], eax
jne 0x41b632
mov ecx, eax
mov dword [esp + 0x50], ecx
mov byte [esp + 0x23], al
cmp byte [esp + 0x23], al
je 0x41b64b
push 0xc51
call dword [sym.imp.USER32.dll_GetKeyboardType]
lea eax, [esp + 0xcc]
push eax
lea eax, [esp + 0x104]
push eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0xe0]
push eax
lea eax, [esp + 0x108]
push eax
lea eax, [esp + 0x80]
push eax
lea eax, [esp + 0x144]
push eax
lea eax, [esp + 0xf8]
push eax
lea eax, [esp + 0x104]
push eax
lea edx, [esp + 0x7c]
lea ecx, [esp + 0x98]
call fcn.0041a34c
add esp, 0x24
lea ecx, [esp + 0x12c]
call fcn.00413d23
push dword [esp + 0x74]
movdqa xmm0, xmmword [0xaa5920]
lea ecx, [esp + 0x194]
push ecx
xor eax, eax
lea ecx, [esp + 0x188]
push ecx
push eax
lea ecx, [esp + 0x90]
mov dword [esp + 0x90], eax
movdqu xmmword [esp + 0x190], xmm0
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
call fcn.00415220
mov dword [esp + 0x10], 2
xor eax, eax
mov dword [esp + 0x1c], 0xfffffffb
mov dword [esp + 0x1c], eax
mov dword [esp + 0x1c], 0x33d4965d
mov dword [esp + 0x28], edi
mov dword [esp + 0x14], eax
jmp 0x41b732
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0xb4], esi
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 2
jl 0x41b723
mov dword [esp + 0x10], 3
cmp dword [esp + 0x10], eax
jl 0x41b907
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], 0x318b4743
mov dword [esp + 0x2c], 0xd5f49dcb
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], 3
jg 0x41b8fd
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], 0x92d14b43
mov dword [esp + 0xc], 0x92ad5889
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x80]
cmp dword [ecx + edx*4], eax
je 0x41b81d
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x80]
mov dword [ecx + edx*4], esi
mov ecx, dword [esp + 0x10]
sub ecx, 0x60be6286
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x1c]
sub ecx, 2
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
imul ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
sub esi, ecx
mov ecx, dword [esp + 0x18]
cmp esi, ecx
setge dl
xor esi, esi
mov dword [esp + 0x1c], edx
inc esi
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
inc ecx
imul ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x10]
cmp ecx, 0x30906344
jl 0x41b81d
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
xor ebx, ebx
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x14]
mov dword [esp + 0xb8], edx
mov ecx, dword [esp + 0x10]
cmp edx, ecx
mov ecx, dword [esp + 0x10]
sete bl
inc ebx
neg ebx
sbb ebx, ebx
xor edx, edx
inc ebx
cmp ebx, ecx
setle dl
xor ebx, ebx
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x2c]
cmp dword [edx + esi*4], ecx
mov ecx, dword [esp + 0x14]
setne bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x80]
setge dl
cmp edx, dword [ecx + edi*4]
jg 0x41b886
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0xb8]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x80]
push 1
mov ecx, dword [ecx + edx*4]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0xb8]
imul ecx, dword [esp + 0x10]
cmp ecx, 1
sbb ecx, ecx
neg ecx
sub ecx, 0x26da
add ecx, dword [edx + 4]
mov edx, dword [esp + 0x10]
neg ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
add edx, ecx
mov ecx, dword [esp + 0x2c]
cmp edx, ecx
mov ecx, dword [esp + 0x84]
setne bl
mov dword [ecx + esi*4], ebx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 3
pop esi
jle 0x41b779
dec dword [esp + 0x10]
jns 0x41b74b
lea ecx, [esp + 0x80]
call fcn.00413d23
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret