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

Disassembly:
sub esp, 0x174
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x30], 0
mov ax, word [esi + 0xc40]
mov ecx, dword [esi + 0x3616c]
mov bp, word [esi + 0xc3c]
mov bx, word [esi + 0xc3e]
sub ax, 5
mov dword [esp + 0x20], ebp
test ecx, ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], eax
je 0x459989
mov eax, dword [esi + 0x4dd34]
push eax
push 2
movsx edx, bx
movsx eax, bp
push edx
push eax
call fcn.00488ff0
mov ecx, dword [esi + 0x36190]
test ecx, ecx
je 0x4599a9
mov edx, dword [esi + 0x4dd34]
push edx
push 0x15
movsx eax, bx
movsx edx, bp
push eax
push edx
call fcn.00488ff0
mov ecx, 0x10
xor eax, eax
lea edi, [esp + 0xc4]
mov dword [esp + 0x1c], 0x2d
rep stosd dword es:[edi], eax
mov ecx, 0x10
lea edi, [esp + 0x104]
rep stosd dword es:[edi], eax
mov ecx, 0x10
lea edi, [esp + 0x144]
rep stosd dword es:[edi], eax
mov al, byte [esi + 0xcc6]
cmp al, 0xff
je 0x45a2a5
test al, al
jne 0x45a2f6
mov ecx, dword [esi + 0xbf4]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x18], eax
jle 0x459f66
xor ebp, ebp
mov dword [esp + 0x2c], ebp
movsx ecx, word [esi + 0xc44]
add ecx, eax
mov eax, dword [esi + ecx*4 + 0x4b100]
test eax, eax
je 0x459f44
cmp ecx, 0x79
jge 0x459f44
lea edx, [esp + 0x144]
lea ecx, [esp + 0x104]
push edx
lea edx, [esp + 0xc8]
push ecx
push edx
push eax
mov ecx, esi
call fcn.00453d20
movsx edi, word [esp + 0x20]
movsx eax, word [esp + 0x188]
lea ecx, [edi + 0x1e]
cmp eax, ecx
jle 0x459ebb
lea edx, [edi + 0xd2]
cmp eax, edx
jge 0x459ebb
movsx eax, word [esp + 0x18c]
movsx ecx, bx
mov dword [esp + 0x24], ecx
lea edx, [ecx + ebp + 0x6e]
cmp eax, edx
mov dword [esp + 0x10], edx
jl 0x459ebb
lea ecx, [ecx + ebp + 0x7c]
cmp eax, ecx
jg 0x459ebb
lea ebp, [esi + 0x6004]
mov dword [esp + 0x30], 1
mov ecx, ebp
call fcn.00402250
movsx edx, word [esp + 0x28]
mov eax, dword [esp + 0x10]
lea ebx, [edx + edi]
lea edx, [esp + 0x84]
lea ecx, [eax + 0xf]
push ecx
push ebx
push eax
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
lea eax, [esp + 0xc4]
push 0xffffff
lea ecx, [esp + 0x88]
push eax
push ecx
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
mov eax, dword [esi + 0x4e4e0]
mov edx, dword [esp + 0x24]
test eax, eax
mov eax, dword [esp + 0x1c]
je 0x459b47
add edx, eax
mov ecx, ebp
mov dword [esp + 0x10], edx
call fcn.00402250
mov eax, dword [esp + 0x10]
add edi, 0x46
lea edx, [esp + 0x44]
mov dword [esp + 0x24], edi
lea ecx, [eax + 0xf]
push ecx
push ebx
push eax
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
lea eax, [esp + 0xc4]
push 0x32ff00
push eax
lea ecx, [esp + 0x4c]
jmp 0x459b88
add edx, eax
mov ecx, ebp
mov dword [esp + 0x10], edx
call fcn.00402250
mov eax, dword [esp + 0x10]
add edi, 0x46
lea edx, [esp + 0xb4]
mov dword [esp + 0x24], edi
lea ecx, [eax + 0xf]
push ecx
push ebx
push eax
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
lea eax, [esp + 0xc4]
push 0xffffff
push eax
lea ecx, [esp + 0xbc]
push ecx
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
lea edi, [esp + 0x104]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x459bfd
mov eax, dword [esp + 0x1c]
movsx ecx, word [esp + 0x14]
add eax, 0xf
mov dword [esp + 0x1c], eax
lea edi, [ecx + eax]
mov ecx, ebp
call fcn.00402250
mov eax, dword [esp + 0x24]
lea edx, [edi + 0xf]
push edx
push ebx
push edi
lea ecx, [esp + 0x80]
push eax
push ecx
call dword [sym.imp.user32.dll_SetRect]
lea edx, [esp + 0x104]
push 0x969696
lea eax, [esp + 0x78]
push edx
push eax
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
lea edi, [esp + 0x144]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov edi, dword [esp + 0x1c]
not ecx
dec ecx
je 0x459c6d
movsx eax, word [esp + 0x14]
add edi, 0xf
mov ecx, ebp
add eax, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], eax
call fcn.00402250
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
lea ecx, [eax + 0xf]
push ecx
push ebx
push eax
lea eax, [esp + 0xb0]
push edx
push eax
call dword [sym.imp.user32.dll_SetRect]
lea ecx, [esp + 0x144]
push 0x969696
lea edx, [esp + 0xa8]
push ecx
push edx
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
movsx eax, word [esi + 0xc44]
add eax, dword [esp + 0x18]
mov ecx, dword [esi + eax*4 + 0x4b100]
mov ax, word [ecx + 0x1e]
test ax, ax
je 0x459d04
test byte [ecx + 0x48], 1
je 0x459d04
movsx edx, ax
push edx
lea ecx, [esi + 0x4e763]
push 0x4ab764
add edi, 0xf
push 0x4ab75c
push ecx
mov dword [esp + 0x2c], edi
call dword [sym.imp.user32.dll_wsprintfA]
movsx eax, word [esp + 0x24]
add eax, edi
add esp, 0x10
mov ecx, ebp
mov dword [esp + 0x10], eax
call fcn.00402250
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
lea ecx, [eax + 0xf]
push ecx
push ebx
push eax
lea eax, [esp + 0xa0]
push edx
push eax
call dword [sym.imp.user32.dll_SetRect]
lea eax, [esi + 0x4e763]
push 0x969696
lea ecx, [esp + 0x98]
push eax
push ecx
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
movsx edx, word [esi + 0xc44]
add edx, dword [esp + 0x18]
mov eax, dword [esi + edx*4 + 0x4b100]
mov cl, byte [eax + 0x1a]
test cl, cl
je 0x459da3
mov ax, word [eax + 0x40]
cmp ax, 0x44c
jb 0x459da3
and eax, 0xffff
lea ecx, [esi + 0x4e763]
mov edx, eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
add edi, 0xf
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x1c], edi
push edx
push 0x4ab740
push ecx
call dword [sym.imp.user32.dll_wsprintfA]
movsx eax, word [esp + 0x20]
add esp, 0xc
mov ecx, ebp
add edi, eax
call fcn.00402250
mov edx, dword [esp + 0x24]
lea ecx, [edi + 0xf]
push ecx
push ebx
push edi
lea eax, [esp + 0x60]
push edx
push eax
call dword [sym.imp.user32.dll_SetRect]
lea eax, [esi + 0x4e763]
push 0x969696
lea ecx, [esp + 0x58]
push eax
push ecx
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
movsx edx, word [esi + 0xc44]
add edx, dword [esp + 0x18]
mov eax, dword [esi + edx*4 + 0x4b100]
mov cl, byte [eax + 0x1b]
test cl, cl
jne 0x459def
mov ecx, dword [esi + 0x4dd44]
movsx edx, word [eax + 0x22]
push ecx
push edx
movsx ecx, word [esp + 0x1c]
movsx eax, word [eax + 0x20]
add ecx, 0x44
push ecx
movsx ecx, word [esp + 0x2c]
add ecx, 0x3c
push ecx
mov ecx, dword [esi + eax*4 + 0x36528]
call fcn.00488ff0
jmp 0x459f40
mov dl, byte [eax + 0x1a]
cmp dl, 7
je 0x459e43
cmp dl, 8
je 0x459e43
cmp dl, 9
je 0x459e43
mov edx, dword [esi + 0x4dd44]
xor edi, edi
mov di, word [esi + 0x4e6de]
push edx
movsx ecx, cl
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e6de]
sub edx, edi
xor edi, edi
mov di, word [esi + 0x4e6be]
push edx
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e6be]
sub edx, edi
push edx
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e69e]
jmp 0x459e83
mov edx, dword [esi + 0x4dd44]
xor edi, edi
mov di, word [esi + 0x4e6de]
push edx
movsx ecx, cl
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e73e]
sub edx, edi
xor edi, edi
mov di, word [esi + 0x4e6be]
push edx
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e71e]
sub edx, edi
push edx
xor edx, edx
mov dx, word [esi + ecx*2 + 0x4e6fe]
xor ecx, ecx
mov cx, word [esi + 0x4e69e]
sub edx, ecx
movsx ecx, word [esp + 0x20]
push edx
add ecx, 0x44
movsx edx, word [eax + 0x22]
movsx eax, word [eax + 0x20]
push edx
push ecx
movsx ecx, word [esp + 0x38]
add ecx, 0x3c
push ecx
mov ecx, dword [esi + eax*4 + 0x36528]
call fcn.0048ccd0
jmp 0x459f40
mov eax, dword [esi + 0x4e4e0]
movsx ecx, bx
test eax, eax
lea ebx, [ecx + ebp + 0x6e]
lea ebp, [esi + 0x6004]
mov ecx, ebp
je 0x459f05
call fcn.00402250
movsx eax, word [esp + 0x28]
lea edx, [ebx + 0xf]
add eax, edi
push edx
push eax
push ebx
lea ecx, [esp + 0x70]
push edi
push ecx
call dword [sym.imp.user32.dll_SetRect]
lea edx, [esp + 0xc4]
push 0x32ff00
push edx
lea eax, [esp + 0x6c]
jmp 0x459f31
call fcn.00402250
movsx eax, word [esp + 0x28]
lea edx, [ebx + 0xf]
add eax, edi
push edx
push eax
push ebx
lea ecx, [esp + 0x40]
push edi
push ecx
call dword [sym.imp.user32.dll_SetRect]
lea edx, [esp + 0xc4]
push 0
push edx
lea eax, [esp + 0x3c]
push eax
mov ecx, ebp
call fcn.004022b0
mov ecx, ebp
call fcn.00402290
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esi + 0xbf4]
inc eax
add ebp, 0xf
cmp eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], ebp
jl 0x459a0d
xor ebp, ebp
lea eax, [esi + 0x4b100]
mov dword [esp + 0x18], ebp
mov ecx, 0x79
cmp dword [eax], 0
je 0x459f7d
inc ebp
add eax, 4
dec ecx
jne 0x459f77
mov eax, dword [esi + 0xbf4]
mov dword [esp + 0x18], ebp
cmp ebp, eax
jle 0x45a008
movsx ecx, word [esi + 0xc44]
mov dword [esp + 0x10], ecx
mov edx, ebp
fild dword [esp + 0x10]
sub edx, eax
mov dword [esp + 0x10], edx
fmul qword [0x4a22d8]
fild dword [esp + 0x10]
fdivp st(1)
call fcn.00491c5c
mov ecx, dword [esi + 0x3616c]
mov edi, eax
test ecx, ecx
je 0x459fdd
mov eax, dword [esi + 0x4dd34]
push eax
push 3
movsx eax, word [esp + 0x28]
movsx edx, bx
push edx
push eax
call fcn.00488ff0
mov ecx, dword [esi + 0x3616c]
test ecx, ecx
je 0x45a008
mov edx, dword [esi + 0x4dd34]
movsx eax, bx
push edx
push 7
lea edx, [eax + edi + 0x23]
movsx eax, word [esp + 0x28]
add eax, 0xf2
push edx
push eax
call fcn.00488ff0
mov al, byte [esp + 0x194]
test al, al
je 0x45a026
mov eax, 0x26
mov cl, byte [esi + eax + 0x4eafd]
test cl, cl
jne 0x45a04c
dec eax
jns 0x45a018
mov dword [esi + 0xcc8], 0
mov eax, 0x26
mov cl, byte [esi + eax + 0x4eafd]
test cl, cl
jne 0x45a12f
dec eax
jns 0x45a035
jmp 0x45a18e
movsx eax, byte [eax + esi + 0x4eafd]
cmp eax, 0xe
jne 0x45a026
cmp ebp, dword [esi + 0xbf4]
jle 0x45a026
movsx edi, word [esp + 0x20]
movsx edx, word [esp + 0x188]
lea eax, [edi + 0xe6]
cmp edx, eax
jl 0x45a0e4
lea ecx, [edi + 0x104]
cmp edx, ecx
jg 0x45a0e4
movsx eax, word [esp + 0x18c]
movsx ecx, bx
lea ebp, [ecx + 0x28]
cmp eax, ebp
jl 0x45a0e0
lea ebp, [ecx + 0x140]
cmp eax, ebp
jg 0x45a0e0
mov ebp, dword [esp + 0x18]
sub eax, ecx
sub eax, 0x23
mov edx, ebp
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0xbf4]
fild dword [esp + 0x10]
sub edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fmulp st(1)
fmul qword [0x4a22c8]
fadd qword [0x4a22d0]
call fcn.00491c5c
mov word [esi + 0xc44], ax
jmp 0x45a030
mov ebp, dword [esp + 0x18]
lea eax, [edi + 0xe6]
cmp edx, eax
jl 0x45a030
add edi, 0x104
cmp edx, edi
jg 0x45a030
movsx ecx, word [esp + 0x18c]
movsx eax, bx
lea edx, [eax + 0xa]
cmp ecx, edx
jle 0x45a030
add eax, 0x28
cmp ecx, eax
jge 0x45a030
mov word [esi + 0xc44], 0
jmp 0x45a030
movsx eax, byte [eax + esi + 0x4eafd]
cmp eax, 0xe
jne 0x45a18e
mov ax, word [esp + 0x190]
test ax, ax
je 0x45a18e
cmp ebp, 0x32
jle 0x45a16d
movsx ecx, ax
mov eax, 0x77777777
imul ecx
sub edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add edx, eax
add word [esi + 0xc44], dx
jmp 0x45a185
test ax, ax
jle 0x45a17c
dec word [esi + 0xc44]
test ax, ax
jge 0x45a185
inc word [esi + 0xc44]
mov word [esi + 0x36070], 0
mov eax, dword [esi + 0xbf4]
cmp ebp, eax
jle 0x45a1b8
movsx edx, word [esi + 0xc44]
mov ecx, ebp
sub ecx, eax
cmp edx, ecx
jle 0x45a1b4
mov cx, bp
sub cx, ax
mov word [esi + 0xc44], cx
cmp ebp, eax
jg 0x45a1c1
mov word [esi + 0xc44], 0
cmp word [esi + 0xc44], 0
jge 0x45a1d4
mov word [esi + 0xc44], 0
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x45a2f6
add esi, 0x6004
mov ecx, esi
movsx ebx, bx
call fcn.00402250
movsx edi, word [esp + 0x20]
movsx edx, word [esp + 0x28]
lea eax, [ebx + 0x2d]
lea ebp, [edx + edi]
lea edx, [esp + 0x34]
lea ecx, [eax + 0xf]
push ecx
push ebp
push eax
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
push 0
lea eax, [esp + 0x38]
push 0x4aba88
push eax
mov ecx, esi
call fcn.004022b0
mov ecx, esi
call fcn.00402290
mov ecx, esi
call fcn.00402250
lea eax, [ebx + 0x3c]
lea edx, [esp + 0x34]
lea ecx, [eax + 0xf]
push ecx
push ebp
push eax
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
push 0
lea eax, [esp + 0x38]
push 0x4aba5c
push eax
mov ecx, esi
call fcn.004022b0
mov ecx, esi
call fcn.00402290
mov ecx, esi
add ebx, 0x4b
call fcn.00402250
lea ecx, [ebx + 0xf]
lea edx, [esp + 0x34]
push ecx
push ebp
push ebx
push edi
push edx
call dword [sym.imp.user32.dll_SetRect]
push 0
lea eax, [esp + 0x38]
push 0x4aba3c
push eax
mov ecx, esi
call fcn.004022b0
mov ecx, esi
call fcn.00402290
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x174
ret 0x10
add esi, 0x6004
mov ecx, esi
call fcn.00402250
movsx edi, bx
movsx eax, bp
push 0
lea ecx, [edi + 0x46]
lea ebx, [eax + 0x2d]
push 0x4aba28
push ecx
push ebx
mov ecx, esi
call fcn.00401ef0
mov ecx, esi
call fcn.00402290
mov ecx, esi
call fcn.00402250
push 0
add edi, 0x55
push 0x4aba00
push edi
push ebx
mov ecx, esi
call fcn.00401ef0
mov ecx, esi
call fcn.00402290
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x174
ret 0x10