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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x74
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
push 0x4c0a20
push ebx
call fcn.0046f500
push dword [ebp + 0xc]
mov edi, eax
mov dword [esp + 0x5c], edi
call fcn.00425b50
xor esi, esi
mov dword [esp + 0x80], eax
add esp, 0xc
mov dword [esp + 0x58], esi
test edi, edi
jne 0x40ae75
push 0x60
call fcn.0046ed00
mov edi, eax
push edi
push 0x40bb40
push esi
push 0x4c0a20
push ebx
mov dword [esp + 0x68], edi
mov dword [edi + 0x54], 0xffffffff
call fcn.0046f020
add esp, 0x18
cmp dword [edi + 0x18], esi
jne 0x40b552
mov ecx, dword [edi + 0x54]
mov eax, dword [edi]
mov dword [edi + 0x18], 1
mov dword [edi + 0x20], esi
cmp ecx, 0xffffffff
jl 0x40ae96
cmp ecx, eax
jb 0x40ae9d
mov dword [edi + 0x54], 0xffffffff
xor edx, edx
mov dword [esp + 0x4c], edx
test eax, eax
je 0x40b14b
xor ecx, ecx
mov dword [esp + 0x64], ecx
mov ebx, dword [edi + 0x24]
add ebx, ecx
mov ecx, dword [ebx + 0x14]
mov eax, dword [ebx]
mov dword [esp + 0x48], eax
test ecx, ecx
je 0x40aef0
push 0x1000
inc esi
push ecx
mov dword [esp + 0x60], esi
call fcn.0041a9f0
lea eax, [ebx + 0x10]
push eax
push dword [ebx + 0x14]
call fcn.0041a750
mov edx, dword [esp + 0x5c]
add esp, 0x10
mov dword [ebx + 0xc], eax
inc dword [edi + 0x2c]
mov eax, dword [esp + 0x48]
cmp eax, 1
jle 0x40b0f4
shl eax, 0x11
xor esi, esi
push eax
call fcn.0046ed00
mov dword [ebx + 8], eax
add esp, 4
mov eax, dword [ebx + 4]
movsd xmm0, qword [eax]
mulsd xmm0, qword [0x4c0eb0]
mulsd xmm0, qword [eax + 0x18]
cvttsd2si eax, xmm0
mov dword [esp + 0x54], eax
cmp eax, 0xffff
jle 0x40af37
mov dword [esp + 0x54], 0xffff
jmp 0x40af3b
test eax, eax
js 0x40af71
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x54]
lea edx, [eax + eax]
mov eax, dword [ebx + 4]
movd xmm0, esi
inc esi
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [eax]
mov eax, dword [ebx + 8]
cvttsd2si ecx, xmm0
mov word [edx + eax - 2], cx
mov ecx, dword [esp + 0x48]
lea edx, [edx + ecx*2]
cmp esi, edi
jle 0x40af46
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x48]
lea ecx, [eax - 1]
mov dword [esp + 0x60], ecx
test ecx, ecx
jle 0x40b0a9
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x54], edi
mov dword [esp + 0x5c], ecx
mov eax, dword [ebx + 4]
movsd xmm0, qword [ecx + eax]
movsd qword [esp + 0x78], xmm0
movsd xmm0, qword [ecx + eax + 0x28]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [ecx + eax + 0x40]
mulsd xmm0, qword [ecx + eax + 0x18]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movsd xmm5, qword [esp + 0x68]
mov ecx, 0xffff
movsd xmm7, qword [0x4c0eb0]
movaps xmm1, xmm5
mulsd xmm1, xmm7
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
cmp eax, 0xffff
cmovg eax, ecx
mov ecx, eax
mov dword [esp + 0x68], eax
sub ecx, esi
cmp esi, eax
jg 0x40b084
movsd xmm6, qword [esp + 0x78]
lea edx, [esi + 1]
imul edx, dword [esp + 0x48]
movd xmm3, esi
movd xmm4, ecx
cvtdq2pd xmm3, xmm3
add edx, edx
mov edi, edx
sub edx, dword [esp + 0x54]
sub edi, dword [esp + 0x54]
sub edx, 4
cvtdq2pd xmm4, xmm4
movd xmm1, esi
inc esi
cvtdq2pd xmm1, xmm1
mov eax, dword [ebx + 8]
movsd xmm2, qword [0x4c09d8]
movaps xmm0, xmm1
subsd xmm0, xmm3
divsd xmm0, xmm4
subsd xmm2, xmm0
movaps xmm0, xmm7
mulsd xmm2, xmm3
subsd xmm1, xmm2
divsd xmm2, xmm6
divsd xmm1, xmm5
minsd xmm0, xmm2
cvttsd2si ecx, xmm1
mov word [edx + eax], cx
mov eax, dword [ebx + 8]
cvttsd2si ecx, xmm0
mov word [edi + eax - 2], cx
mov ecx, dword [esp + 0x48]
lea edi, [edi + ecx*2]
lea edx, [edx + ecx*2]
cmp esi, dword [esp + 0x68]
jle 0x40b022
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
add edi, 2
add ecx, 0x28
mov dword [esp + 0x54], edi
sub dword [esp + 0x60], 1
mov dword [esp + 0x5c], ecx
jne 0x40af90
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x48]
cmp esi, 0xffff
jg 0x40b0f0
mov edx, esi
lea edi, [eax + eax*4]
imul edx, eax
add edx, edx
nop dword [eax + eax]
mov eax, dword [ebx + 4]
movd xmm0, esi
inc esi
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [eax + edi*8 - 0x28]
mov eax, dword [ebx + 8]
cvttsd2si ecx, xmm0
mov word [edx + eax], cx
mov ecx, dword [esp + 0x48]
lea edx, [edx + ecx*2]
cmp esi, 0xffff
jle 0x40b0c0
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
cmp dword [edi + 0x58], edx
je 0x40b101
cmp dword [ebx], 0
jbe 0x40b101
inc dword [edi + 0x10]
mov eax, dword [ebx]
xor esi, esi
add dword [edi + 4], eax
cmp dword [ebx], esi
jbe 0x40b12a
mov ecx, dword [edi + 0x20]
xor edx, edx
mov eax, dword [ebx + 4]
lea edx, [edx + 0x28]
inc esi
movzx eax, word [edx + eax - 8]
add ecx, eax
mov dword [edi + 0x20], ecx
cmp esi, dword [ebx]
jb 0x40b111
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x64]
inc edx
mov eax, dword [edi]
add ecx, 0x18
mov esi, dword [esp + 0x58]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x64], ecx
cmp edx, eax
jb 0x40aeb1
mov ebx, dword [ebp + 8]
mov esi, dword [edi + 0x58]
test esi, esi
js 0x40b175
xor ecx, ecx
test eax, eax
je 0x40b175
xor edx, edx
nop word [eax + eax]
cmp esi, ecx
je 0x40b175
mov eax, dword [edi + 0x24]
inc ecx
mov eax, dword [eax + edx]
add edx, 0x18
add dword [edi + 0x5c], eax
cmp ecx, dword [edi]
jb 0x40b160
mov eax, dword [ebp + 0x10]
mov esi, dword [esp + 0x74]
mov dword [edi + 8], eax
mov eax, dword [edi + 4]
imul eax, esi
mov dword [edi + 0x14], esi
add eax, eax
push eax
call fcn.0046e570
add esp, 4
mov dword [edi + 0x48], eax
cmp dword [esp + 0x58], 0
mov dword [edi + 0x44], eax
mov eax, dword [edi + 8]
jne 0x40b24a
push 0x4c0a20
push ebx
mov dword [edi + 0xc], eax
call fcn.0046f500
add esp, 8
test eax, eax
je 0x40b1d4
mov edx, dword [eax]
test edx, edx
je 0x40b1d4
mov eax, dword [eax + 0x24]
xor ecx, ecx
cmp dword [eax], 1
ja 0x40b20a
inc ecx
add eax, 0x18
cmp ecx, edx
jb 0x40b1c7
cmp dword [edi + 0x58], 0xffffffff
je 0x40b234
mov eax, dword [edi + 8]
imul eax, esi
add eax, eax
push eax
call fcn.0046e570
mov ecx, dword [edi + 4]
mov edx, eax
mov eax, dword [edi + 0x44]
add esp, 4
mov dword [edi + 0xc], ecx
mov dword [edi + 0x4c], edx
mov dword [edi + 0x34], edx
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0xc]
mov dword [edi + 0x10], eax
jmp 0x40b2c5
mov eax, dword [edi + 8]
imul eax, esi
add eax, eax
push eax
call fcn.0046e570
mov dword [edi + 0x4c], eax
mov edx, eax
mov dword [edi + 0x40], eax
add esp, 4
mov dword [edi + 0x34], edx
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0xc]
mov dword [edi + 0x10], eax
jmp 0x40b2c5
mov eax, dword [edi + 0x44]
mov edx, eax
mov dword [edi + 0x34], edx
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0xc]
mov dword [edi + 0x10], eax
jmp 0x40b2c5
imul eax, esi
add eax, eax
push eax
call fcn.0046e570
push 0x4c0a20
push ebx
mov dword [edi + 0x4c], eax
mov dword [edi + 0x34], eax
call fcn.0046f500
add esp, 0xc
test eax, eax
je 0x40b285
mov edx, dword [eax]
test edx, edx
je 0x40b285
mov eax, dword [eax + 0x24]
xor ecx, ecx
cmp dword [eax], 1
ja 0x40b2a6
inc ecx
add eax, 0x18
cmp ecx, edx
jb 0x40b278
xor eax, eax
test eax, eax
je 0x40b2ad
mov eax, dword [edi + 0x10]
imul eax, esi
add eax, eax
push eax
call fcn.0046e570
add esp, 4
mov dword [edi + 0x50], eax
mov dword [edi + 0x40], eax
mov ecx, eax
jmp 0x40b2b9
mov eax, 1
jmp 0x40b287
mov eax, dword [edi + 4]
mov ecx, dword [edi + 0x48]
mov dword [edi + 0x10], eax
mov eax, dword [edi + 0x44]
mov dword [edi + 0x38], ecx
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0x10]
mov dword [edi + 0xc], eax
push str.stp_channel_initialize:_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi]
push str.___channel_count___d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 4]
push str.___total_channels__d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 8]
push str.___input_channels__d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x10]
push str.___aux_channels____d_n
push ebx
push 4
call fcn.0046e0c0
add esp, 0x4c
push dword [edi + 0xc]
push str.___gcr_channels____d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x14]
push str.___width___________d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x1c]
push str.___ink_limit_______d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x30]
push str.___gloss_limit_____d_n
push ebx
push 4
call fcn.0046e0c0
add esp, 0x40
push dword [edi + 0x20]
push str.___max_density_____d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x2c]
push str.___curve_count_____d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x54]
push str.___black_channel___d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x58]
push str.___gloss_channel___d_n
push ebx
push 4
call fcn.0046e0c0
add esp, 0x40
push dword [edi + 0x5c]
push str.___gloss_physical__d_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x34]
push str.___input_data______p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x38]
push str.___multi_tmp_______p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x40]
push str.___split_input_____p_n
push ebx
push 4
call fcn.0046e0c0
add esp, 0x40
push dword [edi + 0x44]
push str.___output_data_____p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x3c]
push str.___gcr_data________p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x48]
push str.___alloc_data_1____p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x4c]
push str.___alloc_data_2____p_n
push ebx
push 4
call fcn.0046e0c0
add esp, 0x40
push dword [edi + 0x50]
push str.___alloc_data_3____p_n
push ebx
push 4
call fcn.0046e0c0
push dword [edi + 0x28]
push str.___gcr_curve_______p_n
push ebx
push 4
call fcn.0046e0c0
xor eax, eax
add esp, 0x20
mov dword [esp + 0x5c], eax
cmp dword [edi], eax
jbe 0x40b552
xor esi, esi
mov dword [esp + 0x58], esi
push eax
push str.___Channel__d:_n
push ebx
push 4
call fcn.0046e0c0
mov eax, dword [edi + 0x24]
xor ecx, ecx
add esp, 0x10
mov dword [esp + 0x64], ecx
cmp dword [esi + eax], ecx
jbe 0x40b53a
xor edx, edx
mov dword [esp + 0x60], edx
mov eax, dword [edi + 0x24]
push ecx
push str.______Subchannel__d:_n
push ebx
mov esi, dword [eax + esi + 4]
push 4
add esi, edx
call fcn.0046e0c0
movsd xmm0, qword [esi]
add esp, 8
movsd qword [esp], xmm0
push str._________value____.3f:_n
push ebx
push 4
call fcn.0046e0c0
movsd xmm0, qword [esi + 8]
add esp, 0xc
movsd qword [esp], xmm0
push str._________lower____.3f:_n
push ebx
push 4
call fcn.0046e0c0
movsd xmm0, qword [esi + 0x10]
add esp, 0xc
movsd qword [esp], xmm0
push str._________upper____.3f:_n
push ebx
push 4
call fcn.0046e0c0
movsd xmm0, qword [esi + 0x18]
add esp, 0xc
movsd qword [esp], xmm0
push str._________cutoff___.3f:_n
push ebx
push 4
call fcn.0046e0c0
movzx eax, word [esi + 0x20]
push eax
push str._________density__d:_n
push ebx
push 4
call fcn.0046e0c0
mov ecx, dword [esp + 0x88]
add esp, 0x24
mov eax, dword [edi + 0x24]
inc ecx
mov esi, dword [esp + 0x58]
mov edx, dword [esp + 0x60]
add edx, 0x28
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], edx
cmp ecx, dword [esi + eax]
jb 0x40b480
mov eax, dword [esp + 0x5c]
add esi, 0x18
inc eax
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], eax
cmp eax, dword [edi]
jb 0x40b457
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret