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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x80
push ebx
push ebp
push esi
mov esi, ecx
fld dword [esi + 0x8520]
mov eax, dword [esi + 0x380]
fcomp dword [0x65c2f0]
mov ecx, dword [esi + 0x384]
push edi
lea edi, [esi + 0x8520]
sub ecx, eax
fnstsw ax
mov dword [esi + 0x384], ecx
test ah, 0x44
jnp 0x42f10d
mov edx, edi
mov eax, dword [edx]
lea ecx, [esi + 0x8588]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
mov eax, dword [esi + 0x8548]
test eax, eax
mov ebx, 0xbf800000
jne 0x42f12e
mov eax, dword [esi + 0x854c]
test eax, eax
je 0x42f14e
cmp dword [esi + 0x8578], ebx
jne 0x42f135
mov ecx, esi
call fcn.0042ed00
mov eax, dword [esi + 0x854c]
test eax, eax
je 0x42f14e
cmp dword [esi + 0x8578], ebx
je 0x42f14e
mov ecx, esi
call fcn.0042ef50
fld dword [edi]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x44
jnp 0x42f179
mov ecx, dword [edi]
mov edx, dword [edi + 4]
lea eax, [esi + 0x8588]
mov dword [eax], ecx
mov ecx, dword [edi + 8]
mov dword [eax + 4], edx
mov edx, dword [edi + 0xc]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
fld dword [esi + 0x8594]
fcomp dword [0x65c2f0]
fnstsw ax
test ah, 0x44
jp 0x42f1a9
cmp dword [esi + 0x458], 4
jge 0x42f19d
fld dword [esi + 0x858c]
jmp 0x42f1a3
fld dword [0x65c2f4]
fstp dword [esi + 0x8594]
fld dword [esi + 0x8530]
mov eax, dword [esi + 0x380]
fcomp dword [0x65c2f0]
mov dword [esp + 0x6c], eax
fnstsw ax
test ah, 0x44
jnp 0x42fa4b
mov eax, dword [esi + 0x8544]
xor ebp, ebp
test eax, eax
mov dword [esp + 0x10], ebp
mov ebx, 1
je 0x42f1f1
push str.Wavelet_denoising..._n
push 0x69aee0
call fcn.00487674
add esp, 8
mov eax, dword [esi + 0x384]
mov ecx, eax
and ecx, 0x7fffffff
cmp ecx, 0x8000
jae 0x42f216
inc ebx
mov edx, eax
mov ecx, ebx
shl edx, cl
cmp edx, 0x10000
jb 0x42f207
mov edi, dword [esi + 0x380]
dec ebx
mov ecx, ebx
shl eax, cl
shl edi, cl
movzx ecx, word [esi + 0x446]
mov dword [esi + 0x384], eax
movzx eax, word [esi + 0x448]
mov dword [esi + 0x380], edi
mov edi, ecx
imul edi, eax
cmp edi, 0x15550000
mov dword [esp + 0x50], ebx
mov dword [esp + 0x24], edi
jge 0x42f271
lea ecx, [ecx + edi*2]
mov edx, edi
add edx, ecx
add edx, eax
shl edx, 2
push edx
call fcn.00487380
mov ebp, eax
add esp, 4
test ebp, ebp
mov dword [esp + 0x10], ebp
jne 0x42f28c
mov eax, dword [esi + 8]
push str.wavelet_denoise__
push eax
push str._s:_Out_of_memory_in__s_n
push 0x69aee0
call fcn.00487674
add esp, 0x10
mov eax, dword [esi + 0x458]
cmp eax, 3
lea ecx, [edi + edi*2]
lea edx, [ebp + ecx*4]
mov dword [esp + 0x1c], edx
jne 0x42f2b1
mov ecx, dword [esi + 0x330]
test ecx, ecx
je 0x42f2b1
mov eax, 4
test eax, eax
jle 0x42f6cc
mov dword [esp + 0x30], 0
mov dword [esp + 0x4c], eax
jmp 0x42f2d0
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x24]
nop
xor ebp, ebp
xor eax, eax
cmp edi, ebp
jle 0x42f30c
mov edx, dword [esp + 0x30]
lea ecx, [ebx + 0x10]
nop
mov ebx, dword [esi + 0x488]
movzx ebx, word [ebx + edx]
shl ebx, cl
xor ebp, ebp
mov dword [esp + 0x74], ebp
inc eax
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x10]
add edx, 8
cmp eax, edi
fild qword [esp + 0x70]
fsqrt
fstp dword [ebx + eax*4 - 4]
jl 0x42f2e0
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ebp
mov edi, dword [esp + 0x20]
and edi, 1
inc edi
imul edi, dword [esp + 0x24]
cmp word [esi + 0x446], 0
mov dword [esp + 0x48], edi
mov dword [esp + 0x14], 0
jbe 0x42f4e2
mov ecx, dword [esp + 0x20]
mov ebx, 1
shl ebx, cl
mov dword [esp + 0x60], ebx
lea ebx, [ebx]
movzx edx, word [esi + 0x448]
mov ecx, dword [esp + 0x28]
mov eax, edx
imul eax, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + eax*4]
xor eax, eax
test ebx, ebx
jle 0x42f3ce
mov edi, dword [esp + 0x1c]
lea eax, [ecx + ebx*4]
mov ebp, ecx
sub ebp, edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x58], ebp
mov dword [esp + 0x3c], ebx
mov eax, ebx
jmp 0x42f394
mov ebp, dword [esp + 0x58]
fld dword [edi + ebp]
mov ebp, dword [esp + 0x18]
fadd st(0), st(0)
add edi, 4
fadd dword [ebp]
mov ebp, dword [esp + 0x44]
sub ebp, 4
mov dword [esp + 0x44], ebp
fadd dword [ebp + 4]
mov ebp, dword [esp + 0x18]
add ebp, 4
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x3c]
fstp dword [edi - 4]
dec ebp
mov dword [esp + 0x3c], ebp
jne 0x42f390
mov edi, dword [esp + 0x48]
lea ebp, [eax + ebx]
cmp ebp, edx
jge 0x42f441
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x44], ebp
lea ebp, [ecx + ebp*4]
mov dword [esp + 0x3c], ebp
mov ebp, eax
sub ebp, ebx
lea ebx, [ecx + ebp*4]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x18], ebx
mov ebx, ecx
lea edi, [edi + eax*4]
sub ebx, ebp
lea ebx, [ebx]
fld dword [edi + ebx]
mov ebp, dword [esp + 0x18]
fadd st(0), st(0)
inc eax
add edi, 4
fadd dword [ebp]
mov ebp, dword [esp + 0x3c]
fadd dword [ebp]
mov ebp, dword [esp + 0x18]
add ebp, 4
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x44]
fstp dword [edi - 4]
inc ebp
mov dword [esp + 0x44], ebp
add dword [esp + 0x3c], 4
cmp dword [esp + 0x44], edx
jl 0x42f400
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x48]
cmp eax, edx
jge 0x42f494
mov edi, dword [esp + 0x1c]
mov ebp, eax
sub ebp, ebx
lea ebp, [ecx + ebp*4]
mov dword [esp + 0x44], ebp
lea ebp, [edx + edx]
sub ebp, eax
sub ebp, ebx
lea ebp, [ecx + ebp*4 - 8]
mov dword [esp + 0x58], ebp
sub ecx, dword [esp + 0x1c]
sub edx, eax
lea edi, [edi + eax*4]
mov eax, dword [esp + 0x58]
mov ebp, edx
mov edx, dword [esp + 0x44]
fld dword [edi + ecx]
sub eax, 4
fadd st(0), st(0)
add edx, 4
add edi, 4
dec ebp
fadd dword [eax + 4]
fadd dword [edx - 4]
fstp dword [edi - 4]
jne 0x42f476
mov edi, dword [esp + 0x48]
movzx ecx, word [esi + 0x448]
mov edx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
jle 0x42f4ce
mov ebp, dword [esp + 0x1c]
imul ecx, edx
fld dword [ebp + eax*4]
fmul qword [0x65c2e8]
mov ebp, dword [esp + 0x10]
add ecx, eax
add ecx, edi
inc eax
fstp dword [ebp + ecx*4]
movzx ecx, word [esi + 0x448]
cmp eax, ecx
jl 0x42f4a5
movzx eax, word [esi + 0x446]
inc edx
cmp edx, eax
mov dword [esp + 0x14], edx
jl 0x42f350
movzx eax, word [esi + 0x448]
xor ebx, ebx
test eax, eax
jle 0x42f578
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov edx, 1
shl edx, cl
movzx ecx, word [esi + 0x446]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x10]
lea edx, [edx + edi*4]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x60]
push edx
push ecx
push eax
mov eax, dword [esp + 0x54]
push eax
push ebp
mov ecx, esi
call fcn.0042ff60
movzx ecx, word [esi + 0x446]
xor eax, eax
test ecx, ecx
jle 0x42f567
mov edx, dword [esp + 0x10]
lea ecx, [ecx]
movzx ecx, word [esi + 0x448]
fld dword [ebp + eax*4]
fmul qword [0x65c2e8]
imul ecx, eax
add ecx, ebx
add ecx, edi
inc eax
fstp dword [edx + ecx*4]
movzx ecx, word [esi + 0x446]
cmp eax, ecx
jl 0x42f540
add dword [esp + 0x48], 4
movzx eax, word [esi + 0x448]
inc ebx
cmp ebx, eax
jl 0x42f518
mov edx, dword [esp + 0x20]
fld dword [edx*4 + 0x65f75c]
mov eax, dword [esp + 0x24]
fmul dword [esi + 0x8530]
mov ebp, dword [esp + 0x10]
xor edx, edx
test eax, eax
fstp dword [esp + 0x18]
jle 0x42f613
fld dword [esp + 0x18]
mov eax, dword [esp + 0x28]
fchs
lea ecx, [ebp + eax*4]
lea ebx, [ebp + edi*4]
lea ecx, [ecx]
fld dword [ecx]
fsub dword [ebx]
fst dword [esp + 0x14]
fstp dword [ecx]
fld dword [esp + 0x14]
fcomp st(1)
fld dword [esp + 0x14]
fnstsw ax
test ah, 5
jp 0x42f5d3
fadd dword [esp + 0x18]
fstp dword [ecx]
jmp 0x42f5f0
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x42f5ea
fld dword [esp + 0x14]
fsub dword [esp + 0x18]
fstp dword [ecx]
jmp 0x42f5f0
mov dword [ecx], 0
mov eax, dword [esp + 0x28]
test eax, eax
je 0x42f602
fld dword [ecx]
fadd dword [ebp + edx*4]
fstp dword [ebp + edx*4]
mov eax, dword [esp + 0x24]
inc edx
add ebx, 4
add ecx, 4
cmp edx, eax
jl 0x42f5b0
fstp st(0)
mov eax, dword [esp + 0x20]
inc eax
cmp eax, 5
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], eax
jl 0x42f314
mov eax, dword [esp + 0x24]
xor ebx, ebx
test eax, eax
jle 0x42f6b2
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x30]
lea edi, [ecx + edi*4]
mov edx, dword [esp + 0x10]
fld dword [edx + ebx*4]
fadd dword [edi]
fld st(0)
fmulp st(1)
fmul dword [0x65f758]
fcom dword [0x65c1b8]
fnstsw ax
test ah, 5
jp 0x42f67f
fld st(0)
fld dword [0x65c2f0]
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x42f67f
fstp st(0)
fld dword [0x65c2f0]
jmp 0x42f694
fcom dword [0x65c1b8]
fnstsw ax
test ah, 5
jnp 0x42f694
fstp st(0)
fld dword [0x65c1b8]
call fcn.00487bd0
mov ecx, dword [esi + 0x488]
mov word [ecx + ebp], ax
mov eax, dword [esp + 0x24]
inc ebx
add ebp, 8
add edi, 4
cmp ebx, eax
jl 0x42f642
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x4c]
add ecx, 2
dec eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x4c], eax
jne 0x42f2c7
mov edx, dword [esi + 0x330]
test edx, edx
je 0x42fa3e
cmp dword [esi + 0x458], 3
jne 0x42fa3e
mov edi, 4
lea ecx, [esp + 0x3c]
xor eax, eax
sub edi, ecx
lea ecx, [edi + eax*4]
lea ecx, [esp + ecx + 0x3c]
and ecx, 0x1c
mov ebx, edx
shr ebx, cl
mov ecx, eax
and ecx, 7
shl ecx, 2
and ebx, 2
or ebx, 1
fld dword [esi + ebx*4 + 0x8588]
mov ebx, edx
fmul qword [0x65f750]
shr ebx, cl
and ebx, 2
or ebx, 1
fdiv dword [esi + ebx*4 + 0x8588]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0x38]
jl 0x42f6f4
movzx edx, word [esi + 0x43e]
mov ecx, dword [esp + 0x10]
xor eax, eax
lea edi, [edx + edx]
mov dword [esp + eax*4 + 0x80], ecx
inc eax
add ecx, edi
cmp eax, 4
jl 0x42f748
movzx eax, word [esi + 0x43c]
dec eax
cmp eax, 1
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x14], 1
jle 0x42fa3e
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x4c]
lea ebp, [ecx + 1]
cmp ebx, ebp
mov dword [esp + 0x44], ebp
jge 0x42f837
nop
inc ebx
xor eax, eax
mov edi, dword [esp + eax*4 + 0x80]
lea ecx, [eax - 1]
and ecx, 3
inc eax
cmp eax, 4
mov dword [esp + ecx*4 + 0x80], edi
jl 0x42f793
mov eax, dword [esi + 0x330]
mov edi, ebx
and edi, 7
lea ecx, [edi*4 + 2]
shr eax, cl
and eax, 1
cmp eax, edx
jge 0x42f82b
add edi, edi
lea ebx, [ebx]
movzx ecx, word [esi + 0x444]
movzx ebp, word [esi + 0x448]
mov edx, ebx
sar edx, cl
imul edx, ebp
mov ebp, eax
sar ebp, cl
mov ecx, eax
and ecx, 1
add ecx, edi
add edx, ebp
mov ebp, dword [esi + 0x330]
shl ecx, 1
shr ebp, cl
add eax, 2
and ebp, 3
lea ecx, [ebp + edx*4]
mov edx, dword [esi + 0x488]
mov cx, word [edx + ecx*2]
mov edx, dword [esp + 0x88]
mov word [edx + eax*2 - 4], cx
movzx edx, word [esi + 0x43e]
cmp eax, edx
jl 0x42f7d0
mov ebp, dword [esp + 0x44]
cmp ebx, ebp
jl 0x42f790
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x14]
fld dword [esi + 0x8530]
mov edi, dword [esi + 0x330]
fmul dword [0x65f748]
movzx edx, word [esi + 0x43e]
and eax, 7
lea ecx, [eax*4]
fstp dword [esp + 0x18]
shr edi, cl
lea ecx, [edx - 1]
and edi, 1
inc edi
cmp edi, ecx
jge 0x42fa26
fld dword [esp + 0x18]
mov ecx, dword [esp + 0x80]
lea edx, [eax + eax]
fchs
mov eax, dword [esp + 0x14]
and eax, 1
fld dword [esp + eax*4 + 0x3c]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x58], edx
lea edx, [ecx + edi*2 - 2]
sub ecx, eax
mov dword [esp + 0x48], edx
lea ebx, [eax + edi*2 + 2]
mov dword [esp + 0x60], ecx
jmp 0x42f8b1
mov ecx, dword [esp + 0x60]
movzx ecx, word [ecx + ebx]
movzx edx, word [ebx - 4]
mov eax, dword [esi + 0x380]
add ecx, edx
lea edx, [eax*4]
sub ecx, edx
movzx edx, word [ebx]
add ecx, edx
mov edx, dword [esp + 0x48]
movzx edx, word [edx]
add ecx, edx
mov edx, dword [esp + 0x84]
movzx edx, word [edx + edi*2]
mov dword [esp + 0x70], ecx
xor ecx, ecx
mov dword [esp + 0x74], ecx
sub edx, eax
mov dword [esp + 0x30], edx
fild qword [esp + 0x70]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fmul st(1)
fild qword [esp + 0x30]
fmul qword [0x65c2f8]
faddp st(1)
fild qword [esp + 0x28]
faddp st(1)
fcom dword [0x65c2f0]
fnstsw ax
test ah, 5
jp 0x42f92e
fstp st(0)
fld qword [0x65c090]
jmp 0x42f930
fsqrt
movzx ecx, word [esi + 0x444]
mov eax, dword [esp + 0x14]
movzx edx, word [esi + 0x448]
mov ebp, dword [esp + 0x58]
sar eax, cl
imul eax, edx
mov edx, edi
sar edx, cl
mov ecx, edi
and ecx, 1
add ecx, ebp
add eax, edx
mov edx, dword [esi + 0x330]
shl ecx, 1
shr edx, cl
mov ecx, dword [esi + 0x488]
and edx, 3
lea eax, [edx + eax*4]
movzx edx, word [ecx + eax*2]
lea ebp, [ecx + eax*2]
mov dword [esp + 0x50], edx
fild dword [esp + 0x50]
fsqrt
fld st(1)
fsubp st(1)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x42f992
fadd dword [esp + 0x18]
jmp 0x42f9ab
fcom dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x42f9a3
fsub dword [esp + 0x18]
jmp 0x42f9ab
fstp st(0)
fld dword [0x65c2f0]
faddp st(1)
fld st(0)
fmulp st(1)
fadd qword [0x65c2f8]
fcom qword [0x65f740]
fnstsw ax
test ah, 5
jp 0x42f9e1
fld st(0)
fld qword [0x65c090]
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x42f9e1
fstp st(0)
fld qword [0x65c090]
jmp 0x42f9f6
fcom qword [0x65f740]
fnstsw ax
test ah, 5
jnp 0x42f9f6
fstp st(0)
fld qword [0x65f740]
call fcn.00487bd0
mov edx, dword [esp + 0x48]
add edx, 4
mov word [ebp], ax
mov dword [esp + 0x48], edx
movzx edx, word [esi + 0x43e]
add edi, 2
lea eax, [edx - 1]
add ebx, 4
cmp edi, eax
jl 0x42f8ad
fstp st(0)
fstp st(0)
movzx ecx, word [esi + 0x43c]
mov eax, dword [esp + 0x44]
dec ecx
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x42f778
mov edx, dword [esp + 0x10]
push edx
call fcn.00487297
add esp, 4
mov ecx, dword [esi + 0x384]
fld qword [0x65c090]
mov eax, dword [esi + 0x380]
sub ecx, eax
lea edi, [esi + 0x8588]
mov dword [esi + 0x384], ecx
mov dword [esp + 0x60], 0xffffffff
mov dword [esp + 0x64], 0x7fefffff
mov ecx, edi
mov edx, 4
fld dword [ecx]
fcomp qword [esp + 0x60]
fnstsw ax
test ah, 5
jp 0x42fa95
fld dword [ecx]
fstp qword [esp + 0x60]
fld dword [ecx]
fld st(1)
fcompp
fnstsw ax
test ah, 5
jp 0x42faa6
fstp st(0)
fld dword [ecx]
add ecx, 4
dec edx
jne 0x42fa82
mov eax, dword [esi + 0x8540]
xor edx, edx
cmp eax, edx
jne 0x42fabe
fstp st(0)
fld qword [esp + 0x60]
fdivr qword [0x65c300]
xor eax, eax
mov ecx, edi
fld dword [ecx]
mov dword [esp + 0x74], edx
fmul st(1)
inc eax
add ecx, 4
cmp eax, 4
fst dword [ecx - 4]
mov ebx, dword [esi + 0x384]
fmul qword [0x65f740]
mov dword [esp + 0x70], ebx
fild qword [esp + 0x70]
fdivp st(1)
fstp dword [esp + eax*4 + 0x7c]
jb 0x42fac8
mov eax, dword [esi + 0x8544]
fstp st(0)
cmp eax, edx
je 0x42fb4f
mov ecx, dword [esp + 0x6c]
push ecx
push str.Scaling_with_black__d__multipliers
push 0x69aee0
call fcn.00487674
add esp, 0xc
mov ebx, 4
mov edi, edi
fld dword [edi]
sub esp, 8
fstp qword [esp]
push 0x6971c4
push 0x69aee0
call fcn.00487674
add esp, 0x10
add edi, 4
dec ebx
jne 0x42fb20
push 0x69aee0
push 0xa
call fcn.0048918e
add esp, 8
movzx edx, word [esi + 0x446]
fld dword [esp + 0x80]
movzx eax, word [esi + 0x448]
fmul dword [0x65f738]
imul eax, edx
mov dword [esp + 0x28], eax
call fcn.00487bd0
mov dword [esp + 0x70], eax
fld dword [esp + 0x84]
fmul dword [0x65f738]
call fcn.00487bd0
fld dword [esp + 0x88]
fmul dword [0x65f738]
mov dword [esp + 0x74], eax
call fcn.00487bd0
fld dword [esp + 0x8c]
fmul dword [0x65f738]
mov dword [esp + 0x78], eax
call fcn.00487bd0
cmp word [esi + 0x43c], 0
mov dword [esp + 0x7c], eax
mov dword [esp + 0x1c], 0
jbe 0x42fcd8
mov eax, dword [esi + 0x866c]
test eax, eax
je 0x42fbe5
cmp dword [eax], 0
jne 0x42ff50
movzx eax, word [esi + 0x43e]
xor ecx, ecx
test eax, eax
mov dword [esp + 0x4c], ecx
jbe 0x42fcc0
lea ebx, [ebx]
imul eax, dword [esp + 0x1c]
mov ebp, dword [esi + 0x380]
add eax, ecx
mov ecx, dword [esi + 0x488]
movzx ebx, word [ecx + eax*8 + 4]
movzx edi, word [ecx + eax*8 + 6]
lea edx, [ecx + eax*8]
movzx ecx, word [edx]
movzx eax, word [edx + 2]
sub ecx, ebp
imul ecx, dword [esp + 0x70]
sub eax, ebp
imul eax, dword [esp + 0x74]
sub ebx, ebp
imul ebx, dword [esp + 0x78]
sub edi, ebp
imul edi, dword [esp + 0x7c]
sar ecx, 0xc
sar eax, 0xc
sar ebx, 0xc
sar edi, 0xc
cmp ecx, 0xffff
jbe 0x42fc62
sar ecx, 0x1f
not ecx
and ecx, 0xffff
cmp eax, 0xffff
jbe 0x42fc73
sar eax, 0x1f
not eax
and eax, 0xffff
cmp ebx, 0xffff
jbe 0x42fc86
sar ebx, 0x1f
not ebx
and ebx, 0xffff
cmp edi, 0xffff
jbe 0x42fc99
sar edi, 0x1f
not edi
and edi, 0xffff
mov word [edx], cx
mov ecx, dword [esp + 0x4c]
mov word [edx + 2], ax
mov word [edx + 4], bx
mov word [edx + 6], di
movzx eax, word [esi + 0x43e]
inc ecx
cmp ecx, eax
mov dword [esp + 0x4c], ecx
jb 0x42fc00
mov eax, dword [esp + 0x1c]
movzx edx, word [esi + 0x43c]
inc eax
cmp eax, edx
mov dword [esp + 0x1c], eax
jb 0x42fbd2
mov ecx, dword [esi + 0x468]
test ecx, ecx
lea ebx, [esi + 0x468]
mov eax, 0x3ff00000
jne 0x42fd08
cmp dword [ebx + 4], eax
jne 0x42fd08
mov ecx, dword [esi + 0x478]
test ecx, ecx
jne 0x42fd08
cmp dword [esi + 0x47c], eax
je 0x42ff50
cmp dword [esi + 0x458], 3
jne 0x42ff50
mov eax, dword [esi + 0x8544]
test eax, eax
je 0x42fd31
push str.Correcting_chromatic_aberration..._n
push 0x69aee0
call fcn.00487674
add esp, 8
mov ebp, dword [esp + 0x28]
xor edi, edi
mov eax, ebx
mov dword [esp + 0x48], edi
mov dword [esp + 0x30], eax
cmp dword [eax], 0
jne 0x42fd53
cmp dword [eax + 4], 0x3ff00000
je 0x42ff39
lea eax, [ebp + ebp]
push eax
call fcn.00487380
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x3c], ebx
jne 0x42fd85
mov ecx, dword [esi + 8]
push str.scale_colors__
push ecx
push str._s:_Out_of_memory_in__s_n
push 0x69aee0
call fcn.00487674
add esp, 0x10
xor eax, eax
test ebp, ebp
jbe 0x42fda6
lea ecx, [edi + edi]
mov edi, edi
mov edx, dword [esi + 0x488]
mov dx, word [ecx + edx]
mov word [ebx + eax*2], dx
inc eax
add ecx, 8
cmp eax, ebp
jb 0x42fd90
movzx edi, word [esi + 0x446]
xor eax, eax
test edi, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], edi
jbe 0x42ff28
nop
fild dword [esp + 0x4c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x74], 0
fmul qword [0x65c2f8]
fild qword [esp + 0x70]
fsub st(1)
fmul qword [eax]
faddp st(1)
fld st(0)
call fcn.00487bd0
mov ebp, eax
add edi, 0xfffffffe
cmp ebp, edi
ja 0x42ff02
movzx edi, word [esi + 0x448]
xor ebx, ebx
cmp edi, ebx
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebx
mov dword [esp + 0x44], edi
fild qword [esp + 0x60]
fsubr st(1)
fstp dword [esp + 0x4c]
fstp st(0)
jbe 0x42ff04
fild dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], 0
fmul qword [0x65c2f8]
fild qword [esp + 0x58]
fsub st(1)
fmul qword [ecx]
faddp st(1)
fld st(0)
call fcn.00487bd0
lea edx, [edi - 2]
cmp eax, edx
ja 0x42feea
mov edx, dword [esp + 0x3c]
mov ecx, edi
imul ecx, ebp
add ecx, eax
mov dword [esp + 0x50], eax
lea eax, [edx + ecx*2]
movzx ecx, word [eax + edi*2 + 2]
movzx edx, word [eax + edi*2]
mov dword [esp + 0x54], 0
mov dword [esp + 0x6c], ecx
movzx ecx, word [eax + 2]
fisub dword [esp + 0x50]
fld dword [0x65c2f4]
fsub st(1)
fild dword [esp + 0x6c]
mov dword [esp + 0x6c], edx
movzx edx, word [eax]
fmul st(2)
fild dword [esp + 0x6c]
mov dword [esp + 0x6c], ecx
fmul st(2)
faddp st(1)
fmul dword [esp + 0x4c]
fild dword [esp + 0x6c]
mov dword [esp + 0x6c], edx
fmul st(3)
fild dword [esp + 0x6c]
fmul st(3)
faddp st(1)
fld dword [0x65c2f4]
fsub dword [esp + 0x4c]
fmulp st(1)
faddp st(1)
call fcn.00487bd0
imul edi, dword [esp + 0x1c]
fstp st(0)
mov ecx, dword [esp + 0x48]
add edi, ebx
lea edx, [ecx + edi*4]
mov ecx, dword [esi + 0x488]
mov word [ecx + edx*2], ax
movzx edi, word [esi + 0x448]
fstp st(0)
inc ebx
cmp ebx, edi
mov dword [esp + 0x44], edi
jb 0x42fe21
jmp 0x42ff04
fstp st(0)
mov eax, dword [esp + 0x1c]
movzx edi, word [esi + 0x446]
inc eax
cmp eax, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], edi
jb 0x42fdc0
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x28]
push ebx
call fcn.00487297
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
add esp, 4
add edi, 2
add eax, 0x10
cmp edi, 4
mov dword [esp + 0x48], edi
mov dword [esp + 0x30], eax
jb 0x42fd41
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret