Function at 0x401104
Capabilities:
Encode data using base64

Disassembly:
jmp 0x405670
sub esp, 0x30
push ebx
push ebp
push esi
push edi
mov ebp, ecx
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [ebp + 0xbb4]
mov dword [ebp + 0xbb0], eax
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push 0xcb
mov ecx, 0x431af8
call fcn.00413ef0
test al, al
je 0x4056b2
mov eax, dword [esp + 0x18]
sub eax, 0xa
jmp 0x4056cc
push 0xcd
mov ecx, 0x431af8
call fcn.00413ef0
test al, al
mov eax, dword [esp + 0x18]
je 0x4056d0
add eax, 0xa
mov dword [esp + 0x18], eax
mov edx, dword [ebp + 0xdec]
test edx, edx
jne 0x405707
mov edi, dword [ebp + 0x264]
mov ecx, 0x258
sub ecx, edi
cmp eax, ecx
jle 0x4056f3
mov eax, ecx
mov dword [esp + 0x18], eax
jmp 0x405762
test edx, edx
jne 0x405707
test eax, eax
jge 0x405703
xor eax, eax
mov dword [esp + 0x18], eax
jmp 0x405762
test edx, edx
je 0x405762
cmp eax, 0x280
jle 0x405715
mov eax, 0x280
jmp 0x40571b
test eax, eax
jge 0x40571f
xor eax, eax
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x1c]
cmp ecx, 0x1e0
jle 0x405732
mov ecx, 0x1e0
jmp 0x405738
test ecx, ecx
jge 0x40573c
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov dword [ebp + 0x28c], ecx
mov ecx, dword [ebp + 0x290]
inc ecx
mov dword [ebp + 0x288], eax
and ecx, 0x8000001f
jns 0x40575c
dec ecx
or ecx, 0xffffffe0
inc ecx
mov dword [ebp + 0x290], ecx
mov edx, dword [esp + 0x1c]
push edx
push eax
call dword [sym.imp.USER32.dll_SetCursorPos]
mov eax, dword [ebp + 0xdf0]
test eax, eax
jne 0x405784
mov edx, 0x42aefc
mov ecx, str.org.mds
jmp 0x4057c3
mov eax, dword [ebp + 0xe04]
sub eax, 0
je 0x4057b9
dec eax
je 0x4057ad
dec eax
je 0x4057a1
mov edx, 0x42af58
mov ecx, str.samba.mds
jmp 0x4057c3
mov edx, 0x42af40
mov ecx, str.coolin.mds
jmp 0x4057c3
mov edx, 0x42af28
mov ecx, str.rush.mds
jmp 0x4057c3
mov edx, 0x42af10
mov ecx, str.piano.mds
call fcn.00401172
mov al, byte [ebp + 0xe08]
test al, al
jne 0x4067e8
mov eax, dword [ebp + 0xdfc]
test eax, eax
je 0x405835
mov eax, dword [ebp + 0x268]
sar eax, 1
cmp eax, 1
jge 0x4057f2
mov eax, 1
mov edi, dword [ebp + 0x268]
mov edx, dword [ebp + 0x26c]
sub edi, eax
sar eax, 2
mov ecx, edi
add edx, eax
cmp ecx, 3
mov dword [ebp + 0x268], edi
mov dword [ebp + 0x26c], edx
jge 0x4067e8
mov ecx, ebp
mov dword [ebp + 0xdfc], 0
call fcn.0040115e
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret
mov al, byte [ebp + 0xe09]
test al, al
je 0x405860
push 1
mov ecx, 0x431af8
call fcn.00413f10
test al, al
je 0x4058ca
mov byte [ebp + 0xe09], 0
mov al, byte [ebp + 0xe09]
test al, al
jne 0x40587a
push 1
mov ecx, 0x431af8
call fcn.00413f10
test al, al
je 0x40587a
mov ecx, 5
call fcn.00401069
mov ecx, 0x436368
call fcn.00411e30
mov ecx, dword [ebp + 0xde0]
inc ecx
and ecx, 0x800000ff
jns 0x40589b
dec ecx
or ecx, 0xffffff00
inc ecx
mov eax, dword [ebp + 0x240]
xor edi, edi
mov dword [ebp + 0xde0], ecx
xor esi, esi
mov cl, byte [eax + esi]
cmp cl, 2
jne 0x405bcc
mov edx, dword [ebp + 0x23c]
mov byte [eax + esi], 0
mov byte [edx + esi], 0
jmp 0x405c51
push 0x1c
mov ecx, 0x431af8
call fcn.00413f10
mov bl, al
lea eax, [esp + 0x18]
push 0x431af8
push eax
lea ecx, [ebp + 0x214]
call fcn.00414b00
test bl, bl
je 0x4067e8
mov edx, dword [ebp + 0x238]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x405bbd
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea ebx, [esp + 0x20]
mov edx, ecx
mov esi, edi
mov edi, ebx
lea eax, [esp + 0x20]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.004186fa
add esp, 4
mov edi, str.funyons
lea esi, [esp + 0x20]
mov ecx, 8
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405977
mov eax, dword [ebp + 0xbb8]
mov ecx, 0x433860
or al, 1
mov dword [ebp + 0xbb8], eax
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42af78
jmp 0x405b96
mov edi, str.let_me_hear_you_say_fired_up
lea esi, [esp + 0x20]
mov ecx, 0x1d
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4059ae
push 6
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42afac
jmp 0x405b96
mov edi, str.sidewinders
lea esi, [esp + 0x20]
mov ecx, 0xc
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4059e5
push 0xa
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42afcc
jmp 0x405b96
mov edi, str.not_a_small_thing
lea esi, [esp + 0x20]
mov ecx, 0x12
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405a1b
push edx
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42aff4
jmp 0x405b96
mov edi, str.inc_me
lea esi, [esp + 0x20]
mov ecx, 7
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405a52
push 0xe
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b010
jmp 0x405b96
mov edi, str.sweet
lea esi, [esp + 0x20]
mov ecx, 6
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405a89
push 8
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b02c
jmp 0x405b96
mov edi, str.my_velcro_shoes
lea esi, [esp + 0x20]
mov ecx, 0x10
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405ac0
push 3
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b050
jmp 0x405b96
mov edi, str.detrimental_abundancy
lea esi, [esp + 0x20]
mov ecx, 0x16
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405af7
push 0x16
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b07c
jmp 0x405b96
mov edi, str.through_holy_faith
lea esi, [esp + 0x20]
mov ecx, 0x13
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405b2b
push 0xf
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b0a4
jmp 0x405b96
mov edi, str.i_never_prosper
lea esi, [esp + 0x20]
mov ecx, 0x10
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405b64
mov eax, dword [ebp + 0xbb8]
mov ecx, 0x433860
or al, 2
mov dword [ebp + 0xbb8], eax
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, 0x42b0c8
jmp 0x405b96
mov edi, str.no_ska_no_swing
lea esi, [esp + 0x20]
mov ecx, 0x10
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405bbd
push 9
mov ecx, ebp
call fcn.00401050
mov ecx, 0x433860
call fcn.004010c3
lea edx, [ebp + 0xe0a]
mov edi, str.You_cheater_you_
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebp + 0xdf8], 0x78
pop edi
mov byte [ebp + 0xe09], 0
pop esi
pop ebp
pop ebx
add esp, 0x30
ret
cmp cl, 3
jne 0x405be1
mov ecx, dword [ebp + 0x23c]
mov byte [eax + esi], 0
mov byte [ecx + esi], 0x40
jmp 0x405c51
cmp cl, 4
jne 0x405c04
mov edx, dword [ebp + 0x23c]
mov byte [eax + esi], 0
lea ecx, [edx + esi]
mov dl, byte [edx + esi]
neg dl
sbb dl, dl
and dl, 2
add dl, 0x39
mov byte [ecx], dl
jmp 0x405c51
cmp cl, 1
jne 0x405c51
push 0xffffffffffffffff
push esi
mov ecx, ebp
call fcn.00401195
mov eax, 0x66666667
push 1
imul esi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*2]
lea ecx, [eax + eax*4]
mov eax, esi
push ecx
mov ecx, 0x14
cdq
idiv ecx
mov ecx, ebp
lea eax, [edx + edx*2]
lea edx, [eax + eax*4]
shl edx, 1
push edx
call fcn.004010f5
mov eax, dword [ebp + 0x240]
mov byte [eax + esi], 2
mov ecx, dword [ebp + 0x23c]
mov cl, byte [ecx + esi]
test cl, cl
jbe 0x405c69
cmp cl, 0x3d
je 0x405c69
cmp cl, 0x3f
je 0x405c69
inc edi
inc esi
cmp esi, 0x280
jl 0x4058ab
mov eax, dword [ebp + 0xde0]
mov edx, eax
and edx, 0x80000007
jns 0x405c8b
dec edx
or edx, 0xfffffff8
inc edx
jne 0x405d04
test edi, edi
jne 0x405d04
push edi
push 0x3e8
mov ecx, 0x4318a8
call fcn.0040fda0
mov eax, dword [ebp + 0xde4]
mov esi, dword [ebp + 0xe00]
inc eax
cmp eax, 0x28
jge 0x405cc7
test byte [ebp + 0xbb8], 2
jne 0x405cc7
push edi
push eax
mov ecx, ebp
call fcn.0040108c
jmp 0x405cea
mov eax, dword [ebp + 0xe00]
mov ecx, dword [ebp + 0x25c]
push 1
push 1
lea eax, [eax + eax*2]
push 1
mov edx, dword [ecx + eax*4]
mov ecx, 0x435c40
push edx
call fcn.004010aa
mov ecx, dword [ebp + 0x25c]
lea eax, [esi + esi*2]
mov dword [ebp + 0xe00], esi
mov edx, dword [ecx + eax*4]
mov dword [ebp + 0xddc], edx
jmp 0x405d38
cmp edi, 1
jne 0x405d38
test eax, eax
jne 0x405d38
mov eax, dword [ebp + 0xdc4]
test eax, eax
jne 0x405d38
push 0xe
call fcn.004181e8
cdq
mov ecx, 0x258
idiv ecx
mov ecx, ebp
push edx
call fcn.0040119a
mov ecx, 0x434310
call fcn.004010c3
mov ecx, dword [ebp + 0xdbc]
xor edi, edi
or eax, 0xffffffff
test ecx, ecx
jle 0x405e72
xor esi, esi
mov edx, dword [ebp + 0x248]
lea ecx, [edx + esi]
mov dl, byte [edx + esi + 0x1d]
test dl, dl
je 0x405e60
mov al, byte [ecx + 0x1c]
test al, al
jne 0x405dc1
mov eax, dword [ebp + 0x26c]
mov edx, dword [esp + 0x18]
sub eax, edx
js 0x405d88
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ecx + 4]
sub edx, eax
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 0x26c]
sub eax, edx
jns 0x405da3
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ecx + 4]
add edx, eax
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x18]
cmp dword [ecx + 4], edx
jge 0x405daf
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 0x264]
add edx, eax
mov eax, dword [ecx + 4]
cmp eax, edx
jle 0x405dc1
mov dword [ecx + 4], edx
push edi
mov ecx, ebp
call fcn.0040111d
mov ecx, dword [ebp + 0xde0]
mov edx, ecx
and edx, reloc.DSOUND.dll_DirectSoundCreate
jns 0x405dde
dec edx
or edx, 0xfffffffe
inc edx
jne 0x405dfe
mov eax, dword [ebp + 0x248]
mov edx, dword [eax + esi + 0x18]
lea eax, [eax + esi + 0x18]
inc edx
and edx, 0x8000001f
jns 0x405dfc
dec edx
or edx, 0xffffffe0
inc edx
mov dword [eax], edx
mov eax, dword [ebp + 0x248]
add eax, esi
cmp dword [eax], 1
jne 0x405e2b
and ecx, 0x80000007
jns 0x405e18
dec ecx
or ecx, 0xfffffff8
inc ecx
jne 0x405e2b
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
push 2
push ecx
push edx
mov ecx, ebp
call fcn.00401145
mov eax, dword [ebp + 0x248]
add eax, esi
cmp dword [eax], 2
jne 0x405e5e
mov ecx, dword [ebp + 0xde0]
and ecx, reloc.DSOUND.dll_DirectSoundCreate
jns 0x405e4b
dec ecx
or ecx, 0xfffffffe
inc ecx
jne 0x405e5e
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
push 0
push edx
push eax
mov ecx, ebp
call fcn.00401145
mov eax, edi
mov ecx, dword [ebp + 0xdbc]
inc edi
add esi, 0x20
cmp edi, ecx
jl 0x405d4d
inc eax
or ecx, 0xffffffff
mov dword [ebp + 0xdbc], eax
mov eax, dword [ebp + 0xdcc]
test eax, eax
mov dword [esp + 0x10], 0
jle 0x406052
xor ebx, ebx
mov edx, dword [ebp + 0x258]
mov al, byte [edx + ebx + 0x14]
lea esi, [edx + ebx]
test al, al
je 0x406038
mov eax, dword [ebp + 0xde0]
and eax, 0x80000003
jns 0x405ebb
dec eax
or eax, 0xfffffffc
inc eax
jne 0x405ec0
dec dword [esi + 0xc]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
add edx, ecx
mov dword [esi + 8], edx
mov ecx, dword [esi + 0x10]
mov eax, edx
sub eax, ecx
jns 0x405ed8
mov byte [esi + 0x14], 0
mov edi, dword [esi + 4]
mov eax, 0x88888889
imul edi
mov ecx, edx
mov eax, 0x88888889
add ecx, edi
mov edi, dword [esi + 8]
sar ecx, 4
mov edx, ecx
shr edx, 0x1f
add ecx, edx
imul edi
add edx, edi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea edx, [edx + edx*4]
lea eax, [ecx + edx*4]
mov ecx, dword [ebp + 0x23c]
cmp byte [ecx + eax], 0
je 0x405f39
push 0xfffffffffffffffe
push eax
mov ecx, ebp
call fcn.00401195
mov edx, dword [ebp + 0x258]
mov ecx, 0x436400
lea esi, [edx + ebx]
mov byte [esi + 0x14], 0
call fcn.004010c3
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x10]
sub edi, eax
mov eax, 0x88888889
imul edi
mov ecx, edx
add ecx, edi
mov edi, dword [esi + 8]
sar ecx, 4
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, 0x88888889
imul edi
add edx, edi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea edx, [edx + edx*4]
lea eax, [ecx + edx*4]
mov ecx, dword [ebp + 0x23c]
cmp byte [ecx + eax], 0
je 0x405f9f
push 0xfffffffffffffffe
push eax
mov ecx, ebp
call fcn.00401195
mov edx, dword [ebp + 0x258]
mov ecx, 0x436400
lea esi, [edx + ebx]
mov byte [esi + 0x14], 0
call fcn.004010c3
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 4]
add edi, eax
mov eax, 0x88888889
imul edi
mov ecx, edx
add ecx, edi
mov edi, dword [esi + 8]
sar ecx, 4
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, 0x88888889
imul edi
add edx, edi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add edx, eax
lea edx, [edx + edx*4]
lea eax, [ecx + edx*4]
mov ecx, dword [ebp + 0x23c]
cmp byte [ecx + eax], 0
je 0x406005
push 0xfffffffffffffffe
push eax
mov ecx, ebp
call fcn.00401195
mov edx, dword [ebp + 0x258]
mov ecx, 0x436400
lea esi, [edx + ebx]
mov byte [esi + 0x14], 0
call fcn.004010c3
cmp dword [esi], 0
jne 0x406034
mov eax, dword [ebp + 0xde0]
and eax, 0x80000003
jns 0x40601c
dec eax
or eax, 0xfffffffc
inc eax
jne 0x406034
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x10]
push 1
push ecx
mov ecx, dword [esi + 4]
add edx, ecx
mov ecx, ebp
push edx
call fcn.00401145
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov edx, dword [ebp + 0xdcc]
inc eax
add ebx, 0x18
cmp eax, edx
mov dword [esp + 0x10], eax
jl 0x405e94
mov edi, dword [ebp + 0xdc0]
inc ecx
xor esi, esi
or eax, 0xffffffff
test edi, edi
mov dword [ebp + 0xdcc], ecx
jle 0x4060c2
mov ecx, dword [ebp + 0x24c]
mov ebx, 0xf
add ecx, 4
mov dl, byte [ecx + 0x18]
test dl, dl
je 0x4060ba
mov eax, dword [ebp + 0xde0]
cdq
idiv dword [ecx + 0x14]
test edx, edx
jne 0x406099
mov edx, dword [ecx + 0xc]
inc edx
mov dword [ecx + 0xc], edx
mov eax, dword [ecx + 0x10]
inc eax
mov dword [ecx + 0x10], eax
mov eax, dword [ecx + 8]
mov edx, dword [ecx]
add edx, eax
mov dword [ecx], edx
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 4]
add eax, edx
mov dword [ecx + 4], eax
mov eax, dword [ecx + 0x10]
cmp eax, ebx
jle 0x4060b8
mov byte [ecx + 0x18], 0
mov eax, esi
inc esi
add ecx, 0x20
cmp esi, edi
jl 0x406076
mov esi, dword [ebp + 0xde8]
inc eax
test esi, esi
mov dword [ebp + 0xdc0], eax
je 0x40614c
mov eax, dword [ebp + 0xde0]
and eax, 0x8000000f
jns 0x4060e5
dec eax
or eax, 0xfffffff0
inc eax
jne 0x40614c
call fcn.004181e8
cdq
mov ecx, 0x12c
idiv ecx
and esi, reloc.DSOUND.dll_DirectSoundCreate
mov edi, edx
jns 0x406103
dec esi
or esi, 0xfffffffe
inc esi
jne 0x40610b
add edi, 0x12c
call fcn.004181e8
cdq
mov ecx, 6
idiv ecx
mov ecx, ebp
add edx, 0x10
push edx
push edi
call fcn.0040119a
mov ecx, dword [ebp + 0xde8]
inc ecx
mov eax, ecx
mov dword [ebp + 0xde8], ecx
cmp eax, 0x10
jle 0x406142
mov dword [ebp + 0xde8], 0
mov ecx, 0x434310
call fcn.004010c3
mov edx, dword [ebp + 0xdc4]
mov ebx, dword [ebp + 0x26c]
xor ecx, ecx
or eax, 0xffffffff
test edx, edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ecx
jle 0x4062ae
mov edi, dword [ebp + 0x250]
xor esi, esi
mov dl, byte [esi + edi + 0x18]
test dl, dl
je 0x406298
mov ecx, dword [ebp + 0xde0]
mov ebx, 7
mov eax, ecx
cdq
idiv ebx
test edx, edx
jne 0x406199
inc dword [esi + edi + 0x10]
mov eax, dword [esi + edi + 0x14]
cmp eax, 8
jge 0x4061b6
and ecx, 0x80000003
jns 0x4061af
dec ecx
or ecx, 0xfffffffc
inc ecx
jne 0x4061b6
inc eax
mov dword [esi + edi + 0x14], eax
mov edx, dword [esi + edi + 0xc]
mov ebx, dword [esi + edi + 4]
add ebx, edx
mov dword [esi + edi + 4], ebx
mov eax, dword [esi + edi + 0x10]
mov ecx, dword [esi + edi + 8]
xor ebx, ebx
add ecx, eax
mov dword [esi + edi + 8], ecx
mov eax, dword [esi + edi + 4]
cmp eax, ebx
jge 0x4061f4
mov dword [esi + edi + 4], ebx
mov ecx, dword [esi + edi + 0xc]
neg ecx
mov dword [esi + edi + 0xc], ecx
mov ecx, 0x434530
call fcn.004010c3
mov ecx, dword [esi + edi + 4]
mov eax, 0x239
cmp ecx, eax
jle 0x406219
mov dword [esi + edi + 4], eax
mov edx, dword [esi + edi + 0xc]
neg edx
mov ecx, 0x434530
mov dword [esi + edi + 0xc], edx
call fcn.004010c3
cmp dword [esi + edi + 8], ebx
jge 0x406237
mov dword [esi + edi + 8], ebx
mov eax, dword [esi + edi + 0x10]
neg eax
mov ecx, 0x434530
mov dword [esi + edi + 0x10], eax
call fcn.004010c3
cmp dword [esi + edi + 8], 0x1e0
jle 0x406246
mov byte [esi + edi + 0x18], 0
mov eax, dword [esi + edi + 8]
cmp eax, 0x1a4
jle 0x40628e
cmp eax, 0x1c3
jge 0x40628e
mov eax, dword [esi + edi + 4]
mov ecx, dword [ebp + 0x26c]
lea edx, [eax + 0x1b]
cmp edx, ecx
jl 0x40628e
mov edx, dword [ebp + 0x264]
add eax, 4
add edx, ecx
cmp eax, edx
jg 0x40628e
mov eax, dword [esi + edi]
mov ecx, ebp
push eax
call fcn.00401050
mov edi, dword [ebp + 0x250]
mov byte [esi + edi + 0x18], 0
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov eax, ecx
mov edx, dword [ebp + 0xdc4]
inc ecx
add esi, 0x1c
cmp ecx, edx
mov dword [esp + 0x10], ecx
jl 0x406175
mov ecx, dword [ebp + 0x26c]
mov edx, dword [ebp + 0xdc8]
sub ebx, ecx
xor edi, edi
inc eax
xor ecx, ecx
or esi, 0xffffffff
cmp edx, edi
mov dword [ebp + 0xdc4], eax
jle 0x4062fb
mov eax, dword [ebp + 0x254]
mov edi, 0x20
add eax, 0x10
cmp byte [eax], 0
je 0x4062f1
mov esi, dword [eax - 4]
inc esi
cmp esi, edi
mov dword [eax - 4], esi
jle 0x4062ef
mov byte [eax], 0
mov esi, ecx
inc ecx
add eax, 0x14
cmp ecx, edx
jl 0x4062dc
xor edi, edi
mov ecx, dword [ebp + 0x270]
inc esi
inc ecx
mov dword [ebp + 0xdc8], esi
and ecx, 0x8000001f
jns 0x406316
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, dword [ebp + 0xdf0]
mov dword [ebp + 0x270], ecx
cmp eax, edi
je 0x406339
mov ecx, dword [esp + 0x18]
mov edx, ecx
sub edx, ebx
mov dword [ebp + 0x26c], edx
jmp 0x406526
mov ecx, dword [ebp + 0xdf4]
mov dword [esp + 0x1c], edi
inc ecx
mov eax, ecx
mov dword [ebp + 0xdf4], ecx
cmp eax, 0x870
jle 0x406373
mov eax, dword [ebp + 0xe00]
mov ecx, dword [ebp + 0x25c]
mov dword [ebp + 0xdf4], edi
lea eax, [eax + eax*2]
mov dword [ecx + eax*4 + 4], edi
mov ecx, ebp
call fcn.0040115e
mov eax, dword [ebp + 0xdbc]
xor ecx, ecx
cmp eax, edi
lea esi, [eax - 1]
jle 0x4063b4
mov edi, dword [ebp + 0x248]
mov eax, esi
shl eax, 5
lea edx, [edi + 8]
mov bl, byte [edx + 0x15]
test bl, bl
je 0x4063a6
mov ebx, dword [edx]
cmp ebx, dword [eax + edi + 8]
jl 0x4063a6
mov eax, ecx
mov esi, ecx
shl eax, 5
mov ebx, dword [ebp + 0xdbc]
inc ecx
add edx, 0x20
cmp ecx, ebx
jl 0x406390
mov edx, dword [ebp + 0x248]
shl esi, 5
add esi, edx
cmp dword [esi + 8], 0x168
jle 0x4063e6
mov eax, dword [ebp + 0x264]
mov ecx, dword [esi + 4]
sar eax, 1
sub ecx, eax
mov dword [esp + 0x1c], 1
mov dword [esp + 0x18], ecx
jmp 0x40648f
mov eax, dword [ebp + 0xdc4]
test eax, eax
je 0x406461
xor edx, edx
lea ecx, [eax - 1]
test eax, eax
jle 0x406440
mov edi, dword [ebp + 0x250]
lea eax, [ecx*8]
sub eax, ecx
mov dword [esp + 0x10], edx
shl eax, 2
lea esi, [edi + 8]
mov bl, byte [esi + 0x10]
test bl, bl
je 0x406427
mov ebx, dword [esi]
cmp ebx, dword [eax + edi + 8]
jl 0x406427
mov eax, dword [esp + 0x10]
mov ecx, edx
mov ebx, dword [esp + 0x10]
inc edx
add ebx, 0x1c
add esi, 0x1c
mov dword [esp + 0x10], ebx
mov ebx, dword [ebp + 0xdc4]
cmp edx, ebx
jl 0x406412
mov eax, dword [ebp + 0x250]
lea edx, [ecx*8]
sub edx, ecx
mov ecx, dword [eax + edx*4 + 4]
mov dword [esp + 0x1c], 1
mov dword [esp + 0x18], ecx
jmp 0x40648f
mov eax, dword [ebp + 0xdd0]
test eax, eax
je 0x40647f
mov ecx, dword [ebp + 0x23c]
mov eax, 0x27f
cmp byte [ecx + eax], 0
jne 0x406497
dec eax
jns 0x406476
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
test eax, eax
je 0x406526
test ecx, ecx
jge 0x4064b5
xor ecx, ecx
jmp 0x4064c8
cdq
mov ecx, 0x14
mov dword [esp + 0x1c], 1
idiv ecx
lea ecx, [edx + edx*2]
lea ecx, [ecx + ecx*4]
shl ecx, 1
mov dword [esp + 0x18], ecx
jmp 0x40648f
mov esi, dword [ebp + 0x264]
mov eax, 0x258
sub eax, esi
cmp ecx, eax
jle 0x4064cc
mov ecx, eax
mov dword [esp + 0x18], ecx
mov esi, dword [ebp + 0x26c]
mov eax, esi
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
sar eax, 1
lea edx, [esi + eax]
cmp edx, ecx
jge 0x4064ec
mov dword [ebp + 0x26c], edx
jmp 0x4064f8
sub esi, eax
cmp esi, ecx
jle 0x4064f8
mov dword [ebp + 0x26c], esi
mov eax, dword [ebp + 0x26c]
cmp eax, ecx
jge 0x406511
add eax, 3
cmp eax, ecx
mov dword [ebp + 0x26c], eax
jle 0x406526
jmp 0x406520
jle 0x406526
add eax, 0xfffffffd
cmp eax, ecx
mov dword [ebp + 0x26c], eax
jge 0x406526
mov dword [ebp + 0x26c], ecx
test byte [ebp + 0x278], 4
je 0x4065e3
mov esi, dword [ebp + 0xdd0]
test esi, esi
je 0x4065e3
xor ecx, ecx
call fcn.004145e0
test al, al
jne 0x406566
mov eax, dword [ebp + 0xdf0]
test eax, eax
je 0x406566
push 0x39
mov ecx, 0x431af8
call fcn.00413ef0
test al, al
je 0x4065df
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
call edi
sub eax, dword [0x437850]
cmp eax, 0xfa
jbe 0x4065df
lea eax, [esi - 1]
test eax, eax
mov dword [ebp + 0xdd0], eax
jge 0x406592
mov dword [ebp + 0xdd0], 0
mov edx, dword [ebp + 0x26c]
push 5
push 0xffffffffffffffff
push 0x1c3
push edx
push 0
mov ecx, ebp
call fcn.00401032
mov eax, dword [ebp + 0x264]
mov ecx, dword [ebp + 0x26c]
push 5
push 0xffffffffffffffff
lea edx, [eax + ecx - 0xa]
push 0x1c3
push edx
push 0
mov ecx, ebp
call fcn.00401032
mov ecx, 0x434860
call fcn.004010c3
call edi
mov dword [0x437850], eax
mov ecx, dword [esp + 0x18]
test byte [ebp + 0x278], 1
je 0x406652
xor ecx, ecx
call fcn.004145e0
test al, al
jne 0x406611
mov eax, dword [ebp + 0xdf0]
test eax, eax
je 0x406611
push 0x39
mov ecx, 0x431af8
call fcn.00413ef0
test al, al
je 0x40664e
mov eax, dword [ebp + 0xdd4]
dec eax
mov dword [ebp + 0xdd4], eax
jns 0x40662a
mov dword [ebp + 0xdd4], 0
mov eax, dword [ebp + 0xdd4]
test eax, eax
je 0x40664e
push 0xffffffffffffffff
mov ecx, 0x433970
call fcn.00411800
test al, al
jne 0x40664e
mov ecx, 0x433970
call fcn.004010c3
mov ecx, dword [esp + 0x18]
mov al, byte [ebp + 0x284]
test al, al
je 0x4066ed
mov edx, dword [ebp + 0x27c]
mov eax, dword [ebp + 0x26c]
cmp edx, eax
jge 0x406679
add edx, 5
mov dword [ebp + 0x27c], edx
cmp dword [ebp + 0x27c], eax
jle 0x406687
mov dword [ebp + 0x27c], eax
mov eax, dword [ebp + 0xde0]
and eax, 0x8000000f
jns 0x406699
dec eax
or eax, 0xfffffff0
inc eax
cmp eax, 8
jne 0x4066ac
mov ecx, 0x434ca0
call fcn.004010c3
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp + 0x27c]
mov eax, dword [ebp + 0x26c]
cmp edx, eax
jne 0x4066ed
mov eax, dword [ebp + 0x280]
mov ecx, dword [ebp + 0x264]
sub ecx, eax
mov byte [ebp + 0x284], 0
mov dword [ebp + 0x264], ecx
mov eax, ecx
mov ecx, 0x4318d8
mov dword [ebp + 0x268], eax
call fcn.004010c3
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp + 0xdf8]
test eax, eax
jle 0x4066fe
dec eax
mov dword [ebp + 0xdf8], eax
mov eax, dword [ebp + 0xe00]
lea edx, [eax + eax*2]
mov eax, dword [ebp + 0x25c]
mov esi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 0xddc]
lea edi, [edx + 0x32]
cmp edi, esi
jge 0x406728
mov dword [ebp + 0xddc], edi
jmp 0x406735
add edx, 0xffffffce
cmp edx, esi
jle 0x406735
mov dword [ebp + 0xddc], edx
mov edx, dword [ebp + 0xddc]
mov esi, dword [eax]
cmp edx, esi
jge 0x406752
add edx, 2
mov dword [ebp + 0xddc], edx
mov eax, dword [eax]
cmp edx, eax
jle 0x406769
jmp 0x406763
jle 0x406769
add edx, 0xfffffffe
mov dword [ebp + 0xddc], edx
mov eax, dword [eax]
cmp edx, eax
jge 0x406769
mov dword [ebp + 0xddc], eax
mov esi, dword [ebp + 0x268]
cmp esi, 6
jne 0x406782
mov ecx, 0x433270
call fcn.004010c3
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp + 0x264]
cmp esi, eax
jge 0x4067a7
lea ecx, [esi + 2]
cmp ecx, eax
mov dword [ebp + 0x268], ecx
jle 0x4067e8
pop edi
mov dword [ebp + 0x268], eax
pop esi
pop ebp
pop ebx
add esp, 0x30
ret
jle 0x4067e8
add esi, 0xfffffffe
cmp esi, eax
mov dword [ebp + 0x268], esi
jge 0x4067bc
mov dword [ebp + 0x268], eax
mov edx, 0x258
inc ecx
sub edx, eax
mov dword [esp + 0x18], ecx
cmp ecx, edx
jle 0x4067d2
mov ecx, edx
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x1c]
push edx
push ecx
call dword [sym.imp.USER32.dll_SetCursorPos]
mov eax, dword [esp + 0x18]
mov dword [ebp + 0x26c], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret