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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x54
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov eax, ecx
and eax, 0xffff
shl ebx, 0x10
or ebx, eax
mov al, byte [edi + 0x12]
test al, al
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebx
je 0x300a54b7
mov eax, dword [edi + 0xc]
test eax, eax
pxor mm0, mm0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
movq qword [esp + 0x48], mm0
je 0x300a54a3
lea ecx, [eax + eax*2]
lea edx, [eax + eax*2]
shl ecx, 3
shl edx, 5
lea edx, [edx + edi + 0x18]
mov dword [esp + 0x24], edx
jmp 0x300a5240
mov ecx, dword [esp + 0x2c]
movzx esi, byte [edi + eax + 0x13]
mov edx, dword [esp + 0x24]
dec eax
sub ecx, 0x18
mov dword [esp + 0x2c], ecx
add ecx, esi
lea ebx, [edi + ecx*4 + 0x14]
mov cl, byte [edi + 0x13]
sub edx, 0x60
test cl, cl
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
je 0x300a5376
lea eax, [esp + 0x30]
push eax
mov eax, dword [ebp + 0xc]
lea ecx, [eax + 1]
push ecx
push eax
mov eax, dword [ebp + 0x14]
push eax
call dword [eax + 0xf8]
add esp, 0x10
test esi, esi
jle 0x300a5452
nop
mov edi, dword [ebx]
mov al, byte [edi + 0x2e]
cmp al, 3
jne 0x300a52c3
mov edx, dword [esp + 0x30]
mov ecx, dword [ebp + 0xc]
mov dword [edi + 8], edx
mov eax, dword [esp + 0x34]
push ecx
push edi
mov dword [edi + 0xc], eax
call dword [0x30335e14]
movq mm0, qword [edi + 8]
add esp, 8
movq qword [esp + 0x30], mm0
jmp 0x300a5365
mov ecx, dword [edi + 0x3c]
test ecx, ecx
je 0x300a52f4
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 0xc]
push 0xffffffffffffffff
lea edx, [esp + 0x34]
push edx
mov edx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [esp + 0x2c]
push esi
push edx
call fcn.300a4f80
mov ecx, eax
sub ecx, esi
lea ebx, [ebx + ecx*4]
mov esi, eax
jmp 0x300a5369
mov edx, dword [edi + 4]
cmp edx, dword [esp + 0x18]
je 0x300a531a
test al, al
je 0x300a5313
mov ecx, dword [ebp + 0xc]
push ecx
movzx eax, al
push edi
call dword [eax*4 + 0x30335e08]
add esp, 8
mov edx, dword [esp + 0x18]
mov dword [edi + 4], edx
movq mm0, qword [edi + 8]
mov ax, 0xff
movd mm1, eax
movq mm2, mm1
punpcklwd mm2, mm1
movq mm1, mm2
punpcklwd mm2, mm1
pshufw mm1, mm0, 0xff
movq mm3, mm1
mov cx, 0x100
movd mm1, ecx
movq mm4, mm1
punpcklwd mm4, mm1
movq mm1, mm4
punpcklwd mm4, mm1
movq mm1, qword [esp + 0x30]
psubw mm4, mm3
pmullw mm1, mm4
psrlw mm1, 8
paddw mm1, mm0
pand mm1, mm2
movq qword [esp + 0x30], mm1
sub ebx, 4
dec esi
test esi, esi
jg 0x300a5290
jmp 0x300a544e
test esi, esi
je 0x300a5456
mov edi, dword [ebx]
mov edx, dword [edi + 4]
cmp edx, dword [esp + 0x18]
je 0x300a53a9
mov al, byte [edi + 0x2e]
test al, al
je 0x300a53a2
mov ecx, dword [ebp + 0xc]
push ecx
movzx eax, al
push edi
call dword [eax*4 + 0x30335e08]
add esp, 8
mov edx, dword [esp + 0x18]
mov dword [edi + 4], edx
movq mm0, qword [edi + 8]
sub ebx, 4
dec esi
movq qword [esp + 0x30], mm0
je 0x300a544e
mov ax, 0xff
movd mm0, eax
movq mm1, mm0
punpcklwd mm1, mm0
movq mm0, mm1
punpcklwd mm1, mm0
movq qword [esp + 0x58], mm1
mov cx, 0x100
movd mm0, ecx
movq mm1, mm0
punpcklwd mm1, mm0
movq mm0, mm1
punpcklwd mm1, mm0
movq qword [esp + 0x50], mm1
mov dword [esp + 0x28], esi
mov esi, dword [ebx]
mov edi, dword [esp + 0x18]
cmp dword [esi + 4], edi
je 0x300a5417
mov al, byte [esi + 0x2e]
test al, al
je 0x300a5414
movzx edx, al
mov eax, dword [ebp + 0xc]
push eax
push esi
call dword [edx*4 + 0x30335e08]
add esp, 8
mov dword [esi + 4], edi
movq mm0, qword [esi + 8]
movq mm2, qword [esp + 0x50]
mov eax, dword [esp + 0x28]
pshufw mm1, mm0, 0xff
psubw mm2, mm1
movq mm1, qword [esp + 0x30]
pmullw mm1, mm2
psrlw mm1, 8
sub ebx, 4
paddw mm1, mm0
pand mm1, qword [esp + 0x58]
dec eax
movq qword [esp + 0x30], mm1
mov dword [esp + 0x28], eax
jne 0x300a53f0
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
movq mm0, qword [esp + 0x48]
mov cl, byte [edi + 0x11]
test cl, cl
paddw mm0, qword [esp + 0x30]
movq qword [esp + 0x48], mm0
je 0x300a5488
test eax, eax
jne 0x300a523c
mov eax, dword [ebp + 8]
movq mm0, qword [esp + 0x48]
movq qword [eax], mm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov cx, word [edi + 0xc]
movd mm1, ecx
movq mm2, mm1
punpcklwd mm2, mm1
movq mm1, mm2
punpcklwd mm2, mm1
pmullw mm0, mm2
movq qword [esp + 0x48], mm0
mov eax, dword [ebp + 8]
movq mm0, qword [esp + 0x48]
movq qword [eax], mm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov al, byte [edi + 0x11]
test al, al
mov eax, dword [edi + 0xc]
jne 0x300a5518
lea edx, [eax + eax*2]
shl edx, 5
mov esi, dword [edx + edi - 0x48]
cmp dword [esi + 4], ebx
je 0x300a54ef
mov al, byte [esi + 0x2e]
test al, al
je 0x300a54ec
push ecx
movzx eax, al
push esi
call dword [eax*4 + 0x30335e08]
add esp, 8
mov word [esi + 0xe], 0xff
mov dword [esi + 4], ebx
mov cx, word [edi + 0xc]
mov eax, dword [ebp + 8]
movd mm0, ecx
movq mm1, mm0
punpcklwd mm1, mm0
movq mm0, mm1
punpcklwd mm1, mm0
movq mm0, qword [esi + 8]
pmullw mm0, mm1
movq qword [eax], mm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp eax, 4
jne 0x300a5618
mov edx, dword [edi + 0x138]
cmp dword [edx + 4], ebx
mov dword [esp + 0x20], edx
je 0x300a554d
mov al, byte [edx + 0x2e]
test al, al
je 0x300a554a
push ecx
movzx eax, al
push edx
call dword [eax*4 + 0x30335e08]
mov edx, dword [esp + 0x28]
add esp, 8
mov dword [edx + 4], ebx
mov eax, dword [edi + 0xd8]
cmp dword [eax + 4], ebx
mov dword [esp + 0x24], eax
je 0x300a5580
mov cl, byte [eax + 0x2e]
test cl, cl
je 0x300a557d
mov edx, dword [ebp + 0xc]
push edx
movzx ecx, cl
push eax
call dword [ecx*4 + 0x30335e08]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esp, 8
mov dword [eax + 4], ebx
mov esi, dword [edi + 0x78]
cmp dword [esi + 4], ebx
je 0x300a55ac
mov cl, byte [esi + 0x2e]
test cl, cl
je 0x300a55a9
movzx eax, cl
mov ecx, dword [ebp + 0xc]
push ecx
push esi
call dword [eax*4 + 0x30335e08]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esp, 8
mov dword [esi + 4], ebx
mov edi, dword [edi + 0x18]
cmp dword [edi + 4], ebx
je 0x300a55d8
mov cl, byte [edi + 0x2e]
test cl, cl
je 0x300a55d5
mov eax, dword [ebp + 0xc]
push eax
movzx edx, cl
push edi
call dword [edx*4 + 0x30335e08]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esp, 8
mov dword [edi + 4], ebx
movq mm3, qword [eax + 8]
movq mm4, qword [edx + 8]
movq mm2, qword [esi + 8]
movq mm1, qword [edi + 8]
mov eax, dword [ebp + 8]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0xff0000
movq mm0, qword [esp + 0x48]
paddw mm4, mm3
paddw mm4, mm2
paddw mm4, mm1
por mm4, mm0
movq qword [eax], mm4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
test eax, eax
pxor mm0, mm0
movq qword [esp + 0x48], mm0
je 0x300a5677
lea ecx, [eax + eax*2]
shl ecx, 5
lea edi, [ecx + edi + 0x18]
mov dword [esp + 0x28], eax
mov esi, dword [edi - 0x60]
mov eax, dword [esi + 4]
sub edi, 0x60
cmp eax, ebx
je 0x300a565b
mov al, byte [esi + 0x2e]
test al, al
je 0x300a5658
movzx edx, al
mov eax, dword [ebp + 0xc]
push eax
push esi
call dword [edx*4 + 0x30335e08]
add esp, 8
mov dword [esi + 4], ebx
mov eax, dword [esp + 0x28]
movq mm1, qword [esp + 0x48]
movq mm0, qword [esi + 8]
dec eax
paddw mm1, mm0
movq qword [esp + 0x48], mm1
mov dword [esp + 0x28], eax
jne 0x300a5632
mov eax, dword [ebp + 8]
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0xff0000
movq mm0, qword [esp + 0x30]
pop edi
movq mm1, mm0
movq mm0, qword [esp + 0x44]
pop esi
por mm0, mm1
movq qword [eax], mm0
pop ebx
mov esp, ebp
pop ebp
ret 0x10