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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x18], edi
mov eax, dword [edi + 0xc]
cmp eax, 3
jne 0x10040f69
mov edx, dword [ebp + 8]
movzx eax, byte [edx + 2]
push eax
movzx eax, byte [edx + 1]
push eax
movzx eax, byte [edx]
push eax
call fcn.10040940
xor ebx, ebx
cmp dword [edi + 0x10], ebx
jle 0x10040f60
lea eax, [edi + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
mov ecx, dword [edi + 0x44]
lea esi, [eax + ecx*4]
mov eax, dword [edi + 0x7c]
mov ecx, dword [edi + 0x80]
mov edx, dword [esi + eax*4]
add edx, dword [esi + ecx*4]
mov eax, dword [edi + 0x78]
mov ecx, dword [ebp + 0xc]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x74]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x70]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x6c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x68]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x64]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x60]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x5c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x58]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x54]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x50]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x4c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x48]
add edx, dword [esi + eax*4]
mov eax, dword [esi]
add edx, 8
add eax, edx
shr eax, 4
mov byte [ebx + ecx], al
inc ebx
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x18], eax
cmp ebx, dword [edi + 0x10]
jl 0x10040ed6
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp eax, 4
jne 0x100411e7
mov esi, dword [ebp + 8]
movzx eax, byte [esi + 2]
push eax
movzx eax, byte [esi + 1]
push eax
movzx eax, byte [esi]
push eax
call fcn.10040940
mov cl, byte [esi + 3]
movsd xmm3, qword [0x100f10a8]
movzx eax, cl
shr eax, 4
imul ebx, eax, 0x1331
mov dword [esp + 0x4c], ebx
cmp eax, 0xf
jae 0x10040fbc
and cl, 0xf
movzx eax, cl
movd xmm2, eax
cvtdq2pd xmm2, xmm2
mulsd xmm2, xmm3
jmp 0x10040fd2
and cl, 0xf
movzx eax, cl
movd xmm2, eax
cvtdq2pd xmm2, xmm2
divsd xmm2, qword [0x100f1190]
cmp dword [edi + 0x10], 0
mov dword [esp + 0x48], 0
jle 0x10040f60
movsd xmm4, qword [0x100f10f0]
lea edx, [edi + 0x14]
mov dword [esp + 0x14], edx
nop
mov ecx, dword [edx]
mov eax, dword [edi + 0x44]
add eax, ebx
mov esi, dword [esp + 0x18]
mov ebx, dword [edi + 0x50]
shl ebx, 2
mov dword [esp + 0x50], ebx
lea edx, [ecx + eax*4]
mov esi, dword [esi + 0x48]
mov eax, dword [edi + 0x80]
shl eax, 2
mov dword [esp + 0x44], eax
mov eax, dword [edi + 0x7c]
shl eax, 2
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x78]
shl eax, 2
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x74]
shl eax, 2
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x70]
shl eax, 2
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x6c]
shl eax, 2
mov dword [esp + 0x30], eax
mov eax, dword [edi + 0x68]
shl eax, 2
mov ecx, dword [edi + 0x58]
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x64]
shl eax, 2
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x60]
shl eax, 2
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x5c]
mov dword [esp + 0x10], edx
mov edx, dword [edx + esi*4]
shl eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x54]
mov edi, dword [edi + 0x4c]
shl eax, 2
shl ecx, 2
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x54], eax
add edx, dword [ecx + edi*4]
add edx, dword [ebx + ecx]
add edx, dword [eax + ecx]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x4c]
add edx, dword [ecx + eax]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x24]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x28]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x2c]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x30]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x34]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x38]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x3c]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x40]
add edx, dword [eax + ecx]
mov eax, dword [esp + 0x44]
add edx, dword [eax + ecx]
add edx, dword [ecx]
add ebx, 0x1331
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x44]
add eax, ebx
movd xmm1, edx
mov ebx, dword [esp + 0x14]
shr edx, 0x1f
cvtdq2pd xmm1, xmm1
mov ecx, dword [ebx]
mov ebx, dword [esp + 0x50]
lea ecx, [ecx + eax*4]
addsd xmm1, qword [edx*8 + 0x100f1e60]
mov eax, dword [ecx + esi*4]
add eax, dword [ecx + edi*4]
add eax, dword [ebx + ecx]
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x4c]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x1c]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x20]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x24]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x28]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x2c]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x30]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x34]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x38]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x3c]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x40]
add eax, dword [edx + ecx]
mov edx, dword [esp + 0x44]
add eax, dword [edx + ecx]
add eax, dword [ecx]
mov ecx, dword [esp + 0x48]
mov edx, dword [ebp + 0xc]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x100f1e60]
subsd xmm0, xmm1
mulsd xmm0, xmm2
addsd xmm0, xmm1
mulsd xmm0, xmm3
addsd xmm0, xmm4
cvttsd2si eax, xmm0
mov byte [ecx + edx], al
inc ecx
mov edx, dword [esp + 0x14]
add edx, 4
mov dword [esp + 0x48], ecx
mov dword [esp + 0x14], edx
cmp ecx, dword [edi + 0x10]
jl 0x10040ff0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp eax, 0xc
jne 0x100412dc
cmp dword [edi + 0x10], 0
mov dword [esp + 0x4c], 0
jle 0x10040f60
mov ecx, dword [ebp + 8]
lea esi, [edi + 0x14]
mov eax, ecx
mov dword [esp + 0x48], esi
lea ebx, [ecx + 1]
sub eax, ebx
sub ecx, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
lea ecx, [ecx]
movzx eax, byte [eax + ebx + 2]
push eax
movzx eax, byte [ebx]
push eax
movzx eax, byte [ecx + ebx]
mov ecx, edi
push eax
call fcn.10040940
mov eax, dword [esi]
lea ebx, [ebx + 3]
mov ecx, dword [edi + 0x44]
lea esi, [eax + ecx*4]
mov eax, dword [edi + 0x7c]
mov ecx, dword [edi + 0x80]
mov edx, dword [esi + eax*4]
add edx, dword [esi + ecx*4]
mov eax, dword [edi + 0x78]
mov ecx, dword [esp + 0x4c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x74]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x70]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x6c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x68]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x64]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x60]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x5c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x58]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x54]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x50]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x4c]
add edx, dword [esi + eax*4]
mov eax, dword [edi + 0x48]
add edx, dword [esi + eax*4]
mov eax, dword [esi]
add edx, 8
mov esi, dword [esp + 0x48]
add eax, edx
mov edx, dword [ebp + 0xc]
add esi, 4
shr eax, 4
mov dword [esp + 0x48], esi
mov byte [ecx + edx], al
inc ecx
cmp ecx, dword [edi + 0x10]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x54]
jl 0x10041220
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
sub esp, 0xc
push 0
push 0
push str.unsupported_input_dimension
call fcn.10047a60
int3