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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffff48
mov esi, edx
mov ebx, eax
mov edx, esi
mov eax, ebx
call fcn.00489080
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x1f8]
mov dword [esi + 0x10c], eax
mov eax, dword [esi + 0x10c]
shl eax, 2
lea eax, [eax + eax*8]
call fcn.0040279c
mov dword [esi + 0x110], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x1fc]
mov dword [esp + 0x1c], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x200]
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x10c]
dec eax
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esi + 0x10c], eax
mov eax, ebx
call fcn.004965f8
mov dword [esp + 0x34], eax
mov dword [esi + 0xf0], 0xffffffff
mov dword [esi + 0xf4], 0xffffffff
mov dword [esi + 0xf8], 0xffffffff
mov eax, dword [esi + 0x20]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 0x28], eax
cmp dword [esp + 0x1c], 0xffffffff
je 0x488259
mov edx, dword [esp + 0x14]
mov eax, ebx
call fcn.004966d0
mov edi, eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x210]
add edi, eax
mov dword [esp + 0x30], edi
mov eax, dword [esp + 0x30]
add dword [esp + 0x24], eax
mov eax, dword [esi + 0x84]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0x20]
add ecx, dword [esp + 0x38]
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
call fcn.004110fc
push esi
lea edi, [esi + 0xd0]
lea esi, [esp + 0xac]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
cmp dword [ebx + 0x2b4], 0
jle 0x4881ba
mov eax, dword [ebx + 0x2b8]
sub dword [esi + 0xdc], eax
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esp + 0x14]
mov dword [edx + eax*4], ecx
mov eax, dword [esi + 0x2c]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0xd8]
sub ecx, dword [ebx + 0x2bc]
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
call fcn.004110fc
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
push esi
lea esi, [esp + 0xac]
lea edi, [edx + eax*4 + 4]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esi + 0x10c]
lea ecx, [ecx + ecx*8]
mov edi, dword [esi + 0x110]
push esi
lea esi, [edx + eax*4 + 4]
lea edi, [edi + ecx*4 + 0x14]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esp + 0x14]
mov dword [esi + 0xf0], eax
inc dword [esp + 0x14]
inc dword [esi + 0x10c]
mov eax, dword [esi + 0x28]
sub eax, dword [esi + 0x20]
cmp eax, dword [esp + 0x34]
jle 0x4882be
mov eax, dword [esi + 0x20]
add eax, dword [esp + 0x34]
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x28]
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x8c]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x28]
call fcn.004110fc
push esi
lea edi, [esi + 0x90]
lea esi, [esp + 0xac]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
lea eax, [esi + 0x70]
push eax
call sub.user32.dll_IsRectEmpty
test eax, eax
jne 0x4882be
mov eax, dword [esi + 0x90]
mov dword [esi + 0x78], eax
cmp dword [esp + 0x20], 0xffffffff
je 0x488374
mov edx, dword [esp + 0x20]
mov eax, ebx
call fcn.004966d0
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x84]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0x28]
sub eax, dword [esp + 0x38]
call fcn.004110fc
push esi
lea edi, [esi + 0xe0]
lea esi, [esp + 0xac]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
cmp dword [ebx + 0x2b4], 0
jle 0x488324
mov eax, dword [ebx + 0x2b8]
sub dword [esi + 0xec], eax
mov edx, dword [esi + 0x68]
mov eax, dword [esi + 0xd8]
call fcn.004857cc
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0xe0]
cmp eax, dword [esp + 0x2c]
jge 0x48835c
mov eax, dword [esp + 0x2c]
mov dword [esi + 0xe0], eax
mov eax, dword [esi + 0xe0]
add eax, dword [esp + 0x30]
mov dword [esi + 0xe8], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 0xf4], eax
dec dword [esp + 0x18]
mov eax, dword [esi + 0xe0]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x374]
neg eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
sub edx, eax
jl 0x488504
inc edx
mov dword [esp + 0x70], edx
mov dword [esp], eax
mov edx, dword [esp]
mov eax, ebx
call fcn.004966d0
mov dword [esp + 0x30], eax
cmp dword [esp], 0
jne 0x4883ba
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x210]
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x24]
push eax
mov edx, dword [esp + 0x30]
add edx, dword [esp + 0x34]
xor ecx, ecx
mov eax, dword [esp + 0x30]
call fcn.00488068
test al, al
je 0x4884d3
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esp]
mov dword [edx + eax*4], ecx
mov eax, dword [esi + 0x2c]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x34]
add ecx, dword [esp + 0x38]
mov edx, dword [esi + 0x24]
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x34]
call fcn.004110fc
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
push esi
lea esi, [esp + 0xac]
lea edi, [edx + eax*4 + 4]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esi + 0x10c]
lea ecx, [ecx + ecx*8]
mov edi, dword [esi + 0x110]
push esi
lea esi, [edx + eax*4 + 4]
lea edi, [edi + ecx*4 + 0x14]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4 + 0x14]
cmp eax, dword [esp + 0x24]
jge 0x48849d
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esp + 0x24]
mov dword [edx + eax*4 + 0x14], ecx
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4 + 0x1c]
cmp eax, dword [esp + 0x28]
jle 0x4884cd
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esp + 0x28]
mov dword [edx + eax*4 + 0x1c], ecx
inc dword [esi + 0x10c]
mov eax, dword [esp + 0x30]
add dword [esp + 0x2c], eax
cmp dword [esi + 0xf4], 0xffffffff
je 0x4884ed
mov eax, dword [esp]
mov dword [esi + 0xf8], eax
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x28]
jg 0x488504
inc dword [esp]
dec dword [esp + 0x70]
jne 0x488398
cmp dword [esp + 0x20], 0xffffffff
je 0x4885d3
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ecx, dword [esp + 0x20]
mov dword [edx + eax*4], ecx
mov eax, dword [esi + 0x2c]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0xe8]
mov edx, dword [esi + 0x24]
mov eax, dword [esi + 0xe0]
add eax, dword [ebx + 0x2bc]
call fcn.004110fc
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
push esi
lea esi, [esp + 0xac]
lea edi, [edx + eax*4 + 4]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4 + 4]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 0xc]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0x28]
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x7c]
mov eax, dword [eax]
call fcn.004110fc
mov eax, dword [esi + 0x10c]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
push esi
lea esi, [esp + 0xac]
lea edi, [edx + eax*4 + 0x14]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
inc dword [esi + 0x10c]
xor eax, eax
mov dword [esi + 0x114], eax
xor eax, eax
mov dword [esi + 0x11c], eax
mov eax, dword [esi + 0x10c]
dec eax
test eax, eax
jl 0x488673
inc eax
mov dword [esp + 0x70], eax
mov dword [esp], 0
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4]
mov dword [esp + 8], eax
mov edx, dword [esp + 8]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x248]
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], 0
jle 0x488664
mov eax, dword [esp + 0xc]
dec eax
test eax, eax
jl 0x48866a
inc eax
mov dword [esp + 0x78], eax
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov eax, ebx
mov edi, dword [eax]
call dword [edi + 0x230]
add dword [esi + 0x114], eax
inc dword [esp + 4]
dec dword [esp + 0x78]
jne 0x488640
jmp 0x48866a
inc dword [esi + 0x11c]
inc dword [esp]
dec dword [esp + 0x70]
jne 0x4885fe
imul eax, dword [esi + 0x114], 0x4c
call fcn.00409000
mov dword [esi + 0x118], eax
xor eax, eax
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0x11c]
shl eax, 3
lea eax, [eax + eax*2]
call fcn.00409000
mov dword [esi + 0x120], eax
xor eax, eax
mov dword [esi + 0x11c], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x3e4]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x10c]
dec eax
test eax, eax
jl 0x488d3d
inc eax
mov dword [esp + 0x70], eax
mov dword [esp], 0
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4]
mov dword [esp + 8], eax
mov edx, dword [esp + 8]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x248]
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], 0
jle 0x488ba9
mov eax, dword [esp + 0xc]
dec eax
test eax, eax
jl 0x488d30
inc eax
mov dword [esp + 0x78], eax
mov dword [esp + 4], 0
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4 + 0xc]
mov edx, dword [esp]
lea edx, [edx + edx*8]
mov ecx, dword [esi + 0x110]
sub eax, dword [ecx + edx*4 + 4]
mov dword [esp + 0x30], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x210]
cmp dword [esp + 8], 0
sete dl
and edx, 0xff
imul edx
mov edx, dword [esp + 0x30]
sub edx, eax
mov dword [esp + 0x5c], edx
xor eax, eax
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov eax, ebx
call fcn.00496df8
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov eax, ebx
call fcn.00496d94
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
mov eax, ebx
mov edi, dword [eax]
call dword [edi + 0x230]
mov dword [esp + 0x50], eax
xor eax, eax
mov dword [esp + 0x60], eax
mov byte [esp + 0x6c], 0
mov eax, dword [esp + 0x50]
dec eax
test eax, eax
jl 0x488837
inc eax
mov dword [esp + 0x7c], eax
xor edi, edi
push edi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, ebx
mov ebp, dword [eax]
call dword [ebp + 0x220]
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x260]
mov ebp, eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x244]
mov dword [esp + 0x64], eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x394]
test al, al
je 0x488830
mov eax, dword [esp + 0x48]
push eax
push ebp
mov eax, dword [esp + 0x64]
push eax
call sub.kernel32.dll_MulDiv
cmp eax, dword [esp + 0x64]
jl 0x48882b
add dword [esp + 0x60], ebp
jmp 0x488830
mov byte [esp + 0x6c], 1
inc edi
dec dword [esp + 0x7c]
jne 0x4887c4
mov eax, dword [esp + 0x50]
dec eax
test eax, eax
jl 0x488b96
inc eax
mov dword [esp + 0x7c], eax
xor edi, edi
push edi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, ebx
mov ebp, dword [eax]
call dword [ebp + 0x220]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x50]
dec eax
cmp edi, eax
je 0x48890e
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x260]
mov ebp, eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x244]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x48]
push eax
push ebp
mov eax, dword [esp + 0x64]
push eax
call sub.kernel32.dll_MulDiv
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x394]
test al, al
je 0x488900
mov eax, dword [esp + 0x60]
cmp eax, dword [esp + 0x48]
je 0x4888fa
mov eax, dword [esp + 0x68]
cmp eax, dword [esp + 0x64]
jle 0x4888f4
cmp byte [esp + 0x6c], 0
je 0x4888ee
mov eax, dword [esp + 0x60]
push eax
push ebp
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x60]
push eax
call sub.kernel32.dll_MulDiv
add eax, dword [esp + 0x64]
mov ebp, eax
jmp 0x488916
mov ebp, dword [esp + 0x68]
jmp 0x488916
mov ebp, dword [esp + 0x64]
jmp 0x488916
mov ebp, dword [esp + 0x68]
jmp 0x488916
sub dword [esp + 0x5c], ebp
sub dword [esp + 0x48], ebp
sub dword [esp + 0x58], ebp
jmp 0x488916
mov ebp, dword [esp + 0x30]
sub ebp, dword [esp + 0x44]
cmp dword [esp + 8], 0
jne 0x488934
test edi, edi
jne 0x488934
cmp dword [esp + 0x50], 1
jle 0x488934
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x210]
add ebp, eax
push edi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, ebx
call fcn.00496afc
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + 0x2b0]
imul dword [esp + 0x3c]
mov dword [esp + 0x40], eax
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4 + 4]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x80]
mov eax, dword [eax + 0xc]
mov edx, dword [ebx + 0x2b0]
imul edx, dword [esp + 4]
add eax, edx
add eax, dword [esp + 0x40]
push eax
lea eax, [esp + 0x9c]
push eax
mov eax, dword [esp + 0x88]
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 0x2b0]
imul eax, dword [esp + 0xc]
add edx, eax
mov eax, dword [esp + 0x88]
mov ecx, dword [eax]
add ecx, dword [esp + 0x4c]
add ecx, ebp
mov eax, dword [esp + 0x88]
mov eax, dword [eax]
add eax, dword [esp + 0x4c]
call fcn.004110fc
add dword [esp + 0x44], ebp
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x1c]
push eax
mov eax, dword [esp + 0x88]
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0x9c]
call fcn.00488068
test al, al
je 0x488b8b
imul eax, dword [esi + 0x114], 0x13
mov edx, dword [esi + 0x118]
lea ebp, [edx + eax*4]
mov eax, dword [esp + 8]
mov dword [ebp + 4], eax
mov eax, dword [esp + 4]
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edi
mov eax, dword [esp + 0x54]
mov dword [ebp], eax
mov eax, dword [esp + 0x3c]
mov dword [ebp + 0x10], eax
mov edx, dword [esp + 0x54]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x280]
mov byte [ebp + 0x48], al
test edi, edi
sete al
mov byte [ebp + 0x44], al
mov eax, dword [esp + 0x50]
dec eax
cmp edi, eax
sete al
mov byte [ebp + 0x45], al
test edi, edi
jne 0x488a73
cmp dword [esp + 8], 0
je 0x488a77
xor eax, eax
jmp 0x488a79
mov al, 1
mov byte [ebp + 0x46], al
mov eax, dword [esp + 0x50]
dec eax
cmp edi, eax
jne 0x488a8f
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x18]
je 0x488a93
xor eax, eax
jmp 0x488a95
mov al, 1
mov byte [ebp + 0x47], al
push esi
push edi
lea edi, [ebp + 0x14]
lea esi, [esp + 0xa0]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
push esi
push edi
lea esi, [ebp + 0x14]
lea edi, [ebp + 0x24]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x1c]
cmp eax, dword [ebp + 0x2c]
jge 0x488ada
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x1c]
mov dword [ebp + 0x2c], eax
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x14]
cmp eax, dword [ebp + 0x24]
jle 0x488af6
mov eax, dword [esp + 0x84]
mov eax, dword [eax + 0x14]
mov dword [ebp + 0x24], eax
inc dword [esi + 0x114]
mov eax, dword [esp + 0xc]
dec eax
cmp eax, dword [esp + 4]
jne 0x488b8b
mov eax, dword [esp + 4]
add eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x10]
jge 0x488b8b
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4 + 4]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x88]
mov eax, dword [eax + 0xc]
mov edx, dword [ebx + 0x2b0]
imul edx, dword [esp + 0x10]
add eax, edx
push eax
lea eax, [esp + 0xac]
push eax
mov eax, dword [esp + 0x90]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x44]
imul eax, dword [ebx + 0x2b0]
add edx, eax
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x24]
call fcn.004110fc
push esi
push edi
lea esi, [esp + 0xb0]
lea edi, [ebp + 0x34]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
inc edi
dec dword [esp + 0x7c]
jne 0x48884b
inc dword [esp + 4]
dec dword [esp + 0x78]
jne 0x48871f
jmp 0x488d30
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov ebp, dword [edx + eax*4 + 0xc]
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
sub ebp, dword [edx + eax*4 + 4]
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4 + 4]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x8c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebx + 0x2b0]
imul edx, dword [esp + 0x10]
add eax, edx
push eax
lea eax, [esp + 0x9c]
push eax
mov eax, dword [esp + 0x94]
mov ecx, dword [eax]
add ecx, ebp
mov eax, dword [esp + 0x94]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
call fcn.004110fc
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
lea eax, [edx + eax*4]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x1c]
push eax
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0x9c]
call fcn.00488068
test al, al
je 0x488d30
mov eax, dword [esi + 0x11c]
lea eax, [eax + eax*2]
mov edx, dword [esi + 0x120]
lea eax, [edx + eax*8]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 8]
mov dword [eax], edx
mov eax, dword [esp + 0x94]
push esi
lea edi, [eax + 4]
lea esi, [esp + 0x9c]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x1c]
mov edx, dword [esp + 0x94]
cmp eax, dword [edx + 0xc]
jge 0x488cd3
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x1c]
mov edx, dword [esp + 0x94]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 0x94]
cmp eax, dword [edx + 4]
jle 0x488cfd
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0x14]
mov edx, dword [esp + 0x94]
mov dword [edx + 4], eax
mov eax, dword [esp]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x110]
mov eax, dword [edx + eax*4 + 0xc]
mov edx, dword [esp]
lea edx, [edx + edx*8]
mov ecx, dword [esi + 0x110]
cmp eax, dword [ecx + edx*4 + 0x1c]
jle 0x488d2a
mov eax, dword [esp + 0x94]
mov byte [eax + 0x14], 1
inc dword [esi + 0x11c]
inc dword [esp]
dec dword [esp + 0x70]
jne 0x4886d5
mov eax, dword [esi + 0x8c]
sub eax, dword [esi + 0x84]
cdq
idiv dword [ebx + 0x2c4]
inc eax
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0x124]
shl eax, 2
lea eax, [eax + eax*8]
call fcn.00409000
mov dword [esi + 0x128], eax
xor eax, eax
mov dword [esi + 0x124], eax
mov eax, dword [ebx + 0x3a8]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x84]
mov dword [esp + 0x38], eax
jmp 0x488e76
mov eax, dword [esi + 0x124]
lea eax, [eax + eax*8]
mov edx, dword [esi + 0x128]
lea edi, [edx + eax*4]
mov eax, dword [esp + 0x4c]
mov dword [edi], eax
mov edx, dword [esp + 0x4c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2bc]
mov byte [edi + 4], al
mov eax, dword [esp + 0x4c]
call fcn.0048781c
mov byte [edi + 5], al
push 0
mov ecx, dword [ebx + 0x2c4]
mov edx, dword [esp + 0x50]
mov eax, ebx
call fcn.00497010
mov dword [edi + 8], eax
mov edx, dword [esp + 0x4c]
mov eax, ebx
call fcn.004971dc
mov dword [edi + 0xc], eax
mov eax, dword [edi + 0xc]
imul dword [ebx + 0x2ec]
mov dword [edi + 0x10], eax
mov cl, byte [edi + 5]
mov edx, dword [esp + 0x4c]
mov eax, ebx
mov ebp, dword [eax]
call dword [ebp + 0x294]
mov byte [edi + 0x14], al
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x358]
test al, al
je 0x488e27
mov edx, dword [esp + 0x4c]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x2b0]
mov dword [edi + 0x18], eax
mov eax, ebx
call fcn.004974f4
test al, al
je 0x488e53
mov eax, dword [ebx + 0x2c4]
mov dword [esp + 0x40], eax
lea ecx, [esp + 0x40]
mov edx, dword [esp + 0x4c]
mov eax, ebx
mov ebp, dword [eax]
call dword [ebp + 0x298]
mov dword [edi + 0x1c], eax
jmp 0x488e5a
mov dword [edi + 0x1c], 0xffffffff
mov edx, dword [esp + 0x4c]
mov eax, ebx
call fcn.0048b1ec
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 8]
add dword [esp + 0x38], eax
inc dword [esi + 0x124]
cmp dword [esp + 0x4c], 0
je 0x488e8d
mov eax, dword [esi + 0x8c]
cmp eax, dword [esp + 0x38]
jg 0x488d8f
mov eax, ebx
call fcn.004965f8
add eax, dword [esi + 0x80]
dec eax
mov dword [esi + 0xfc], eax
lea eax, [esi + 0xd0]
call fcn.004857b4
test al, al
je 0x488ebc
mov eax, dword [ebx + 0x374]
sub dword [esi + 0xfc], eax
lea eax, [esi + 0xe0]
call fcn.004857b4
test al, al
jne 0x488ee9
mov eax, dword [esi + 0xfc]
mov edx, dword [esi + 0x88]
dec edx
cmp eax, edx
jle 0x488ee9
mov eax, dword [esi + 0x88]
dec eax
mov dword [esi + 0xfc], eax
mov dword [esi + 0x100], 0xffffffff
mov eax, dword [esi + 0x8c]
cmp eax, dword [esp + 0x38]
jle 0x488f4d
mov eax, dword [esp + 0x38]
dec eax
mov dword [esi + 0x100], eax
mov eax, dword [esi + 0x8c]
push eax
lea eax, [esp + 0xac]
push eax
mov ecx, dword [esi + 0xfc]
inc ecx
mov edx, dword [esi + 0x100]
inc edx
mov eax, dword [esi]
call fcn.004110fc
push esi
lea edi, [esi + 0xa0]
lea esi, [esp + 0xac]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [esi + 0xa4]
mov dword [esi + 0x6c], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x1f8]
test eax, eax
jle 0x488f7a
xor edx, edx
mov eax, ebx
call fcn.004966d0
mov edi, eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x210]
add edi, eax
mov dword [esi + 0x104], edi
jmp 0x488f82
xor eax, eax
mov dword [esi + 0x104], eax
lea eax, [esi + 0xd0]
call fcn.004857b4
test al, al
jne 0x488fc5
mov eax, dword [esi + 0x80]
add eax, dword [esi + 0x104]
mov edx, dword [esi + 0xd8]
sub edx, dword [ebx + 0x2bc]
cmp eax, edx
jle 0x488fc5
mov eax, dword [esi + 0xd8]
sub eax, dword [ebx + 0x2bc]
sub eax, dword [esi + 0x80]
mov dword [esi + 0x104], eax
lea eax, [esi + 0xd0]
call fcn.004857b4
test al, al
je 0x488fdc
mov ebp, dword [ebx + 0x374]
jmp 0x488fde
xor ebp, ebp
lea eax, [esi + 0xe0]
call fcn.004857b4
test al, al
jne 0x489017
mov eax, dword [esi + 0x80]
add eax, dword [esi + 0x104]
sub eax, ebp
cmp eax, dword [esi + 0xe0]
jle 0x489017
mov eax, dword [esi + 0xe0]
sub eax, dword [esi + 0x80]
add ebp, eax
mov dword [esi + 0x104], ebp
cmp byte [ebx + 0x284], 0
je 0x489030
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x2b4]
mov dword [esi + 0x108], eax
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x2c]
jne 0x489041
lea eax, [esi + 0x20]
push eax
call sub.user32.dll_SetRectEmpty
mov eax, dword [esi + 0x34]
cmp eax, dword [esi + 0x3c]
jne 0x489052
lea eax, [esi + 0x30]
push eax
call sub.user32.dll_SetRectEmpty
mov eax, dword [esi + 0x44]
cmp eax, dword [esi + 0x4c]
jne 0x489063
lea eax, [esi + 0x40]
push eax
call sub.user32.dll_SetRectEmpty
mov eax, dword [esi + 0x54]
cmp eax, dword [esi + 0x5c]
jne 0x489074
lea eax, [esi + 0x50]
push eax
call sub.user32.dll_SetRectEmpty
add esp, 0xb8
pop ebp
pop edi
pop esi
pop ebx
ret