Function at 0x406904
Capabilities:
Clear file content
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x23c
push ebx
push esi
push edi
push 2
pop esi
mov edi, edx
mov bl, cl
push esi
lea ecx, [esp + 0x110]
mov dword [esp + 0x30], edi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0xc], eax
jmp 0x40694d
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10c]
mov dword [ecx + edx*4], 0x13dd33a4
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x406937
mov dword [esp + 0xc], eax
jmp 0x40696c
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x22c], 0xf3690f1d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x406959
xor esi, esi
mov dword [esp + 0xc], eax
inc esi
jmp 0x406987
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x40], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x40697b
mov ecx, dword [esp + 0x10c]
mov dword [ecx + 4], eax
lea ecx, [esp + 0x10c]
call fcn.00408170
test bl, bl
je 0x407d1e
push 2
pop ebx
mov dword [esp + 0x20], 0xb903cfcb
lea ecx, [esp + 0x130]
mov dword [esp + 0x1c], esi
push ebx
call fcn.0040809e
push 3
pop edi
mov dword [esp + 0x20], esi
lea ecx, [esp + 0x148]
mov dword [esp + 0x20], 0xf50e16ff
push edi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x4069fb
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x30], 0xd7d490c4
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x4069eb
mov dword [esp + 0xc], eax
jmp 0x406a13
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x5c], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x406a07
mov dword [esp + 0xc], eax
jmp 0x406a35
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x130]
mov dword [ecx + edx*4], 0x6fc75dfc
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x406a1f
mov dword [esp + 0xc], eax
jmp 0x406a57
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x148]
mov dword [ecx + edx*4], 0x3333
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x406a41
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x64]
mov ecx, dword [esp + 0x64]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0x20]
mov ecx, dword [esp + 0x64]
cmp dword [esp + 0x30], eax
jne 0x406a97
mov ecx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
xor edx, edx
mov ecx, dword [esp + 0x130]
cmp dword [ecx], eax
setge dl
imul edx, dword [ecx + 4]
mov dword [esp + 0x20], edx
xor edx, edx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
cmp ecx, eax
setle dl
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x148]
mov dword [eax + 4], ecx
lea ecx, [esp + 0x148]
call fcn.00408170
lea ecx, [esp + 0x130]
call fcn.00408170
mov dword [esp + 0x14], 0xffffffff
lea ecx, [esp + 0x124]
push ebx
call fcn.0040809e
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], 4
mov dword [esp + 0x1c], 7
mov dword [esp + 0x14], 0
jmp 0x406b33
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x124]
mov dword [eax + ecx*4], 0xb0befcdf
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x406b1d
mov dword [esp + 0x14], 0
cmp dword [esp + 0x14], 0xfffffff5
je 0x406d33
mov edi, dword [esp + 0x124]
push 4
lea ecx, [esp + 0xc0]
call fcn.0040809e
push ebx
lea ecx, [esp + 0x104]
call fcn.0040809e
mov dword [esp + 0x20], 0xe936be85
lea ecx, [esp + 0x160]
mov dword [esp + 0x20], 0xb64d
push esi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x406ba5
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xbc]
mov dword [ecx + edx*4], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x406b93
mov dword [esp + 0xc], eax
jmp 0x406bc8
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x100]
mov dword [ecx + edx*4], 0x2c41ac3d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x406bb2
mov dword [esp + 0xc], eax
jmp 0x406bea
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x160]
mov dword [ecx + edx*4], 0xdf7b1466
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x406bd4
mov dword [esp + 0xc], eax
jmp 0x406c09
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x188], 0x5daa08bb
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x406bf6
mov esi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x100]
mov edx, dword [esi + 8]
mov dword [ecx + 4], edx
xor edx, edx
mov dword [edi + 4], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
test ecx, ecx
sets dl
sub edx, dword [esp + 0x10]
sub edx, dword [esp + 0x10]
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x160]
mov dword [ecx], edx
cmp edx, dword [esi + 8]
mov ecx, dword [esp + 0x14]
setle bl
mov esi, dword [esi + 8]
sub ebx, ecx
mov dword [esp + 0x18c], ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ebx
xor ebx, ebx
cmp dword [esp + 0x28], 0x5205
setne bl
xor edx, edx
cmp ebx, ecx
setge dl
xor ecx, ecx
cmp edx, esi
setge cl
xor ebx, ebx
cmp ecx, esi
setne bl
xor edx, edx
add ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xbc]
cmp ebx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
setne dl
xor ebx, ebx
cmp edx, 0x477a14a9
setg bl
xor edx, edx
cmp ecx, ebx
mov ecx, dword [esp + 0x10]
setne dl
sub edx, 5
mov dword [esp + 0x28], edx
xor edx, edx
cmp dword [esp + 0x28], ecx
setg dl
xor esi, esi
mov dword [esp + 0x28], edx
inc esi
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x406cfa
push 0x34
push 0x1b80
push esi
push eax
push 0x1a1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
lea ecx, [esp + 0x160]
call fcn.00408170
lea ecx, [esp + 0x100]
call fcn.00408170
lea ecx, [esp + 0xbc]
call fcn.00408170
dec dword [esp + 0x14]
cmp dword [esp + 0x14], 0xfffffff5
push 2
pop ebx
jne 0x406b53
push 3
pop edi
dec dword [esp + 0x1c]
lea ecx, [esp + 0x124]
call fcn.00408170
mov dword [esp + 0x10], 8
lea ecx, [esp + 0xe8]
mov dword [esp + 0x14], 0xfffffffe
mov dword [esp + 0x1c], 0xffffffff
push ebx
call fcn.0040809e
push 4
pop eax
mov dword [esp + 0x28], eax
lea ecx, [esp + 0x13c]
mov dword [esp + 0x2c], 0xf113d064
mov dword [esp + 0x20], 0x1f13110e
push eax
call fcn.0040809e
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x406daa
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xe8]
mov dword [ecx + edx*4], 7
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x406d94
mov dword [esp + 0xc], eax
jmp 0x406dcc
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x13c]
mov dword [ecx + edx*4], 8
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x406db6
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0x10]
jl 0x406df1
mov edx, eax
cmp dword [esp + 0x10], eax
je 0x406df3
mov edx, esi
mov ecx, dword [esp + 0x10]
xor ebx, ebx
cmp ecx, edx
mov ecx, dword [esp + 0x10]
setl bl
xor edx, edx
cmp ecx, ebx
setl dl
add edx, dword [esp + 0x10]
je 0x406ea9
mov dword [esp + 0xc], 0x2b82
mov dword [esp + 0x20], 0xbe734e2e
cmp dword [esp + 0xc], eax
jne 0x406e58
mov ecx, dword [esp + 0x10]
xor edx, edx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
cmp ecx, esi
setle dl
imul ecx, edx, 0x99a
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x14], ecx
jl 0x406e5c
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
cmp dword [esp + 0xc], eax
je 0x406e9b
cmp dword [esp + 0x20], eax
je 0x406e9b
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x406ebb
push eax
push 0xaf0
push 0x242b
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SetViewportExtEx]
jmp 0x406eb9
mov dword [esp + 0x20], 0x2cbd4dae
inc dword [esp + 0x20]
jmp 0x406ebb
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x406ebb
call dword [sym.imp.GDI32.dll_GdiFlush]
xor eax, eax
mov dword [esp + 0x14], esi
cmp dword [esp + 0x14], eax
jl 0x406fca
mov ecx, dword [esp + 0x13c]
mov ebx, dword [esp + 0xe8]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], 0x335a02a9
mov dword [esp + 0x20], 0x4b5bc683
mov dword [esp + 0x20], 0xc84d
mov dword [esp + 0xc], eax
jmp 0x406f0c
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x1a8], 0xfffffffa
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x406ef9
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x14], 0xcd142575
sbb ecx, ecx
neg ecx
sub ecx, 0x381c4edd
neg ecx
sbb ecx, ecx
inc ecx
cmp dword [esp + 0x10], ecx
jne 0x406f37
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp dword [ebx + 4], ecx
mov esi, dword [esp + 0x10]
setge dl
imul esi, edx
sub esi, dword [esp + 0x10]
imul esi, dword [esp + 0x10]
sub esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
neg esi
sbb esi, esi
xor edx, edx
inc esi
cmp esi, ecx
setne dl
mov dword [esp + 0x20], edx
xor edx, edx
mov ecx, dword [esp + 0x20]
test ecx, ecx
sets dl
mov dword [esp + 0x1a8], edx
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1a8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x1c]
neg ecx
sbb ecx, ecx
inc ecx
sub ecx, dword [esp + 0x14]
mov dword [edx + 4], ecx
dec dword [esp + 0x14]
jns 0x406edb
xor esi, esi
inc esi
lea ecx, [esp + 0x13c]
call fcn.00408170
lea ecx, [esp + 0xe8]
call fcn.00408170
push 2
pop ebx
mov dword [esp + 0x14], 0xffffffff
lea ecx, [esp + 0x118]
push ebx
call fcn.0040809e
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], 4
mov dword [esp + 0x1c], 7
mov dword [esp + 0x14], 0
jmp 0x40702e
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x118]
mov dword [eax + ecx*4], 0xb0befcdf
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x407018
mov dword [esp + 0x14], 0
cmp dword [esp + 0x14], 0xfffffff5
je 0x40722e
mov edi, dword [esp + 0x118]
push 4
lea ecx, [esp + 0xa8]
call fcn.0040809e
push ebx
lea ecx, [esp + 0x170]
call fcn.0040809e
mov dword [esp + 0x20], 0xe936be85
lea ecx, [esp + 0x154]
mov dword [esp + 0x20], 0xb64d
push esi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x4070a0
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xa4]
mov dword [ecx + edx*4], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x40708e
mov dword [esp + 0xc], eax
jmp 0x4070c3
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x16c]
mov dword [ecx + edx*4], 0x2c41ac3d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x4070ad
mov dword [esp + 0xc], eax
jmp 0x4070e5
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x154]
mov dword [ecx + edx*4], 0xdf7b1466
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x4070cf
mov dword [esp + 0xc], eax
jmp 0x407104
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x204], 0x5daa08bb
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x4070f1
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0x16c]
mov edx, dword [esi + 8]
mov dword [ecx + 4], edx
xor edx, edx
mov dword [edi + 4], eax
mov ecx, dword [esi + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
test ecx, ecx
sets dl
sub edx, dword [esp + 0x10]
sub edx, dword [esp + 0x10]
neg edx
sbb edx, edx
xor ebx, ebx
inc edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x154]
mov dword [ecx], edx
cmp edx, dword [esi + 8]
mov ecx, dword [esp + 0x14]
setle bl
mov esi, dword [esi + 8]
sub ebx, ecx
mov dword [esp + 0x208], ebx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], ebx
xor ebx, ebx
cmp dword [esp + 0x24], 0x5205
setne bl
xor edx, edx
cmp ebx, ecx
setge dl
xor ecx, ecx
cmp edx, esi
setge cl
xor ebx, ebx
cmp ecx, esi
setne bl
xor edx, edx
add ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xa4]
cmp ebx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
setne dl
xor ebx, ebx
cmp edx, 0x477a14a9
setg bl
xor edx, edx
cmp ecx, ebx
mov ecx, dword [esp + 0x10]
setne dl
sub edx, 5
mov dword [esp + 0x24], edx
xor edx, edx
cmp dword [esp + 0x24], ecx
setg dl
xor esi, esi
mov dword [esp + 0x24], edx
inc esi
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x4071f5
push 0x34
push 0x1b80
push esi
push eax
push 0x1a1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
lea ecx, [esp + 0x154]
call fcn.00408170
lea ecx, [esp + 0x16c]
call fcn.00408170
lea ecx, [esp + 0xa4]
call fcn.00408170
dec dword [esp + 0x14]
cmp dword [esp + 0x14], 0xfffffff5
push 2
pop ebx
jne 0x40704e
push 3
pop edi
dec dword [esp + 0x1c]
lea ecx, [esp + 0x118]
call fcn.00408170
cmp byte [ebp + 0xc], 0
je 0x407888
mov dword [esp + 0x10], 0x20fe6e32
lea ecx, [esp + 0x19c]
mov dword [esp + 0x14], 0xfffffffe
push ebx
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x407283
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x19c]
mov dword [ecx + edx*4], 0x23024a13
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jl 0x40726d
push 9
pop esi
cmp dword [esp + 0x10], eax
jne 0x4072e1
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp ecx, 0x4a61bf07
setne dl
xor ecx, ecx
cmp edx, 1
setge cl
sub ecx, dword [esp + 0x10]
neg ecx
sbb ecx, ecx
xor ebx, ebx
inc ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
setl bl
xor edx, edx
cmp ebx, ecx
setne dl
cmp edx, esi
sbb ecx, ecx
inc ecx
sub ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0x10]
je 0x4072e1
mov ebx, eax
jmp 0x4072e4
xor ebx, ebx
inc ebx
mov ecx, dword [esp + 0x10]
xor edx, edx
mov ecx, dword [esp + 0x10]
cmp ebx, ecx
setl dl
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x10], eax
je 0x40736d
push 4
lea ecx, [esp + 0x1b8]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x407335
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1b4]
mov dword [ecx + edx*4], 0xfffffff7
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 4
jl 0x40731f
mov dword [esp + 0x14], eax
jmp 0x407350
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
jne 0x407362
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jle 0x407342
lea ecx, [esp + 0x1b4]
jmp 0x4074bf
push 0x1a5f
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 2
pop eax
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x1cc]
xor ebx, ebx
mov dword [esp + 0xc], 0x3019c36c
inc ebx
mov dword [esp + 0x24], ebx
push eax
call fcn.0040809e
mov dword [esp + 0x24], 0xb085ca7d
lea ecx, [esp + 0x1e4]
push ebx
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0xc], eax
jmp 0x4073c7
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1cc]
mov dword [ecx + edx*4], 0xfffffffb
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x4073b1
mov dword [esp + 0xc], eax
jmp 0x4073e7
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1e4]
or dword [ecx + edx*4], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x4073d4
mov dword [esp + 0xc], eax
jmp 0x407406
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0xe0], 0x534d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x4073f3
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x10]
jne 0x40742d
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x14], 0xffffffff
sbb ecx, ecx
inc ecx
cmp ecx, 0xfb65
mov ecx, eax
jl 0x40742f
mov ecx, ebx
mov edx, dword [esp + 0x1c]
xor ebx, ebx
imul edx, ecx
mov ecx, dword [esp + 0x14]
cmp edx, ecx
mov ecx, dword [esp + 0x10]
setne bl
xor edx, edx
cmp ebx, ecx
mov ecx, dword [esp + 0x1c]
setg dl
mov dword [esp + 0x24], edx
xor edx, edx
cmp ecx, dword [esp + 0x24]
setne dl
mov dword [esp + 0xc], edx
mov dword [esp + 0xc], 0x1c
jmp 0x4074a5
mov dword [esp + 0x24], eax
mov dword [esp + 0x24], 0x1d4b4ea6
mov dword [esp + 0x24], esi
mov dword [esp + 0x14], eax
jmp 0x407494
mov ecx, dword [esp + 0x14]
mov dword [esp + ecx*4 + 0x23c], 4
inc dword [esp + 0x14]
cmp dword [esp + 0x14], edi
jl 0x407481
inc dword [esp + 0xe0]
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0x19
jge 0x40746b
lea ecx, [esp + 0x1e4]
call fcn.00408170
lea ecx, [esp + 0x1cc]
call fcn.00408170
lea ecx, [esp + 0x19c]
call fcn.00408170
xor ebx, ebx
lea ecx, [esp + 0x190]
inc ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], 0xfffffff7
mov dword [esp + 0x1c], 0xffff
push ebx
call fcn.0040809e
mov dword [esp + 0x24], ebx
mov dword [esp + 0x10], 0
jmp 0x407512
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x3c], 5
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x407502
mov dword [esp + 0x10], 0
jmp 0x407538
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x190]
mov dword [eax + ecx*4], 0x531f
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x407522
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov dword [esp + 0x3c], eax
mov edx, 0xd208
mov dword [esp + 0x3c], edx
dec dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, edx
mov eax, dword [esp + 0x20]
setge cl
cmp ebx, eax
sbb eax, eax
xor edx, edx
neg eax
cmp ecx, eax
mov eax, dword [esp + 0x14]
setge dl
xor ecx, ecx
cmp edx, eax
mov eax, 0x9e22401d
setg cl
cmp eax, ecx
lea ecx, [esp + 0x190]
sbb eax, eax
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], eax
call fcn.00408170
push edi
lea ecx, [esp + 0x48]
call fcn.0040809e
push 2
pop esi
mov dword [esp + 0xc], edi
lea ecx, [esp + 0x88]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], 0xf361
push esi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x1c], 0x5631cd1a
mov dword [esp + 0x10], eax
jmp 0x4075e5
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
mov dword [ecx + edx*4], ebx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x4075d6
mov dword [esp + 0x10], eax
jmp 0x407607
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x88]
mov dword [ecx + edx*4], 0xac06e326
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x4075f1
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], eax
jl 0x407672
mov dword [esp + 0x24], 0x815
mov dword [esp + 0x24], 0x6d0811fc
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x44]
cmp dword [edx + ecx*4], eax
je 0x407641
cmp dword [edx + 4], eax
je 0x40763d
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
xor edx, edx
inc ecx
cmp ecx, ebx
mov ecx, dword [esp + 0x14]
push 1
setge dl
xor ebx, ebx
imul edx, edx, 0xffff
cmp edx, ecx
setg bl
neg ebx
neg ebx
sbb ebx, ebx
inc ebx
mov dword [esp + 0x28], ebx
dec dword [esp + 0x10]
pop ebx
jns 0x407617
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], eax
jl 0x407868
mov edi, dword [esp + 0x88]
push ebx
lea ecx, [esp + 0x6c]
call fcn.0040809e
mov dword [esp + 0x24], 0x932384b6
xor eax, eax
mov dword [esp + 0x20], 0xaeb8
mov dword [esp + 0x10], eax
jmp 0x4076bc
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x68]
mov dword [ecx + edx*4], 0x221494fb
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x4076a9
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x44]
cmp dword [ecx + edx*4], eax
je 0x407747
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x44]
cmp dword [ecx + edx*4], eax
jne 0x4076f1
mov ecx, dword [esp + 0x88]
mov edx, eax
cmp dword [ecx], eax
je 0x4076f3
mov edx, ebx
mov esi, dword [esp + 0xc]
xor ebx, ebx
mov ecx, dword [esp + 0x28]
cmp edx, ecx
mov ecx, dword [esp + 0x1c]
setle bl
sub ebx, 0xcc33
neg ebx
sbb ebx, ebx
xor edx, edx
inc ebx
cmp ebx, 0xfffffffc
setle dl
xor ebx, ebx
cmp edx, ecx
mov ecx, dword [esp + 0x44]
setg bl
mov ecx, dword [ecx + esi*4]
sub ecx, ebx
jne 0x407738
cmp dword [esp + 0x1c], eax
jne 0x407738
xor ebx, ebx
mov edx, eax
inc ebx
jmp 0x40773d
xor ebx, ebx
inc ebx
mov edx, ebx
mov ecx, dword [esp + 0x14]
sub ecx, edx
mov edx, ebx
jne 0x407749
mov edx, eax
mov ecx, dword [esp + 0x68]
mov dword [ecx], edx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x44]
cmp dword [ecx + edx*4], eax
jne 0x407780
inc dword [esp + 0x20]
mov edx, eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], eax
je 0x407782
mov edx, ebx
mov ecx, dword [esp + 0x68]
mov esi, dword [ecx]
mov ecx, dword [esp + 0xc]
dec ecx
add ecx, edx
neg ecx
sbb ecx, ecx
neg ecx
sub ecx, dword [esp + 0xc]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, 0x915
setg dl
xor ecx, ecx
add edx, esi
imul edx, dword [edi + 4]
sub edx, esi
cmp edx, 0x551b
setne cl
xor edx, edx
cmp ecx, 0xffff606c
mov ecx, dword [esp + 0x88]
setne dl
mov dword [ecx], edx
cmp dword [esp + 0x24], eax
jge 0x407842
mov dword [esp + 0x2c], 0x9310
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], al
je 0x4077f1
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
xor eax, eax
mov dword [esp + 0x14], 2
cmp dword [esp + 0x14], eax
jl 0x40784a
mov dword [esp + 0x24], 0x84183aa7
mov dword [esp + 0x10], eax
jmp 0x407820
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x94], 0xfffffffd
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ebx
jl 0x40780d
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x2c]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x94], ecx
dec dword [esp + 0x14]
jns 0x4077ff
jmp 0x40784a
mov ecx, dword [esp + 0x68]
cmp dword [ecx], eax
jne 0x40785f
lea ecx, [esp + 0x68]
call fcn.00408170
dec dword [esp + 0xc]
jns 0x407687
jmp 0x407868
lea ecx, [esp + 0x68]
call fcn.00408170
lea ecx, [esp + 0x88]
call fcn.00408170
lea ecx, [esp + 0x44]
call fcn.00408170
mov eax, dword [ebp + 0x10]
add dword [eax], 7
jmp 0x407fc5
push dword [esp + 0x40]
movdqa xmm0, xmmword [0xa6be30]
lea ecx, [esp + 0x230]
push ecx
xor eax, eax
lea ecx, [esp + 0x224]
push ecx
push eax
lea ecx, [esp + 0xa8]
mov dword [esp + 0xa8], eax
movdqu xmmword [esp + 0x22c], xmm0
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], eax
call fcn.00408ca2
xor eax, eax
mov dword [esp + 0x1c], eax
jmp 0x4078e5
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x38], esi
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x4078d9
mov dword [esp + 0x38], edi
cmp dword [esp + 0x38], eax
jl 0x407958
mov dword [esp + 0x14], 0xfffffffd
mov dword [esp + 0x14], edi
cmp dword [esp + 0x14], eax
jl 0x407952
mov dword [esp + 0x1c], 0xab593421
mov dword [esp + 0x1c], eax
jmp 0x407946
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x40792d
push 0xa4c
call dword [sym.imp.USER32.dll_BeginDeferWindowPos]
xor eax, eax
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], 0
je 0x407942
push eax
push eax
call dword [sym.imp.KERNEL32.dll_SetCommState]
xor eax, eax
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], edi
jle 0x407915
dec dword [esp + 0x14]
jns 0x407907
dec dword [esp + 0x38]
jns 0x4078f5
lea ecx, [esp + 0x98]
call fcn.00408170
mov dword [esp + 0x14], 0xffffffff
xor eax, eax
mov dword [esp + 0x24], 0x25681085
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 0xe7c14ab6
mov dword [esp + 0x1c], eax
jmp 0x40799b
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x1f4], 0x6b43d271
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x407988
mov dword [esp + 0x14], eax
jmp 0x407abc
mov dword [esp + 0x10], 0x97eede0b
mov dword [esp + 0x1c], 0x7f191253
mov dword [esp + 0x1c], eax
jmp 0x4079d4
mov ecx, dword [esp + 0x1c]
mov dword [esp + ecx*4 + 0x178], 0xcd49598a
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], 4
jl 0x4079c1
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], 0x1a
jl 0x407ab8
mov dword [esp + 0x20], 0x210ec320
lea ecx, [esp + 0x1c0]
push esi
call fcn.0040809e
mov dword [esp + 0x1c], 0
jmp 0x407a1f
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c0]
mov dword [eax + ecx*4], 0x3a6d7d04
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], esi
jl 0x407a09
cmp dword [esp + 0x28], 0
jne 0x407a52
mov dword [esp + 0x20], 0xc1e0
xor edx, edx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
cmp eax, ecx
setge dl
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x17c]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x184]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
inc dword [esp + 0xc]
cmp eax, ecx
jne 0x407a71
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x200]
xor edx, edx
mov eax, dword [esp + 0x200]
mov ecx, dword [esp + 0x200]
mov eax, dword [esp + 0x17c]
cmp eax, ecx
lea ecx, [esp + 0x1c0]
setl dl
mov dword [esp + 0x17c], edx
call fcn.00408170
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 0x1a
jge 0x4079ea
xor eax, eax
dec dword [esp + 0x14]
cmp dword [esp + 0x14], 0xfffffffe
jg 0x4079ab
mov dword [esp + 0x14], 0x313dd33a
lea ecx, [esp + 0x50]
push ebx
call fcn.0040809e
mov dword [esp + 0x28], 0x5c2f1fcc
lea ecx, [esp + 0xc8]
push esi
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x28], esi
mov dword [esp + 0xc], eax
jmp 0x407b09
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x50]
mov dword [ecx + edx*4], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x407afa
mov dword [esp + 0xc], eax
jmp 0x407b27
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xc8]
mov dword [ecx + edx*4], esi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x407b15
mov dword [esp + 0xc], eax
jmp 0x407b42
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x84], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x407b33
mov dword [esp + 0x14], 0xfffffff0
jmp 0x407cf3
mov dword [esp + 0xc], eax
mov dword [esp + 0xc], esi
cmp dword [esp + 0xc], eax
jl 0x407cef
mov eax, dword [esp + 0x50]
mov dword [esp + 0x2c], eax
push edi
lea ecx, [esp + 0xb4]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x24], 0x32f8296
mov dword [esp + 0x10], eax
jmp 0x407ba2
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xb0]
mov dword [ecx + edx*4], 0x8a94b2ab
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x407b8c
mov dword [esp + 0x10], eax
jmp 0x407bbe
mov ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x34], 0xbd907c4e
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x407bae
mov edx, dword [esp + 0xc]
xor ebx, ebx
mov ecx, dword [esp + 0x50]
cmp dword [ecx + edx*4], esi
mov ecx, dword [esp + 0xc]
setg bl
xor edx, edx
cmp ecx, ebx
setne dl
add edx, dword [esp + 0xc]
imul edx, dword [esp + 0xc]
cmp edx, dword [esp + 0x34]
jne 0x407bf8
mov ecx, dword [esp + 0x50]
mov edx, esi
cmp dword [ecx], eax
jne 0x407bfa
mov edx, eax
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0xb0]
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
mov dword [esi + 8], eax
mov eax, dword [esp + 0x14]
cmp edx, eax
mov eax, dword [esp + 0x50]
setne cl
xor edx, edx
cmp ecx, dword [eax]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0xc]
setge dl
add ecx, edx
xor edx, edx
cmp ecx, eax
setge dl
imul edx, dword [esp + 0xc]
mov ecx, dword [esi + 8]
mov eax, dword [esp + 0xc8]
sub ecx, edx
mov dword [eax], ecx
xor eax, eax
cmp ecx, 8
setg al
xor ecx, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0xc]
cmp eax, 7
setg cl
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
neg ecx
mov eax, dword [esp + 0xc]
sbb ecx, ecx
xor edx, edx
neg ecx
cmp ecx, 0x6fe0855b
setle dl
xor ecx, ecx
imul edx, eax
mov eax, dword [esp + 0xc8]
mov dword [eax], edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x28]
imul edx, eax
mov dword [esp + 0x84], edx
mov eax, dword [esp + 0xc]
cmp edx, eax
mov eax, dword [esp + 0x2c]
sete cl
xor edx, edx
cmp ecx, dword [eax + 4]
lea ecx, [esp + 0xb0]
mov eax, dword [esp + 0xb0]
setl dl
mov dword [eax], edx
call fcn.00408170
dec dword [esp + 0xc]
push 1
pop esi
jns 0x407b6f
xor eax, eax
inc dword [esp + 0x14]
cmp dword [esp + 0x14], 0x13
jge 0x407b55
lea ecx, [esp + 0xc8]
call fcn.00408170
lea ecx, [esp + 0x50]
call fcn.00408170
mov eax, dword [ebp + 8]
add dword [eax], 0x1f
jmp 0x407fc5
mov ebx, dword [sym.imp.USER32.dll_GetDesktopWindow]
xor eax, eax
mov dword [esp + 0x10], 0x5c68ec0a
mov dword [esp + 0xc], 0xa53061ec
mov dword [esp + 0x20], 0xfffffff8
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], 0xfffffff3
je 0x407e95
push 3
pop edi
jmp 0x407d54
xor eax, eax
push dword [esp + 0x40]
movdqa xmm0, xmmword [0xa6be60]
lea ecx, [esp + 0x220]
push ecx
lea ecx, [esp + 0x214]
mov dword [esp + 0x1c], 0xcce57bf5
push ecx
push eax
lea ecx, [esp + 0xe4]
mov dword [esp + 0xe4], eax
movdqu xmmword [esp + 0x21c], xmm0
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
call fcn.00408ca2
dec dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc], 0xb984
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
sub ecx, eax
cmp ecx, 0xddd9cd4
jl 0x407dc9
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
dec eax
neg eax
sbb eax, eax
neg eax
imul eax, dword [esp + 0x10]
test eax, eax
je 0x407e47
mov dword [esp + 0x28], 0xfffffff9
mov dword [esp + 0x24], 5
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
neg edx
sbb edx, edx
xor ecx, ecx
neg edx
cmp edx, eax
setl cl
cmp ecx, 0xc698dc50
sbb eax, eax
xor edx, edx
neg eax
cmp eax, 0xfffffff7
mov eax, dword [esp + 0x14]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x28]
setl cl
xor edx, edx
cmp ecx, 0x299e885d
setge dl
xor ecx, ecx
cmp edx, eax
setg cl
mov dword [esp + 0x24], ecx
jmp 0x407e76
mov dword [esp + 0xc], edi
cmp dword [esp + 0xc], 0
jl 0x407e76
mov byte [esp + 0x1b], 0
cmp byte [esp + 0x1b], 0
je 0x407e70
push 0
push 0
push 0x1d4f
call ebx
push eax
call dword [sym.imp.USER32.dll_DefWindowProcA]
dec dword [esp + 0xc]
jns 0x407e52
lea ecx, [esp + 0xd4]
call fcn.00408170
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xfffffff3
jne 0x407d52
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x1d8]
mov dword [esp + 0xc], eax
push 2
call fcn.0040809e
push 9
pop esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x24], esi
xor esi, esi
mov dword [esp + 0x1c], 0
inc esi
cmp dword [esp + 0x1c], 2
jge 0x407eeb
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1d8]
mov dword [eax + ecx*4], esi
inc dword [esp + 0x1c]
jmp 0x407ed0
mov dword [esp + 0x7c], 0
jmp 0x407f1c
mov byte [esp + 0x1b], 0
cmp byte [esp + 0x1b], 0
je 0x407f18
push 0x59f
push 0
call ebx
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_Polyline]
inc dword [esp + 0x7c]
cmp dword [esp + 0x7c], esi
jle 0x407ef5
lea ecx, [esp + 0x1d8]
call fcn.00408170
push 2
pop ebx
push ebx
lea ecx, [esp + 0xf8]
call fcn.0040809e
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0xc], eax
jmp 0x407f60
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0xf4]
mov dword [ecx + edx*4], 0x13dd33a4
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x407f4a
mov dword [esp + 0xc], eax
jmp 0x407f7f
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x234], 0xf3690f1d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jl 0x407f6c
mov dword [esp + 0xc], eax
jmp 0x407f9a
mov ecx, dword [esp + 0xc]
mov dword [esp + ecx*4 + 0x1f0], eax
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x407f8b
mov ecx, dword [esp + 0xf4]
mov dword [ecx + 4], eax
lea ecx, [esp + 0xf4]
call fcn.00408170
mov eax, dword [edi]
test eax, eax
jns 0x407fc5
add eax, 0x100
js 0x407fbc
mov dword [edi], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret