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

Disassembly:
push ebp
push ebx
push edi
mov edx, 0x1f
sub esp, 4
mov dword [esp], 0
dec edx
jne 0x414e7f
call fcn.0052ed00
mov ebp, dword [esp + 0x8c]
cmp word [ebp + 0x12], 0
je 0x414ea3
xor eax, eax
jmp 0x414ea8
mov eax, 1
and eax, eax
jne 0x414ec9
mov ebp, dword [esp + 0x8c]
cmp word [ebp + 0x14], 0
je 0x414ebe
xor eax, eax
jmp 0x414ec3
mov eax, 1
and eax, eax
jne 0x414ec9
jmp 0x414ed0
mov eax, 1
jmp 0x414ed2
xor eax, eax
and eax, eax
je 0x414edb
jmp 0x415b43
push 0x7f02
push 0
call fcn.00439a0d
push 0x20
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x14]
push eax
mov ebp, dword [esp + 0x94]
movsx eax, word [ebp + 0x12]
push eax
push 0xffffffff
call fcn.00526abd
mov dword [esp], eax
push 5
xor eax, eax
push eax
lea eax, [esp + 0x60]
push eax
push 4
call fcn.00527990
mov ebp, dword [esp + 0x8c]
push ebp
mov eax, 0x5eef4a
pop ebp
push eax
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
pop eax
mov byte [esp + 0x60], al
lea edx, [esp + 0x64]
push edx
push 0
push 5
push 5
push 4
call fcn.0051b74f
mov byte [esp + 0x28], 0
jmp 0x414f77
mov eax, 4
cmp al, byte [esp + 0x28]
jb 0x415036
mov ebp, dword [esp + 0x8c]
push ebp
push edx
call fcn.0052eb60
pop edx
push eax
mov edx, str.Color
push edx
call fcn.0052eba0
push edx
call fcn.0052eb60
pop edx
push eax
push edx
call fcn.0052eb60
pop edx
push eax
movzx eax, byte [esp + 0x38]
cdq
push edx
push eax
add dword [esp], 1
adc dword [esp + 4], 0
pop eax
pop edx
push edx
push eax
call fcn.0052bdc0
pop eax
pop eax
pop ebp
push eax
push dword [esp]
call fcn.004f6460
call fcn.004f6442
add dword [esp], edx
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
movzx ebx, byte [esp + 0x2c]
mov ebp, dword [esp + 0x68]
shl ebx, 2
pop eax
mov dword [ebp + ebx], eax
movzx ebx, byte [esp + 0x28]
shl ebx, 2
mov ebx, dword [ebp + ebx]
cmp ebx, 0xffffffff
je 0x41502b
movzx ebx, byte [esp + 0x34]
inc ebx
push ebx
pop eax
mov byte [esp + 0x34], al
movzx eax, byte [esp + 0x28]
push eax
pop eax
mov byte [esp + 0x30], al
add byte [esp + 0x28], 1
jae 0x414f77
mov ebp, dword [esp + 0x8c]
push ebp
mov eax, str.Delay
pop ebp
push eax
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
pop eax
mov word [esp + 0x6c], ax
mov ebp, dword [esp + 0x8c]
push ebp
mov eax, str.CenterPosition
pop ebp
push eax
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
pop eax
mov byte [esp + 0x70], al
mov ebp, dword [esp + 0x8c]
push ebp
mov eax, str.Direction
pop ebp
push eax
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
pop eax
mov byte [esp + 0x74], al
mov ebp, dword [esp + 0x8c]
push ebp
mov eax, 0x5ea316
pop ebp
push eax
push dword [ebp + 0x1a]
call fcn.005180d3
mov ebp, eax
push dword [ebp]
call fcn.0052c130
push eax
pop eax
mov byte [esp + 0x78], al
push dword [esp + 0x8c]
call fcn.004b3f74
mov byte [esp + 0x2c], 0
jmp 0x4150e6
mov eax, 4
cmp al, byte [esp + 0x2c]
jb 0x41535d
movzx ebx, byte [esp + 0x2c]
mov ebp, dword [esp + 0x64]
shl ebx, 2
mov ebx, dword [ebp + ebx]
cmp ebx, 0xffffffff
je 0x415352
movzx ebx, byte [esp + 0x30]
mov ebp, dword [esp + 0x64]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcd3
push eax
pop eax
mov byte [esp + 4], al
movzx ebx, byte [esp + 0x30]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcdd
push eax
pop eax
mov byte [esp + 8], al
movzx ebx, byte [esp + 0x30]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcec
push eax
pop eax
mov byte [esp + 0xc], al
movzx ebx, byte [esp + 0x2c]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcd3
push eax
pop eax
mov byte [esp + 0x10], al
movzx ebx, byte [esp + 0x2c]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcdd
push eax
pop eax
mov byte [esp + 0x14], al
movzx ebx, byte [esp + 0x2c]
shl ebx, 2
push dword [ebp + ebx]
call fcn.0051bcec
push eax
pop eax
mov byte [esp + 0x18], al
mov byte [esp + 0x38], 0
movzx ebx, byte [esp + 0x34]
mov eax, 0x64
cdq
idiv ebx
mov ebx, eax
dec ebx
push ebx
pop eax
mov byte [esp + 0x3c], al
movzx eax, byte [esp + 0x38]
push eax
pop eax
mov byte [esp + 0x28], al
jmp 0x4151c4
movzx eax, byte [esp + 0x3c]
cmp al, byte [esp + 0x28]
jb 0x415347
movzx ebx, byte [esp + 4]
movzx eax, byte [esp + 0x28]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x3c]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x38]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f79fc]
fdivp st(1)
movzx eax, byte [esp + 0x10]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 4]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f7984]
fmulp st(1)
sub esp, 8
fstp qword [esp]
call fcn.00500b00
add ebx, eax
push ebx
pop eax
mov byte [esp + 0x1c], al
movzx ebx, byte [esp + 8]
movzx eax, byte [esp + 0x28]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x3c]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x38]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f79fc]
fdivp st(1)
movzx eax, byte [esp + 0x14]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 8]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f7984]
fmulp st(1)
sub esp, 8
fstp qword [esp]
call fcn.00500b00
add ebx, eax
push ebx
pop eax
mov byte [esp + 0x20], al
movzx ebx, byte [esp + 0xc]
movzx eax, byte [esp + 0x28]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x3c]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0x38]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f79fc]
fdivp st(1)
movzx eax, byte [esp + 0x18]
mov dword [esp - 4], eax
fild dword [esp - 4]
movzx eax, byte [esp + 0xc]
mov dword [esp - 4], eax
fisub dword [esp - 4]
fadd qword [0x5f7984]
fmulp st(1)
sub esp, 8
fstp qword [esp]
call fcn.00500b00
add ebx, eax
push ebx
pop eax
mov byte [esp + 0x24], al
push dword [esp + 0x58]
call fcn.00527a4d
push 0xff
movzx eax, byte [esp + 0x28]
push eax
movzx eax, byte [esp + 0x28]
push eax
movzx eax, byte [esp + 0x28]
push eax
call fcn.0051bcfb
push eax
mov ebp, dword [esp + 0x60]
pop eax
mov dword [ebp + 8], eax
add byte [esp + 0x28], 1
jae 0x4151c4
movzx eax, byte [esp + 0x2c]
push eax
pop eax
mov byte [esp + 0x30], al
add byte [esp + 0x2c], 1
jae 0x4150e6
push dword [esp + 0x58]
call fcn.00527b34
and eax, eax
je 0x41536e
xor eax, eax
jmp 0x415373
mov eax, 1
and eax, eax
je 0x41537c
jmp 0x415b24
movzx ebx, byte [esp + 0x74]
mov eax, 1
cmp ebx, eax
jne 0x41539c
push dword [esp + 0x58]
call fcn.00527b34
mov ebx, eax
dec ebx
push ebx
pop eax
mov byte [esp + 0x40], al
mov ebp, dword [esp + 0x8c]
push dword [ebp + 0x1e]
call fcn.00527a4d
movsx eax, word [esp + 0x6c]
push eax
mov ebp, dword [esp + 0x90]
mov ebp, dword [ebp + 0x22]
pop eax
mov dword [ebp + 0x10], eax
mov ebx, dword [esp + 0x54]
movsx ecx, word [esp + 0x6c]
add ebx, ecx
mov dword [esp + 0x54], ebx
push dword [esp]
call fcn.00526c95
push eax
call fcn.0051bb25
push 0x40
call fcn.0051bbec
movsx eax, byte [esp + 0x40]
push eax
push dword [esp + 0x5c]
call fcn.00527c1b
mov byte [esp + 0x28], 0
jmp 0x4153fc
mov eax, 0x64
cmp al, byte [esp + 0x28]
jb 0x415456
mov ebp, dword [esp + 0x5c]
push dword [ebp + 8]
movzx eax, byte [esp + 0x2c]
mov dword [esp - 4], eax
fild dword [esp - 4]
fdiv dword [0x5f7964]
sub esp, 4
fstp dword [esp]
call fcn.0051bf84
push dword [esp + 0x58]
call fcn.00527b00
and eax, eax
je 0x41543d
xor eax, eax
jmp 0x415442
mov eax, 1
and eax, eax
je 0x41544f
push dword [esp + 0x58]
call fcn.00527bf4
add byte [esp + 0x28], 1
jae 0x4153fc
movzx ebx, byte [esp + 0x70]
push ebx
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x41549a
mov word [esp + 0x48], 0
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x12]
push eax
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x14]
push eax
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 1
cmp ebx, dword [esp]
jne 0x4154f9
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
neg ebx
push ebx
pop eax
mov word [esp + 0x48], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
neg ebx
push ebx
pop eax
mov word [esp + 0x4c], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 2
cmp ebx, dword [esp]
jne 0x415549
mov word [esp + 0x48], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
neg ebx
push ebx
pop eax
mov word [esp + 0x4c], ax
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x12]
push eax
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 3
cmp ebx, dword [esp]
jne 0x41559b
mov word [esp + 0x48], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
neg ebx
push ebx
pop eax
mov word [esp + 0x4c], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 4
cmp ebx, dword [esp]
jne 0x4155eb
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
neg ebx
push ebx
pop eax
mov word [esp + 0x48], ax
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x14]
push eax
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 5
cmp ebx, dword [esp]
jne 0x41562e
mov word [esp + 0x48], 0
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x14]
push eax
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 6
cmp ebx, dword [esp]
jne 0x415680
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
neg ebx
push ebx
pop eax
mov word [esp + 0x48], ax
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 7
cmp ebx, dword [esp]
jne 0x4156c0
mov word [esp + 0x48], 0
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x12]
push eax
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
jmp 0x415700
mov ebx, 8
cmp ebx, dword [esp]
jne 0x415700
mov word [esp + 0x48], 0
mov word [esp + 0x4c], 0
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x50], ax
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x14]
add ebx, ebx
push ebx
pop eax
mov word [esp + 0x54], ax
pop eax
movzx ebx, byte [esp + 0x60]
push ebx
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x415730
movsx eax, word [esp + 0x54]
push eax
movsx eax, word [esp + 0x54]
push eax
movsx eax, word [esp + 0x54]
push eax
movsx eax, word [esp + 0x54]
push eax
call fcn.0051c18d
jmp 0x41596a
mov ebx, 1
cmp ebx, dword [esp]
jne 0x4157a4
movsx ebx, word [esp + 0x54]
mov dword [esp - 4], ebx
fild dword [esp - 4]
fdiv qword [0x5f799c]
push eax
fistp dword [esp]
movsx ebx, word [esp + 0x54]
mov dword [esp - 4], ebx
fild dword [esp - 4]
fdiv qword [0x5f799c]
push eax
fistp dword [esp]
movsx ebx, word [esp + 0x54]
movsx edi, word [esp + 0x5c]
mov eax, edi
mov ecx, 2
cdq
idiv ecx
mov edi, eax
add ebx, edi
push ebx
movsx ebx, word [esp + 0x54]
movsx edi, word [esp + 0x5c]
mov eax, edi
mov ecx, 2
cdq
idiv ecx
mov edi, eax
add ebx, edi
push ebx
call fcn.0051c294
jmp 0x41596a
mov ebx, 2
cmp ebx, dword [esp]
jne 0x4157ef
push 0x42340000
movsx ebx, word [esp + 0x50]
movsx edi, word [esp + 0x58]
mov eax, edi
mov ecx, 2
cdq
idiv ecx
mov edi, eax
add ebx, edi
push ebx
movsx ebx, word [esp + 0x50]
movsx edi, word [esp + 0x58]
mov eax, edi
mov ecx, 2
cdq
idiv ecx
mov edi, eax
add ebx, edi
push ebx
call fcn.0051c3ce
jmp 0x41596a
mov ebx, 3
cmp ebx, dword [esp]
jne 0x41596a
movzx ebx, byte [esp + 0x74]
push ebx
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x41582b
movsx eax, word [esp + 0x58]
push eax
movsx eax, word [esp + 0x58]
push eax
movsx eax, word [esp + 0x60]
push eax
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 1
cmp ebx, dword [esp]
jne 0x415855
movsx eax, word [esp + 0x58]
push eax
movsx eax, word [esp + 0x58]
push eax
push 0
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 2
cmp ebx, dword [esp]
jne 0x41587e
movsx eax, word [esp + 0x58]
push eax
push 0
push 0
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 3
cmp ebx, dword [esp]
jne 0x4158a8
movsx eax, word [esp + 0x58]
push eax
push 0
push 0
movsx eax, word [esp + 0x60]
push eax
call fcn.0051c695
jmp 0x415969
mov ebx, 4
cmp ebx, dword [esp]
jne 0x4158d1
push 0
movsx eax, word [esp + 0x58]
push eax
push 0
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 5
cmp ebx, dword [esp]
jne 0x4158f7
push 0
push 0
push 0
movsx eax, word [esp + 0x60]
push eax
call fcn.0051c695
jmp 0x415969
mov ebx, 6
cmp ebx, dword [esp]
jne 0x41591e
push 0
movsx eax, word [esp + 0x58]
push eax
movsx eax, word [esp + 0x60]
push eax
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 7
cmp ebx, dword [esp]
jne 0x415944
push 0
push 0
movsx eax, word [esp + 0x60]
push eax
push 0
call fcn.0051c695
jmp 0x415969
mov ebx, 8
cmp ebx, dword [esp]
jne 0x415969
push 0
push 0
movsx eax, word [esp + 0x60]
push eax
movsx eax, word [esp + 0x60]
push eax
call fcn.0051c695
pop eax
pop eax
mov ebp, dword [esp + 0x8c]
movsx eax, word [ebp + 0x14]
push eax
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x12]
push eax
push 0
push 0
call fcn.0051c8be
call fcn.0051bc8b
cmp byte [esp + 0x90], 0
je 0x4159c3
push 0xffffffff
push dword [esp + 4]
call fcn.0052696e
push eax
mov ebp, dword [esp + 0x90]
mov ebp, dword [ebp + 0x22]
pop eax
mov dword [ebp + 8], eax
jmp 0x415ab9
mov ebp, dword [esp + 0x8c]
mov ebp, dword [ebp + 0x22]
add ebp, 8
push ebp
mov ebp, dword [esp + 0x90]
movsx ebx, word [ebp + 0x12]
mov ebp, dword [esp + 0x90]
movsx eax, word [ebp + 0x14]
imul ebx, eax
dec ebx
mov eax, ebx
inc eax
pop ebp
lea edx, [ebp + 4]
push edx
push 0
push 5
push eax
push 4
call fcn.0051b74f
push dword [esp]
call fcn.00526c95
push eax
call fcn.0051bb25
push 0x100
call fcn.0051bbec
mov word [esp + 0x48], 0
jmp 0x415a29
mov ebp, dword [esp + 0x8c]
movsx ebx, word [ebp + 0x14]
dec ebx
mov eax, ebx
cmp ax, word [esp + 0x48]
jl 0x415ab4
mov word [esp + 0x44], 0
jmp 0x415a47
mov ebp, dword [esp + 0x8c]
movsx ebx, word [ebp + 0x12]
dec ebx
mov eax, ebx
cmp ax, word [esp + 0x44]
jl 0x415aa9
movsx eax, word [esp + 0x48]
push eax
movsx eax, word [esp + 0x48]
push eax
call fcn.0051c90c
push eax
mov ebp, dword [esp + 0x90]
mov ebp, dword [ebp + 0x22]
add ebp, 8
push ebp
movsx ebx, word [esp + 0x50]
mov ebp, dword [esp + 0x94]
movsx eax, word [ebp + 0x12]
imul ebx, eax
movsx ecx, word [esp + 0x4c]
add ebx, ecx
pop ebp
mov ebp, dword [ebp + 4]
shl ebx, 2
pop eax
mov dword [ebp + ebx], eax
inc word [esp + 0x44]
jno 0x415a47
inc word [esp + 0x48]
jno 0x415a29
call fcn.0051bc8b
movzx ebx, byte [esp + 0x74]
push ebx
xor ebx, ebx
cmp ebx, dword [esp]
jne 0x415af4
movsx ebx, byte [esp + 0x44]
movzx ecx, byte [esp + 0x7c]
add ebx, ecx
push ebx
pop eax
mov byte [esp + 0x44], al
movsx ebx, byte [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00527b34
mov edi, eax
dec edi
cmp ebx, edi
jle 0x415af2
add esp, 4
jmp 0x415b24
jmp 0x415b1e
mov ebx, 1
cmp ebx, dword [esp]
jne 0x415b1e
movsx ebx, byte [esp + 0x44]
movzx ecx, byte [esp + 0x7c]
sub ebx, ecx
push ebx
pop eax
mov byte [esp + 0x44], al
movsx ebx, byte [esp + 0x44]
and ebx, ebx
jge 0x415b1e
add esp, 4
jmp 0x415b24
pop eax
jmp 0x41539c
push dword [esp]
call fcn.00526605
push 0x7f00
push 0
call fcn.00439a0d
mov eax, dword [esp + 0x54]
jmp 0x415b43
push eax
push dword [esp + 0x68]
call fcn.0051b9d6
push dword [esp + 0x5c]
call fcn.00527e3f
pop eax
add esp, 0x7c
pop edi
pop ebx
pop ebp
ret 8