Function at 0x401276
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x19c
push ebx
push esi
push edi
push 3
mov dword [esp + 0x38], edx
xor ebx, ebx
pop edx
xor eax, eax
mov byte [esp + 0x30], cl
inc ebx
or edi, 0xffffffff
push 2
pop esi
cmp byte [ebp + 0xc], al
jne 0x401365
mov dword [esp + 0x24], 0xfffffffe
mov ecx, 0x4ffd8143
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x24], 0xfde2bbef
mov dword [esp + 0x24], 0x88999d94
mov dword [esp + 0x24], edi
mov dword [esp + 0x24], 0x2a831d26
mov dword [esp + 0x24], 0x85ce96b7
mov dword [esp + 0x24], 0xfffffff9
mov dword [esp + 0x24], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x24], 0x440874b2
mov dword [esp + 0x24], 0x5f07c70a
mov dword [esp + 0x24], 0x73ee7637
mov dword [esp + 0x24], ebx
mov dword [esp + 0x160], ecx
mov dword [esp + 0x164], ecx
mov dword [esp + 0x168], ecx
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x401342
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x118], 0x6dd1
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x40132f
mov dword [esp + 0x11c], 0xfffffff9
dec dword [esp + 0x20]
mov dword [esp + 0x34], 0x13eb
mov byte [esp + 0x30], bl
jmp 0x40136b
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 8], ecx
mov dword [esp + 0x1c], 0x5596960f
mov dword [esp + 0x18], 0x924c0001
mov dword [esp + 0x10], eax
jmp 0x401390
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x12c], edi
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edx
jl 0x401381
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [esp + 0x1c], eax
jmp 0x401485
mov dword [esp + 0xc], 0x7fa5c62e
mov dword [esp + 0xc], eax
jmp 0x40144c
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + ecx*4 + 0x12c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x18], esi
cmp dword [esp + 0x18], eax
jl 0x401448
mov dword [esp + 0x10], eax
jmp 0x4013e8
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x94], 0xba20b95a
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edx
jl 0x4013d5
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x401419
push eax
push 0x237c
push 0x2332
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetCharABCWidthsFloatA]
push 3
xor eax, eax
pop edx
mov dword [esp + 0x94], esi
cmp dword [esp + 0x94], eax
jl 0x401442
mov ecx, dword [esp + 0x94]
cmp dword [esp + ecx*4 + 0x12c], eax
jne 0x401442
dec dword [esp + 0x94]
jns 0x401429
dec dword [esp + 0x18]
jns 0x4013cf
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jle 0x4013b6
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x40147e
push 0x220d
push 0x2410
push eax
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.USER32.dll_DrawEdge]
xor eax, eax
inc dword [esp + 0x1c]
push 3
pop edx
cmp dword [esp + 0x1c], esi
jle 0x4013a5
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x4014a3
call edi
push eax
call dword [sym.imp.USER32.dll_IsWindow]
mov dword [esp + 0x20], 0xfffffffe
lea ecx, [esp + 0x6c]
mov dword [esp + 0x2c], 0xd0289a69
mov dword [esp + 0x38], 0x19570a50
mov dword [esp + 0x24], 0x1aae4b9
push ebx
call fcn.0040809e
mov dword [esp + 0x24], 0x4272
lea ecx, [esp + 0x17c]
push 4
call fcn.0040809e
push ebx
lea ecx, [esp + 0xd4]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x401508
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x6c]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x4014f8
mov dword [esp + 0xc], eax
jmp 0x40152a
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x17c]
mov dword [ecx + edx*4], 0xed1e12aa
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x401514
mov dword [esp + 0xc], eax
jmp 0x401549
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xd0]
mov dword [ecx + edx*4], ebx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x401537
mov ecx, dword [esp + 0x38]
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xd0]
dec dword [ecx]
cmp dword [esp + 0x2c], eax
jg 0x401574
mov ecx, dword [esp + 0x6c]
cmp dword [ecx], eax
mov ecx, ebx
jne 0x401576
mov ecx, eax
mov eax, dword [esp + 0x20]
xor edx, edx
sub ecx, eax
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax]
mov eax, dword [esp + 0x2c]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x6c]
setl cl
mov dword [eax], ecx
lea ecx, [esp + 0xd0]
call fcn.00408170
lea ecx, [esp + 0x17c]
call fcn.00408170
lea ecx, [esp + 0x6c]
call fcn.00408170
or edx, 0xffffffff
xor eax, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 6
mov dword [esp + 0x10], eax
jmp 0x4015e0
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x44], edx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x4015d4
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], 0x17
jl 0x401808
mov dword [esp + 0xc], 0xdbeccce1
lea ecx, [esp + 0xb8]
mov dword [esp + 0x20], 0xad46d232
push ebx
call fcn.0040809e
mov dword [esp + 0x38], 0x6ab81d4b
mov dword [esp + 0x10], 0
jmp 0x40163b
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xb8]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x401625
mov dword [esp + 0xc], 0
cmp dword [esp + 0xc], esi
jg 0x4017b5
push ebx
lea ecx, [esp + 0x7c]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], eax
jmp 0x401680
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x78]
mov dword [ecx + edx*4], 0x3f9e923e
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x40166d
mov ecx, dword [esp + 0x78]
mov dword [ecx], eax
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x4016aa
push 0x6e0
push 0x258
push eax
call dword [sym.imp.USER32.dll_OffsetRect]
xor eax, eax
mov ecx, dword [esp + 0x78]
inc dword [ecx]
cmp dword [ecx], esi
jle 0x40168c
mov ecx, dword [esp + 0xc]
cmp dword [esp + ecx*4 + 0x44], eax
je 0x401745
cmp dword [esp + 0x18], eax
jne 0x4016cc
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x78]
sub edx, 0x250042
neg edx
sbb edx, edx
inc edx
mov dword [ecx], edx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + ecx*4 + 0x44]
mov ecx, dword [esp + 0x44]
mov ecx, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xb8]
mov dword [ecx], edx
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + ecx*4 + 0x44]
xor ecx, ecx
cmp edx, 0xfffffff9
sete cl
xor edx, edx
cmp ecx, esi
setle dl
sub edx, 8
cmp edx, dword [esp + 0x28]
jl 0x401745
mov ecx, dword [esp + 0xb8]
cmp dword [ecx], eax
jne 0x401747
mov ebx, eax
mov eax, dword [esp + 0x4c]
xor ecx, ecx
cmp ebx, eax
mov eax, dword [esp + 0x44]
setne cl
xor ebx, ebx
cmp ecx, eax
mov eax, dword [esp + 0xc]
sete bl
xor edx, edx
xor esi, esi
mov eax, dword [esp + eax*4 + 0x44]
inc esi
sub ebx, eax
mov eax, dword [esp + 0x2c]
cmp ebx, esi
setl dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
imul ecx, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
cmp eax, ecx
lea ecx, [esp + 0x78]
setl dl
mov dword [esp + 0x38], edx
call fcn.00408170
inc dword [esp + 0xc]
push 2
pop esi
push 1
pop ebx
cmp dword [esp + 0xc], esi
jle 0x401653
mov byte [esp + 0x17], 0
cmp byte [esp + 0x17], 0
je 0x4017ea
push 0x242f
push 0xabc
push 0xa6
push 0x2519
push 0x1913
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_PatBlt]
lea ecx, [esp + 0xb8]
call fcn.00408170
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 0x17
jge 0x4015f6
or edx, 0xffffffff
mov dword [esp + 0x1c], 0x9ad59e57
lea ecx, [esp + 0x100]
mov dword [esp + 0x24], 6
mov dword [esp + 0x24], edx
mov dword [esp + 0x24], 0x1b66bafc
mov dword [esp + 0x24], 0xaad8530d
mov dword [esp + 0x24], 0x36173948
push ebx
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x20], 0x206dd2cc
mov dword [esp + 0xc], eax
jmp 0x401860
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xdc], ebx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x401851
mov dword [esp + 0xc], eax
jmp 0x401883
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x100]
mov dword [ecx + edx*4], 0xfffffffa
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x40186d
mov dword [esp + 0x1c], esi
cmp dword [esp + 0x1c], eax
jl 0x4018b6
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + eax*4 + 0xdc]
mov eax, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0xdc], ecx
mov eax, dword [esp + 0xdc]
dec dword [esp + 0x1c]
jns 0x401893
dec dword [esp + 0x20]
lea ecx, [esp + 0x100]
call fcn.00408170
mov dword [esp + 0x18], ebx
lea ecx, [esp + 0x10c]
push 3
call fcn.0040809e
push 3
lea ecx, [esp + 0x174]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0xc], eax
jmp 0x401908
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10c]
mov dword [ecx + edx*4], 0xb108f825
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x4018f2
mov dword [esp + 0xc], eax
jmp 0x401927
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x170]
mov dword [ecx + edx*4], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x401915
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], al
je 0x401941
push eax
call dword [sym.imp.GDI32.dll_CreatePenIndirect]
xor eax, eax
mov dword [esp + 0x18], eax
jmp 0x401a1e
mov dword [esp + 0x1c], 0xfffffff8
mov dword [esp + 0x24], 0xfffffff6
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], esi
jg 0x401a1a
push 4
lea ecx, [esp + 0xf8]
call fcn.0040809e
mov dword [esp + 0x10], esi
mov dword [esp + 0x10], 0
jmp 0x401996
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xf4]
mov dword [eax + ecx*4], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x401984
mov esi, dword [esp + 0xf4]
mov dword [esi + 4], 2
mov dword [esp + 0x38], 0xfffffff6
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x38], ebx
mov byte [esp + 0x17], 0
cmp byte [esp + 0x17], 0
je 0x4019d6
push 0
call edi
push eax
call dword [sym.imp.USER32.dll_GetWindowPlacement]
dec dword [esi + 4]
jns 0x4019ab
push 2
mov dword [esp + 0x14], 0
pop esi
jmp 0x4019f8
mov dword [esp + 0x20], 8
dec dword [esp + 0x20]
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jle 0x4019e8
lea ecx, [esp + 0xf4]
call fcn.00408170
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jle 0x401968
xor eax, eax
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 3
jg 0x40194a
lea ecx, [esp + 0x170]
call fcn.00408170
lea ecx, [esp + 0x10c]
call fcn.00408170
xor eax, eax
cmp byte [esp + 0x30], al
je 0x401f86
push dword [esp + 0x24]
movdqa xmm0, xmmword [0xa6be50]
lea ecx, [esp + 0x19c]
push ecx
lea ecx, [esp + 0x190]
mov dword [esp + 0x14], ebx
push ecx
push eax
lea ecx, [esp + 0x98]
mov dword [esp + 0x98], eax
movdqu xmmword [esp + 0x198], xmm0
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
call fcn.00408ca2
mov dword [esp + 0x20], 7
mov dword [esp + 0x10], 0
jmp 0x401aba
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x50], 0x9942796a
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x401aaa
mov dword [esp + 0xc], 0
cmp dword [esp + 0xc], 0xffffffeb
je 0x401cac
mov edi, dword [esp + 0x88]
push 4
lea ecx, [esp + 0xc8]
call fcn.0040809e
mov dword [esp + 0x18], 0xef5d870a
xor eax, eax
mov dword [esp + 0x1c], 0x8018d9dc
mov dword [esp + 0x10], eax
jmp 0x401b12
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc4]
mov dword [ecx + edx*4], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x401b00
mov ecx, dword [esp + 0xc]
xor edx, edx
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
sub ecx, dword [esp + 0xc]
mov dword [edi + 4], esi
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
imul ecx, dword [esp + 0xc]
cmp esi, ecx
mov ecx, dword [esp + 0xc]
setl dl
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0xc4]
setge bl
xor edx, edx
cmp ebx, dword [ecx]
setle dl
mov dword [esp + 0x1c], edx
cmp dword [esp + 0x1c], eax
jne 0x401bec
mov dword [esp + 0x20], 0xb56411d7
xor ebx, ebx
inc ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], ebx
push 2
mov dword [esp + 0x2c], 0x74643a64
mov dword [esp + 0x14], eax
pop esi
jmp 0x401ba6
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x144], 0x43ec3e1b
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x401b93
cmp dword [esp + 0x20], eax
je 0x401bcd
dec dword [esp + 0x28]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x144]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
cmp ebx, eax
sbb eax, eax
neg eax
mov dword [esp + 0x1c], eax
jmp 0x401c91
mov dword [esp + 0x20], 0xe63b6910
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x34], 7
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x54]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, 0x7bb3
setne cl
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0x18]
jg 0x401c3a
cmp dword [esp + 0x20], eax
je 0x401c3a
xor ebx, ebx
inc ebx
mov dword [esp + 0x50], ebx
jmp 0x401c4e
mov ecx, dword [esp + 0xc4]
xor ebx, ebx
inc ebx
mov dword [esp + 0x50], eax
mov edx, eax
cmp dword [ecx], eax
je 0x401c50
mov edx, ebx
mov ecx, dword [esp + 0x1c]
imul ecx, edx
sub ecx, 0xde33
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x34], ecx
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], al
je 0x401c8e
push 0x147f
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push 2
pop esi
lea ecx, [esp + 0xc4]
call fcn.00408170
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xffffffeb
jne 0x401ada
mov dword [esp + 0xc], 0xc
jmp 0x401cc2
mov dword [esp + 0x50], 0
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xfffffffa
jge 0x401cb6
lea ecx, [esp + 0x88]
call fcn.00408170
mov dword [esp + 0x1c], 0x324ec2e0
mov dword [esp + 0x24], 0xfff9
mov dword [esp + 0x24], 0x2e46a6f
push 0xffffffffffffffe7
mov dword [esp + 0x20], 5
pop edi
cmp dword [esp + 0x1c], edi
jl 0x401dbd
or ecx, 0xffffffff
mov dword [esp + 0x10], ecx
mov dword [esp + 0x10], 0
jmp 0x401d22
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xac], ecx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x401d13
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], edi
jg 0x401daf
push dword [esp + 0xac]
movdqa xmm0, xmmword [0xa6be80]
lea eax, [esp + 0x1ac]
and dword [esp + 0xa4], 0
lea ecx, [esp + 0xa4]
and dword [esp + 0xa8], 0
and dword [esp + 0xac], 0
push eax
lea eax, [esp + 0x1a0]
push eax
push 0
movdqu xmmword [esp + 0x1a8], xmm0
call fcn.00408ca2
mov eax, dword [esp + 0xa0]
lea ecx, [esp + 0xa0]
mov dword [esp + 0x24], ebx
mov dword [eax + 8], 0xfffffff3
call fcn.00408170
dec dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jle 0x401d36
or ecx, 0xffffffff
dec dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jge 0x401d05
xor eax, eax
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], al
je 0x401de6
push eax
push 0x602
push 0x1438
push eax
push 0x906
push 0x2016
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push 3
lea ecx, [esp + 0xec]
call fcn.0040809e
push 0xfffffffffffffff9
pop ecx
mov dword [esp + 0x10], ecx
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0xc], eax
jmp 0x401e25
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xe8]
mov dword [ecx + edx*4], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x401e13
mov dword [esp + 0xc], eax
jmp 0x401e42
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x64], 0x1c71bc7d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x401e32
mov ecx, dword [esp + 0x64]
mov edx, ebx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
inc dword [esp + 0x64]
test ecx, ecx
cmovne edx, eax
xor ecx, ecx
test edx, edx
sete cl
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x28], eax
je 0x401ebe
mov dword [esp + 0x1c], 0xae4f
mov dword [esp + 0x34], ebx
cmp dword [esp + 0x1c], eax
je 0x401e86
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
cmp ecx, eax
setge dl
mov dword [esp + 0x2c], edx
jmp 0x401f6f
mov dword [esp + 0x18], ebx
or edi, 0xffffffff
mov dword [esp + 0x20], edi
xor ebx, ebx
mov ecx, dword [esp + 0x18]
cmp ecx, 0x13afc
mov ecx, dword [esp + 0x18]
setne bl
xor edx, edx
cmp ebx, ecx
setg dl
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x18]
imul ecx, dword [esp + 0x10]
add ecx, dword [esp + 0x18]
je 0x401f01
cmp dword [esp + 0x18], eax
je 0x401f01
xor esi, esi
inc esi
jmp 0x401f03
mov esi, eax
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp eax, esi
mov eax, dword [esp + 0xe8]
setne cl
xor edx, edx
cmp ecx, 0x7c1f4b9
mov ecx, dword [esp + 0x64]
setle dl
sub edx, dword [eax + 8]
mov eax, dword [esp + 0x34]
neg edx
sbb edx, edx
inc edx
imul ecx, edx
xor edx, edx
cmp eax, 0x46aa1dd
setge dl
sub edx, ecx
neg edx
sbb edx, edx
inc edx
sub edx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp edi, edx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp eax, ecx
mov eax, dword [esp + 0x18]
setge dl
xor ecx, ecx
cmp edx, eax
setge cl
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
lea ecx, [esp + 0xe8]
call fcn.00408170
mov eax, dword [ebp + 8]
add dword [eax], 0x11
jmp 0x402482
mov dword [esp + 0x1c], 0x9dada439
mov dword [esp + 0x10], eax
jmp 0x401fa3
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x120], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 3
jl 0x401f94
mov dword [esp + 0x1c], eax
jmp 0x401fce
mov ecx, dword [esp + 0x1c]
cmp dword [esp + ecx*4 + 0x120], eax
jne 0x401fd4
mov ecx, dword [esp + 0x1c]
cmp dword [esp + ecx*4 + 0x120], eax
jne 0x401fd4
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jle 0x401fb0
mov dword [esp + 0xc], 6
mov dword [esp + 0x28], 0x3cf68729
mov dword [esp + 0x2c], 0xfffffff6
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], eax
jmp 0x402006
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0x3c], 0x7643
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x401ff6
mov dword [esp + 0x18], eax
jmp 0x402025
mov ecx, dword [esp + 0x18]
mov dword [esp + ecx*4 + 0xb0], 0x3268
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jl 0x402012
cmp dword [esp + 0xc], eax
jne 0x402085
mov ecx, dword [esp + 0xc]
cmp dword [esp + 0xc], 0x3411
jge 0x402047
mov edx, ebx
cmp dword [esp + 0xc], eax
jne 0x402049
mov edx, eax
mov ecx, dword [esp + 0xc]
add ecx, edx
cmp ecx, dword [esp + 0xc]
je 0x40205b
cmp dword [esp + 0xc], eax
jne 0x40205d
mov ebx, eax
mov ecx, dword [esp + 0xc]
lea edx, [ebx + 0x6173]
xor ebx, ebx
cmp edx, ecx
setl bl
mov dword [esp + 0xc], ebx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0xc]
sub edx, ecx
jne 0x402082
mov ebx, eax
jmp 0x402085
xor ebx, ebx
inc ebx
xor ecx, ecx
cmp ecx, ebx
mov ecx, dword [esp + 0x40]
sbb edx, edx
xor ebx, ebx
neg edx
cmp edx, ecx
setg bl
xor edi, edi
xor edx, edx
inc edi
cmp ebx, edi
setl dl
xor ecx, ecx
cmp edx, 6
setge cl
cmp ecx, edi
mov ecx, dword [esp + 0x40]
sbb esi, esi
xor edx, edx
neg esi
cmp esi, ecx
setl dl
mov dword [esp + 0x28], edx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x2c], eax
jne 0x4020f7
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
sub esi, 0x8317
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setne dl
add edx, 0x36042c8c
cmp dword [esp + 0x3c], edx
jge 0x4020f7
mov ecx, dword [esp + 0x40]
inc dword [esp + 0xb0]
xor edx, edx
mov esi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x40]
cmp ecx, edi
mov ecx, dword [esp + 0xc]
setg dl
inc ecx
add ecx, edx
xor edx, edx
cmp esi, ecx
push 2
setg dl
sub edx, dword [esp + 0x44]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x150]
mov dword [esp + 0x28], 0xf75d
mov dword [esp + 0x28], eax
call fcn.0040809e
push 2
lea ecx, [esp + 0x13c]
call fcn.0040809e
mov dword [esp + 0x24], 0x660f7e73
or ebx, 0xffffffff
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], 0
jmp 0x402195
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14c]
mov dword [eax + ecx*4], 4
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 2
jl 0x40217f
mov dword [esp + 0x18], 0
jmp 0x4021bc
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x138]
mov dword [eax + ecx*4], 0xfffffffc
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 2
jl 0x4021a6
inc dword [esp + 0x20]
lea ecx, [esp + 0x138]
call fcn.00408170
lea ecx, [esp + 0x14c]
call fcn.00408170
mov dword [esp + 0x10], 0xfffffff9
mov dword [esp + 0x2c], 0x9c3d069f
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], 0x9884cb8
mov dword [esp + 0x84], 2
mov dword [esp + 0x10], 0xffffffea
jmp 0x40246d
push 4
lea ecx, [esp + 0x5c]
call fcn.0040809e
mov dword [esp + 0xc], 0xed23b618
xor eax, eax
mov dword [esp + 0x20], 0xdafbbd0a
mov dword [esp + 0x1c], eax
jmp 0x402249
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x58]
mov dword [ecx + edx*4], eax
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x40223a
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], 3
jg 0x40245c
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x18], 3
cmp dword [esp + 0x18], eax
jl 0x4022f3
mov dword [esp + 0x20], 0x5b29
mov edx, 0x2f76
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x28]
sub edx, ecx
mov dword [esp + 0x1c], edx
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x4022ea
mov ebx, dword [sym.imp.USER32.dll_GetDesktopWindow]
push 0x2659
push 0x11dc
push 0xf56
call ebx
mov esi, dword [sym.imp.USER32.dll_GetDC]
push eax
call esi
push eax
push 0x1b69
push 0x20c9
push 0x896
push 0x139e
call ebx
push eax
call esi
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
xor eax, eax
dec dword [esp + 0x18]
jns 0x402275
or ebx, 0xffffffff
mov dword [esp + 0x1c], 3
cmp dword [esp + 0x1c], eax
jl 0x402448
mov dword [esp + 0x24], 8
mov dword [esp + 0x28], eax
jmp 0x402326
mov ecx, dword [esp + 0x28]
mov dword [esp + ecx*4 + 0x158], 0xfffffffa
inc dword [esp + 0x28]
cmp dword [esp + 0x28], 2
jl 0x402313
mov byte [esp + 0x17], al
cmp byte [esp + 0x17], 0
je 0x402348
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_FlashWindow]
xor eax, eax
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x58]
mov ecx, dword [ecx + edx*4]
mov dword [esi + edi*4], ecx
test ecx, ecx
je 0x40242f
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], ecx
cmp dword [esp + 0x18], eax
je 0x402411
mov ecx, dword [esp + 0x84]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x28], ebx
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x58]
imul edx, dword [ecx + esi*4]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
imul esi, edx
sub esi, 0xffff
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setle dl
xor ebx, ebx
cmp edx, 6
setg bl
imul ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x58]
mov ecx, dword [edx + edi*4]
add ecx, 0xfffffff8
add ecx, ebx
jne 0x4023df
cmp dword [edx + 8], eax
jne 0x4023df
xor edi, edi
mov edx, eax
inc edi
jmp 0x4023e4
xor edi, edi
inc edi
mov edx, edi
mov ecx, dword [esp + 0x24]
add ecx, edx
jne 0x4023f2
cmp dword [esp + 0x2c], eax
je 0x4023fa
mov esi, edi
cmp dword [esp + 0xc], eax
jne 0x4023fc
mov esi, eax
mov ecx, dword [esp + 0x18]
xor edx, edx
cmp esi, ecx
setle dl
sub edx, dword [esp + 0x1c]
je 0x402411
mov esi, edi
jmp 0x402416
xor edi, edi
mov esi, eax
inc edi
mov ecx, dword [esp + 0x38]
xor edx, edx
cmp esi, ecx
setge dl
add edx, dword [esp + 0x10]
cmp edx, dword [esp + 0x38]
jg 0x40242f
mov ecx, edi
jmp 0x402434
xor edi, edi
mov ecx, eax
inc edi
mov dword [esp + 0x15c], ecx
dec dword [esp + 0x1c]
push 0xffffffffffffffff
pop ebx
jns 0x402305
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
push 0xffffffffffffffff
pop ebx
jle 0x40225f
or ebx, ebx
cmp dword [esp + 0x2c], eax
lea ecx, [esp + 0x58]
call fcn.00408170
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xffffffe4
jl 0x402217
mov eax, dword [esp + 0x34]
mov dword [eax], 0x1e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret