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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
sub esp, 0xcc
cmp dword [edx], 9
push ebx
push esi
push edi
je 0x56f2d5
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
xor ebx, ebx
cmp dword [eax], ebx
jne 0x56f2ca
mov ecx, dword [eax + 4]
cmp ecx, dword [edx + 4]
jb 0x56f2ca
mov esi, dword [eax + 8]
cmp esi, dword [edx + 8]
jb 0x56f2ca
mov dword [eax + 0x3c], 1
mov eax, edx
sub ecx, dword [eax + 4]
push ebx
shr ecx, 1
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 8]
lea edi, [esp + 0x94]
mov dword [esp + 0x2c], ecx
call fcn.004d3900
mov edx, dword [ebp + 8]
push ebx
push edx
lea ecx, [esp + 0x48]
call fcn.004d39b0
sub esi, dword [esp + 0x28]
push ebx
shr esi, 1
imul esi, dword [esp + 0x50]
add dword [esp + 0x4c], esi
mov esi, dword [ebp + 0xc]
lea edi, [esp + 0xa4]
call fcn.004d3a60
push ebx
lea edi, [esp + 0xc0]
call fcn.004d3b00
mov eax, 0xff
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov byte [esp + 0x78], bl
mov byte [esp + 0x79], bl
mov byte [esp + 0x7a], bl
mov byte [esp + 0x7b], bl
mov byte [esp + 0x7c], bl
mov byte [esp + 0x7d], bl
mov byte [esp + 0x7e], bl
mov byte [esp + 0x7f], bl
mov byte [esp + 0x80], bl
mov byte [esp + 0x81], bl
mov byte [esp + 0x82], bl
mov byte [esp + 0x83], bl
mov byte [esp + 0x84], bl
mov byte [esp + 0x85], bl
mov byte [esp + 0x86], bl
mov byte [esp + 0x87], bl
mov byte [esp + 0x88], bl
mov byte [esp + 0x89], bl
mov byte [esp + 0x8a], bl
mov byte [esp + 0x8b], bl
mov byte [esp + 0x8c], bl
mov byte [esp + 0x8d], bl
mov byte [esp + 0x8e], bl
mov byte [esp + 0x8f], bl
mov byte [esp + 0x60], bl
mov byte [esp + 0x61], bl
mov byte [esp + 0x62], bl
mov byte [esp + 0x63], bl
mov byte [esp + 0x64], bl
mov byte [esp + 0x65], bl
mov byte [esp + 0x66], bl
mov byte [esp + 0x67], bl
mov byte [esp + 0x68], bl
mov byte [esp + 0x69], bl
mov byte [esp + 0x6a], bl
mov byte [esp + 0x6b], bl
mov byte [esp + 0x6c], bl
mov byte [esp + 0x6d], bl
mov byte [esp + 0x6e], bl
mov byte [esp + 0x6f], bl
mov byte [esp + 0x70], bl
mov byte [esp + 0x71], bl
mov byte [esp + 0x72], bl
mov byte [esp + 0x73], bl
mov byte [esp + 0x74], bl
mov byte [esp + 0x75], bl
mov byte [esp + 0x76], bl
mov byte [esp + 0x77], bl
mov word [esp + 0xb0], ax
mov word [esp + 0xb2], ax
mov word [esp + 0xb4], ax
mov word [esp + 0xb6], ax
mov byte [esp + 0x50], al
mov byte [esp + 0x54], al
mov byte [esp + 0x5b], al
mov byte [esp + 0x5f], al
mov eax, esi
mov ecx, dword [eax + 8]
sub ecx, 2
mov byte [esp + 0x51], bl
mov byte [esp + 0x52], bl
mov byte [esp + 0x53], bl
mov byte [esp + 0x55], bl
mov byte [esp + 0x56], bl
mov byte [esp + 0x57], bl
mov byte [esp + 0x58], bl
mov byte [esp + 0x59], bl
mov byte [esp + 0x5a], bl
mov byte [esp + 0x5c], bl
mov byte [esp + 0x5d], bl
mov byte [esp + 0x5e], bl
mov dword [esp + 0xb8], 0x2d0039
mov dword [esp + 0xcc], 0xfff5ffe9
mov dword [esp + 0x28], ebx
js 0x56fb66
jmp 0x56f4e0
cmp dword [esp + 0x98], ebx
je 0x56fb66
mov edx, dword [esp + 0x90]
cmp dword [esp + 0x98], edx
jb 0x56fb66
mov eax, dword [esp + 0x94]
cmp dword [esp + 0x98], eax
ja 0x56fb66
cmp dword [esp + 0x48], ebx
je 0x56fb66
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x48], ecx
jb 0x56fb66
mov edx, dword [esp + 0x44]
cmp dword [esp + 0x48], edx
ja 0x56fb66
cmp dword [esp + 0xa8], ebx
je 0x56fb66
mov eax, dword [esp + 0xa0]
cmp dword [esp + 0xa8], eax
jb 0x56fb66
mov ecx, dword [esp + 0xa4]
cmp dword [esp + 0xa8], ecx
ja 0x56fb66
lea ecx, [esp + 0xbc]
call fcn.004d3a40
test al, al
je 0x56fb66
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
lea edx, [eax + ecx*4]
add eax, dword [esp + 0x4c]
mov dword [esp + 0x18], edx
cmp eax, dword [esp + 0x44]
mov dword [esp + 0x48], eax
ja 0x56f2ca
lea eax, [eax + ecx*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x10], eax
add eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x94]
mov dword [esp + 0x98], eax
ja 0x56f2ca
cmp eax, ebx
mov dword [esp + 0x20], eax
je 0x56f2ca
mov eax, dword [esp + 0xc4]
cmp eax, ebx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], eax
je 0x56f2ca
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
sub ecx, 8
mov dword [esp + 0x2c], ebx
js 0x56f958
mov ecx, ebx
push eax
push edi
push esi
pxor mm0, mm0
pcmpeqd mm6, mm6
punpcklbw mm6, mm0
mov esi, dword [esp + 0x30]
movd mm0, dword [esi]
movq mm1, mm0
pand mm1, mm6
psllq mm1, 0x20
psrlw mm0, 8
por mm1, mm0
pshufw mm0, mm1, 0x72
mov esi, dword [esp + 0x20]
movd mm2, dword [esi]
movq mm1, mm2
pand mm1, mm6
psllq mm1, 0x20
psrlw mm2, 8
por mm1, mm2
pshufw mm2, mm1, 0x72
mov eax, 0x80
movd mm5, eax
pshufw mm5, mm5, 0
psubw mm0, mm5
psubw mm2, mm5
mov eax, dword [esp + 0xd8]
movd mm5, eax
pshufw mm4, mm5, 0
pmullw mm4, mm0
pshufw mm1, mm5, 0x55
pmullw mm1, mm2
paddw mm1, mm4
mov eax, dword [esp + 0xc4]
movd mm5, eax
pshufw mm4, mm5, 0x55
pmullw mm0, mm4
pshufw mm4, mm5, 0
pmullw mm2, mm4
mov esi, dword [esp + 0x1c]
movq mm3, qword [esi]
movq mm4, mm3
pand mm3, mm6
psrlw mm4, 8
psllw mm3, 5
psllw mm4, 5
lea esi, [esp + 0x84]
movq mm5, mm3
paddw mm5, mm0
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm0
psraw mm6, 5
packuswb mm5, mm6
movq qword [esi], mm5
movq mm5, mm3
paddw mm5, mm1
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm1
psraw mm6, 5
packuswb mm5, mm6
add esi, 8
movq qword [esi], mm5
movq mm5, mm3
paddw mm5, mm2
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm2
psraw mm6, 5
packuswb mm5, mm6
add esi, 8
movq qword [esi], mm5
movq mm6, qword [esp + 0xbc]
mov esi, dword [esp + 0x2c]
movq mm3, qword [esi]
movq mm4, mm3
pand mm3, mm6
psrlw mm4, 8
psllw mm3, 5
psllw mm4, 5
lea esi, [esp + 0x6c]
movq mm5, mm3
paddw mm5, mm0
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm0
psraw mm6, 5
packuswb mm5, mm6
movq qword [esi], mm5
movq mm5, mm3
paddw mm5, mm1
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm1
psraw mm6, 5
packuswb mm5, mm6
add esi, 8
movq qword [esi], mm5
movq mm5, mm3
paddw mm5, mm2
psraw mm5, 5
movq mm6, mm4
paddw mm6, mm2
psraw mm6, 5
packuswb mm5, mm6
add esi, 8
movq qword [esi], mm5
lea esi, [esp + 0x84]
movq mm0, qword [esi]
add esi, 8
movq mm1, qword [esi]
add esi, 8
movq mm2, qword [esi]
movq mm3, qword [esp + 0x5c]
movq mm6, qword [esp + 0x64]
mov edi, dword [esp + 0x24]
movq mm4, mm0
pand mm4, mm3
pslld mm4, 8
movq mm5, mm1
pand mm5, mm3
por mm4, mm5
pslld mm4, 8
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
movq mm4, mm0
pand mm4, mm3
pslld mm4, 0x10
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
psrld mm4, 8
movq mm5, mm1
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
movq mm4, mm1
pand mm4, mm3
pslld mm4, 8
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
psrld mm4, 0x10
movq mm5, mm0
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
pand mm0, mm3
pand mm1, mm3
psrld mm1, 8
por mm0, mm1
pand mm2, mm3
psrld mm2, 0x10
por mm0, mm2
psrld mm0, 8
por mm0, mm6
movq qword [edi], mm0
lea esi, [esp + 0x6c]
movq mm0, qword [esi]
add esi, 8
movq mm1, qword [esi]
add esi, 8
movq mm2, qword [esi]
movq mm3, qword [esp + 0x5c]
mov edi, dword [esp + 0x28]
movq mm4, mm0
pand mm4, mm3
pslld mm4, 8
movq mm5, mm1
pand mm5, mm3
por mm4, mm5
pslld mm4, 8
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
movq mm4, mm0
pand mm4, mm3
pslld mm4, 0x10
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
psrld mm4, 8
movq mm5, mm1
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
movq mm4, mm1
pand mm4, mm3
pslld mm4, 8
movq mm5, mm2
pand mm5, mm3
por mm4, mm5
psrld mm4, 0x10
movq mm5, mm0
pand mm5, mm3
por mm4, mm5
por mm4, mm6
movq qword [edi], mm4
add edi, 8
pslld mm3, 8
pand mm0, mm3
pand mm1, mm3
psrld mm1, 8
por mm0, mm1
pand mm2, mm3
psrld mm2, 0x10
por mm0, mm2
psrld mm0, 8
por mm0, mm6
movq qword [edi], mm0
emms
pop esi
pop edi
pop eax
add dword [esp + 0x1c], 0x20
mov esi, 4
add dword [esp + 0x14], esi
add dword [esp + 0x24], esi
mov esi, dword [ebp + 0xc]
mov esi, dword [esi + 4]
mov eax, 8
add dword [esp + 0x10], eax
add dword [esp + 0x20], eax
add edx, 0x20
add ecx, eax
sub esi, eax
cmp ecx, esi
mov dword [esp + 0x18], edx
jle 0x56f611
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebp + 0xc]
cmp eax, dword [ecx + 4]
mov dword [esp + 0x18], 2
jge 0x56fb18
cmp dword [esp + 0x18], 2
jne 0x56f9d1
mov ecx, dword [esp + 0x14]
movzx ax, byte [ecx]
mov esi, dword [esp + 0x24]
add ecx, 1
mov dword [esp + 0x14], ecx
movzx cx, byte [esi]
add esi, 1
movzx ecx, cx
mov dword [esp + 0x24], esi
sub ecx, 0x80
mov esi, ecx
imul ecx, ecx, 0x17
imul esi, esi, 0x2d
movzx eax, ax
movzx esi, si
sub eax, 0x80
mov dword [esp + 0x3c], esi
mov esi, eax
imul esi, esi, 0xfffffff5
sub esi, ecx
imul eax, eax, 0x39
movzx ecx, si
movzx eax, ax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0x10]
movzx ax, byte [ecx]
movsx edi, word [esp + 0x3c]
movzx eax, ax
shl eax, 5
add ecx, 1
mov dword [esp + 0x10], ecx
movsx ecx, ax
lea eax, [edi + ecx]
sar eax, 5
movzx eax, ax
cmp ax, bx
mov byte [edx + 3], 0xff
jge 0x56fa04
xor eax, eax
jmp 0x56fa0f
cmp ax, 0xff
jle 0x56fa0f
mov eax, 0xff
mov byte [edx + 2], al
movsx eax, word [esp + 0x38]
mov dword [esp + 0xd4], eax
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
jge 0x56fa2f
xor eax, eax
jmp 0x56fa3a
cmp ax, 0xff
jle 0x56fa3a
mov eax, 0xff
mov byte [edx + 1], al
movsx eax, word [esp + 0x34]
mov dword [esp + 0xd0], eax
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
jge 0x56fa5a
xor eax, eax
jmp 0x56fa65
cmp ax, 0xff
jle 0x56fa65
mov eax, 0xff
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov byte [edx], al
movzx ax, byte [ecx]
movzx eax, ax
shl eax, 5
add ecx, 1
mov dword [esp + 0x20], ecx
movsx ecx, ax
lea eax, [ecx + edi]
sar eax, 5
movzx eax, ax
add edx, 4
cmp ax, bx
mov byte [esi + 3], 0xff
jge 0x56fa9c
xor eax, eax
jmp 0x56faa7
cmp ax, 0xff
jle 0x56faa7
mov eax, 0xff
mov byte [esi + 2], al
mov eax, dword [esp + 0xd4]
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
jge 0x56fac2
xor eax, eax
jmp 0x56facd
cmp ax, 0xff
jle 0x56facd
mov eax, 0xff
mov byte [esi + 1], al
mov eax, dword [esp + 0xd0]
add ecx, eax
sar ecx, 5
movzx eax, cx
cmp ax, bx
jge 0x56fae8
xor eax, eax
jmp 0x56faf3
cmp ax, 0xff
jle 0x56faf3
mov eax, 0xff
mov ecx, dword [ebp + 0xc]
add dword [esp + 0x18], 1
mov byte [esi], al
mov eax, dword [esp + 0x2c]
add eax, 1
add esi, 4
cmp eax, dword [ecx + 4]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], eax
jl 0x56f970
mov edx, dword [esp + 0x4c]
add dword [esp + 0x48], edx
mov ecx, dword [esp + 0xac]
mov eax, dword [esp + 0x9c]
add dword [esp + 0xa8], ecx
mov edx, dword [esp + 0xc8]
add dword [esp + 0x98], eax
add dword [esp + 0xc4], edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x28]
mov edx, dword [ecx + 8]
add eax, 2
sub edx, 2
cmp eax, edx
mov dword [esp + 0x28], eax
jle 0x56f4e0
mov eax, dword [esp + 0x28]
mov ecx, dword [ebp + 0xc]
cmp eax, dword [ecx + 8]
jge 0x56fd20
mov eax, dword [esp + 0x48]
cmp eax, ebx
je 0x56f2ca
cmp eax, dword [esp + 0x40]
jb 0x56f2ca
cmp eax, dword [esp + 0x44]
ja 0x56f2ca
mov edx, dword [esp + 0x30]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x98]
cmp eax, ebx
je 0x56f2ca
cmp eax, dword [esp + 0x90]
jb 0x56f2ca
cmp eax, dword [esp + 0x94]
ja 0x56f2ca
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa8]
cmp eax, ebx
je 0x56f2ca
cmp eax, dword [esp + 0xa0]
jb 0x56f2ca
cmp eax, dword [esp + 0xa4]
ja 0x56f2ca
lea ecx, [esp + 0xbc]
mov dword [esp + 0x14], eax
call fcn.004d3a40
test al, al
je 0x56f2ca
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], ebx
mov edi, dword [esp + 0xc4]
mov esi, 2
mov dword [esp + 0x30], ebx
jle 0x56fd20
cmp esi, 2
jne 0x56fc7c
mov ecx, dword [esp + 0x14]
movzx ax, byte [ecx]
add ecx, 1
mov dword [esp + 0x14], ecx
movzx cx, byte [edi]
movzx ecx, cx
sub ecx, 0x80
mov esi, ecx
imul ecx, ecx, 0x17
imul esi, esi, 0x2d
movzx esi, si
movzx eax, ax
sub eax, 0x80
mov dword [esp + 0x3c], esi
mov esi, eax
imul eax, eax, 0x39
imul esi, esi, 0xfffffff5
sub esi, ecx
movzx ecx, si
movzx eax, ax
add edi, 1
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], eax
xor esi, esi
mov ecx, dword [esp + 0x10]
movzx ax, byte [ecx]
movzx eax, ax
shl eax, 5
add ecx, 1
mov dword [esp + 0x10], ecx
movsx ecx, ax
movsx eax, word [esp + 0x3c]
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
mov byte [edx + 3], 0xff
jge 0x56fcae
xor eax, eax
jmp 0x56fcb9
cmp ax, 0xff
jle 0x56fcb9
mov eax, 0xff
mov byte [edx + 2], al
movsx eax, word [esp + 0x38]
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
jge 0x56fcd2
xor eax, eax
jmp 0x56fcdd
cmp ax, 0xff
jle 0x56fcdd
mov eax, 0xff
mov byte [edx + 1], al
movsx eax, word [esp + 0x34]
add eax, ecx
sar eax, 5
movzx eax, ax
cmp ax, bx
jge 0x56fcf6
xor eax, eax
jmp 0x56fd01
cmp ax, 0xff
jle 0x56fd01
mov eax, 0xff
mov ecx, dword [ebp + 0xc]
mov byte [edx], al
mov eax, dword [esp + 0x30]
add eax, 1
add edx, 4
add esi, 1
cmp eax, dword [ecx + 4]
mov dword [esp + 0x30], eax
jl 0x56fc27
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 8