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

Disassembly:
sub esp, 0x78
cmp dword [0x464a9c], 0
je 0x415592
push str.Rebuilding_highlights..._n
call fcn.00434a96
add eax, 0x40
push eax
call fcn.00435780
add esp, 8
fld qword [0x4517b8]
push ebx
mov eax, 4
sub eax, dword [0x464a98]
push ebp
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
push esi
push edi
call fcn.00447b40
fstp dword [esp + 0x74]
mov edi, dword [0x465c58]
xor esi, esi
test edi, edi
jbe 0x4155e3
fld qword [0x451820]
fld dword [esi*4 + 0x486150]
fmul st(1)
call fcn.00436cf0
mov dword [esp + esi*4 + 0x78], eax
inc esi
cmp esi, edi
jb 0x4155ca
fstp st(0)
dec edi
cmp edi, 4
mov dword [esp + 0x18], 0
mov ecx, 1
jl 0x4156bc
mov ebx, 0xc
mov ebp, 0x10
xor edx, edx
sub ebx, 0x486158
lea edi, [ecx + 7]
sub ebp, 0x486158
jmp 0x415620
fld dword [edx + 0x486150]
lea esi, [ecx*4]
fld dword [esi + 0x486150]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415642
mov dword [esp + 0x18], ecx
mov edx, esi
fld dword [edx + 0x486150]
fld dword [esi + 0x486154]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415660
lea edx, [ecx + 1]
mov dword [esp + 0x18], edx
mov edx, edi
fld dword [edx + 0x486150]
fld dword [esi + 0x486158]
fcompp
fnstsw ax
test ah, 0x41
jne 0x415683
lea eax, [ecx + 2]
mov dword [esp + 0x18], eax
lea edx, [ebx + esi + 0x486154]
fld dword [edx + 0x486150]
fld dword [esi + 0x48615c]
fcompp
fnstsw ax
test ah, 0x41
jne 0x4156a6
lea edx, [ecx + 3]
mov dword [esp + 0x18], edx
lea edx, [esi + ebp + 0x486154]
mov eax, dword [0x465c58]
add ecx, 4
add eax, 0xfffffffd
add edi, 0x10
cmp ecx, eax
jb 0x415620
cmp ecx, dword [0x465c58]
jae 0x4156f9
mov esi, dword [esp + 0x18]
mov edi, dword [0x465c58]
add esi, esi
add esi, esi
fld dword [esi + 0x486150]
lea edx, [ecx*4]
fld dword [edx + 0x486150]
fcompp
fnstsw ax
test ah, 0x41
jne 0x4156f4
mov dword [esp + 0x18], ecx
mov esi, edx
inc ecx
cmp ecx, edi
jb 0x4156d2
mov cl, byte [0x4ac426]
movzx eax, word [0x4ac486]
cdq
mov esi, 4
sar esi, cl
push 4
idiv esi
mov dword [esp + 0x34], esi
mov ecx, eax
movzx eax, word [0x466040]
cdq
idiv esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], eax
imul eax, ecx
push eax
mov dword [esp + 0x5c], eax
call fcn.004348ad
add esp, 8
mov dword [esp + 0x20], eax
test eax, eax
je 0x415f78
cmp dword [0x465c58], 0
mov dword [esp + 0x2c], 0
jbe 0x415f67
jmp 0x415760
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x2c], eax
je 0x415f4e
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x20]
lea edx, [ecx*4]
push edx
xor esi, esi
push esi
push eax
call fcn.00436440
fldz
mov ecx, dword [esp + 0x34]
add esp, 0xc
cmp ecx, esi
jbe 0x415ab0
movzx eax, word [0x466040]
imul eax, dword [esp + 0x30]
mov dword [esp + 0x50], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], ecx
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x34], 0
jbe 0x415a8b
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
add ecx, eax
mov dword [esp + 0x5c], ecx
mov ecx, eax
imul ecx, eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x5c]
fst dword [esp + 0x24]
fst dword [esp + 0x10]
mov dword [esp + 0x14], 0
cmp dword [esp + 0x40], edx
jae 0x415a41
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x38]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x44], eax
mov eax, edx
sub eax, dword [esp + 0x40]
mov dword [esp + 0x60], eax
cmp dword [esp + 0x68], 4
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x48], ecx
jl 0x4159af
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + eax*4 + 0x78]
mov esi, dword [0x4ac418]
lea edx, [eax + eax]
mov eax, ecx
mov ecx, dword [esp + 0x44]
add eax, ecx
add eax, eax
add eax, eax
add eax, eax
lea ebp, [eax + esi]
lea ecx, [eax + edx]
mov eax, dword [esp + 0x38]
add ecx, esi
mov esi, dword [esp + 0x3c]
sub esi, eax
sub esi, 4
mov edi, edx
shr esi, 2
neg edi
inc esi
lea edx, [eax + esi*4]
mov dword [esp + 0x48], edx
movzx eax, word [ecx]
mov dword [esp + 0x6c], eax
cdq
idiv ebx
cmp eax, 1
jne 0x4158c5
mov eax, dword [esp + 0x18]
movzx eax, word [ebp + eax*2]
mov edx, 0x5dc0
cmp ax, dx
jbe 0x4158c5
fild dword [esp + 0x6c]
inc dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x6c], eax
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
fild dword [esp + 0x6c]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
movzx eax, word [ecx + 8]
mov dword [esp + 0x6c], eax
cdq
idiv ebx
cmp eax, 1
jne 0x41590e
mov edx, dword [esp + 0x18]
lea eax, [ecx + edx*2]
movzx eax, word [eax + edi + 8]
mov edx, 0x5dc0
cmp ax, dx
jbe 0x41590e
fild dword [esp + 0x6c]
inc dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x6c], eax
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
fild dword [esp + 0x6c]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
movzx eax, word [ecx + 0x10]
mov dword [esp + 0x6c], eax
cdq
idiv ebx
cmp eax, 1
jne 0x415957
mov edx, dword [esp + 0x18]
lea eax, [ecx + edx*2]
movzx eax, word [eax + edi + 0x10]
mov edx, 0x5dc0
cmp ax, dx
jbe 0x415957
fild dword [esp + 0x6c]
inc dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x6c], eax
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
fild dword [esp + 0x6c]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x6c], eax
cdq
idiv ebx
cmp eax, 1
jne 0x4159a0
mov edx, dword [esp + 0x18]
lea eax, [ecx + edx*2]
movzx eax, word [eax + edi + 0x18]
mov edx, 0x5dc0
cmp ax, dx
jbe 0x4159a0
fild dword [esp + 0x6c]
inc dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x6c], eax
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
fild dword [esp + 0x6c]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
add ebp, 0x20
add ecx, 0x20
sub esi, 1
jne 0x415880
mov ecx, dword [esp + 0x3c]
cmp dword [esp + 0x48], ecx
jae 0x415a2b
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + edx*4 + 0x78]
mov edx, dword [0x4ac418]
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
add ecx, eax
lea ecx, [edx + ecx*8]
sub esi, eax
movzx eax, word [ecx + ebx*2]
mov dword [esp + 0x6c], eax
cdq
idiv edi
cmp eax, 1
jne 0x415a23
movzx eax, word [ecx + ebp*2]
mov edx, 0x5dc0
cmp ax, dx
jbe 0x415a23
fild dword [esp + 0x6c]
inc dword [esp + 0x14]
movzx eax, ax
mov dword [esp + 0x6c], eax
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
fild dword [esp + 0x6c]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
add ecx, 8
sub esi, 1
jne 0x4159e2
movzx eax, word [0x466040]
add dword [esp + 0x44], eax
sub dword [esp + 0x60], 1
jne 0x41582a
mov ecx, dword [esp + 0x70]
cmp dword [esp + 0x14], ecx
jne 0x415a6c
fld dword [esp + 0x10]
mov edx, dword [esp + 0x50]
fdiv dword [esp + 0x24]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
add edx, eax
fstp dword [esp + 0x6c]
fld dword [esp + 0x6c]
fstp dword [ecx + edx*4]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
add dword [esp + 0x38], eax
add dword [esp + 0x3c], eax
inc ecx
mov dword [esp + 0x34], ecx
cmp ecx, dword [esp + 0x1c]
jb 0x4157ee
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x40], edx
add dword [esp + 0x4c], eax
add dword [esp + 0x50], ecx
sub dword [esp + 0x64], 1
jne 0x4157b8
xor esi, esi
fld dword [esp + 0x74]
fld st(0)
fdivr qword [0x451818]
call fcn.00436cf0
mov dword [esp + 0x4c], eax
cmp eax, esi
jne 0x415ad2
fstp st(0)
jmp 0x415db3
fxch st(1)
dec dword [esp + 0x4c]
xor ebx, ebx
cmp dword [esp + 0x28], ebx
jbe 0x415cf5
mov edx, dword [esp + 0x20]
mov dword [esp + 0x50], edx
xor edi, edi
cmp dword [esp + 0x1c], edi
jbe 0x415cde
mov eax, dword [esp + 0x50]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x44]
fld st(1)
fcomp dword [ecx]
fnstsw ax
test ah, 0x44
jp 0x415cce
fxch st(1)
xor esi, esi
fst dword [esp + 0x10]
xor ecx, ecx
movsx eax, byte [ecx*2 + 0x44ee08]
movsx edx, byte [ecx*2 + 0x44ee09]
add eax, ebx
add edx, edi
cmp eax, dword [esp + 0x28]
jae 0x415b7a
mov ebp, dword [esp + 0x1c]
cmp edx, ebp
jae 0x415b7a
imul eax, ebp
add eax, edx
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x415b7a
mov eax, ecx
and eax, 1
lea ebp, [eax + 1]
mov dword [esp + 0x70], ebp
fild dword [esp + 0x70]
test ebp, ebp
jge 0x415b6c
fadd dword [0x451808]
fmul dword [edx]
lea esi, [esi + eax + 1]
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
movsx eax, byte [ecx*2 + 0x44ee0a]
movsx edx, byte [ecx*2 + 0x44ee0b]
add eax, ebx
add edx, edi
cmp eax, dword [esp + 0x28]
jae 0x415bde
mov ebp, dword [esp + 0x1c]
cmp edx, ebp
jae 0x415bde
imul eax, ebp
add eax, edx
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x415bde
lea eax, [ecx - 1]
and eax, 1
inc eax
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
test eax, eax
jge 0x415bca
fadd dword [0x451808]
fmul dword [edx]
lea edx, [ecx - 1]
and edx, 1
lea esi, [esi + edx + 1]
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
movsx eax, byte [ecx*2 + 0x44ee0c]
movsx edx, byte [ecx*2 + 0x44ee0d]
add eax, ebx
add edx, edi
cmp eax, dword [esp + 0x28]
jae 0x415c3d
mov ebp, dword [esp + 0x1c]
cmp edx, ebp
jae 0x415c3d
imul eax, ebp
add eax, edx
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x415c3d
mov eax, ecx
and eax, 1
lea ebp, [eax + 1]
mov dword [esp + 0x70], ebp
fild dword [esp + 0x70]
test ebp, ebp
jge 0x415c2f
fadd dword [0x451808]
fmul dword [edx]
lea esi, [esi + eax + 1]
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
movsx eax, byte [ecx*2 + 0x44ee0e]
movsx edx, byte [ecx*2 + 0x44ee0f]
add eax, ebx
add edx, edi
cmp eax, dword [esp + 0x28]
jae 0x415ca1
mov ebp, dword [esp + 0x1c]
cmp edx, ebp
jae 0x415ca1
imul eax, ebp
add eax, edx
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x415ca1
lea eax, [ecx - 1]
and eax, 1
inc eax
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
test eax, eax
jge 0x415c8d
fadd dword [0x451808]
fmul dword [edx]
lea edx, [ecx - 1]
and edx, 1
lea esi, [esi + edx + 1]
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
add ecx, 4
cmp ecx, 8
jb 0x415b1b
cmp esi, 3
mov dword [esp + 0x14], esi
jle 0x415ccc
fld dword [esp + 0x10]
mov eax, dword [esp + 0x44]
fadd st(2)
fild dword [esp + 0x14]
fadd st(3)
fdivp st(1)
fchs
fstp dword [eax]
fxch st(1)
add dword [esp + 0x44], 4
inc edi
cmp edi, dword [esp + 0x1c]
jb 0x415afe
mov eax, dword [esp + 0x1c]
add eax, eax
add eax, eax
add dword [esp + 0x50], eax
inc ebx
cmp ebx, dword [esp + 0x28]
jb 0x415aea
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x20]
xor edx, edx
xor esi, esi
cmp ebp, 4
jl 0x415d80
lea edi, [ebp - 4]
shr edi, 2
inc edi
lea ecx, [ebx + 8]
lea edx, [edi*4]
jmp 0x415d1b
fxch st(1)
fxch st(1)
fcom dword [ecx - 8]
fnstsw ax
test ah, 0x41
jne 0x415d34
fld dword [ecx - 8]
mov esi, 1
fchs
fstp dword [ecx - 8]
fcom dword [ecx - 4]
fnstsw ax
test ah, 0x41
jne 0x415d4b
fld dword [ecx - 4]
mov esi, 1
fchs
fstp dword [ecx - 4]
fcom dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x415d5f
fld dword [ecx]
mov esi, 1
fchs
fstp dword [ecx]
fcom dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x415d76
fld dword [ecx + 4]
mov esi, 1
fchs
fstp dword [ecx + 4]
add ecx, 0x10
sub edi, 1
jne 0x415d19
jmp 0x415d82
fxch st(1)
cmp edx, ebp
jae 0x415da2
fcom dword [ebx + edx*4]
fnstsw ax
test ah, 0x41
jne 0x415d9d
fld dword [ebx + edx*4]
mov esi, 1
fchs
fstp dword [ebx + edx*4]
inc edx
cmp edx, ebp
jb 0x415d86
test esi, esi
je 0x415db1
cmp dword [esp + 0x4c], 0
jne 0x415ad0
fstp st(1)
mov esi, dword [esp + 0x54]
xor ecx, ecx
test esi, esi
jbe 0x415dd9
fld1
mov edx, dword [esp + 0x20]
fld st(1)
fcomp dword [edx + ecx*4]
fnstsw ax
test ah, 0x44
jp 0x415dd2
fst dword [edx + ecx*4]
inc ecx
cmp ecx, esi
jb 0x415dc3
fstp st(0)
cmp dword [esp + 0x28], 0
fstp st(0)
jbe 0x415f4e
mov ecx, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x4c], eax
movzx eax, word [0x466040]
imul eax, dword [esp + 0x30]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
lea esp, [esp]
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x34], 0
jbe 0x415f2b
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x40]
add edx, eax
mov dword [esp + 0x64], edx
mov dword [esp + 0x44], 0
mov dword [esp + 0x3c], eax
lea ecx, [ecx]
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x40], eax
jae 0x415f0c
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x60], eax
mov edi, edi
mov edx, dword [esp + 0x3c]
cmp dword [esp + 0x44], edx
jae 0x415ef6
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + eax*4 + 0x78]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x3c]
lea edx, [eax + ecx]
mov ecx, dword [0x4ac418]
lea esi, [ecx + edx*8]
sub ebx, eax
mov edx, dword [esp + 0x2c]
movzx edi, word [esi + edx*2]
mov eax, edi
cdq
idiv ebp
cmp eax, 1
jle 0x415eee
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x20]
add eax, ecx
fld dword [edx + eax*4]
mov eax, dword [esp + 0x18]
movzx ecx, word [esi + eax*2]
mov dword [esp + 0x70], ecx
fild dword [esp + 0x70]
fmulp st(1)
call fcn.00436cf0
cmp edi, eax
jge 0x415eee
cmp eax, 0xffff
jge 0x415ee1
xor edx, edx
test eax, eax
setl dl
dec edx
and eax, edx
jmp 0x415ee6
mov eax, 0xffff
mov ecx, dword [esp + 0x2c]
mov word [esi + ecx*2], ax
add esi, 8
sub ebx, 1
jne 0x415e90
movzx eax, word [0x466040]
add dword [esp + 0x50], eax
sub dword [esp + 0x60], 1
jne 0x415e60
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
add dword [esp + 0x44], ecx
add dword [esp + 0x3c], ecx
inc eax
mov dword [esp + 0x34], eax
cmp eax, dword [esp + 0x1c]
jb 0x415e40
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x40], edx
add dword [esp + 0x4c], eax
add dword [esp + 0x48], ecx
sub dword [esp + 0x5c], 1
jne 0x415e10
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [0x465c58]
jb 0x415760
mov eax, dword [esp + 0x20]
push eax
call fcn.0043481f
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov edx, dword [0x4ac404]
push str.recover_highlights__
push edx
push str._s:_Out_of_memory_in__s_n
call fcn.00434a96
add eax, 0x40
push eax
call fcn.00435780
add esp, 0x10
push 1
push 0x4660c0
call fcn.00435cb8
int3