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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x64
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
xor ecx, ecx
cmp dword [ebp + 0x1c], ecx
push esi
push edi
mov dword [esp + 0x4c], ebx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
je 0x5a848e
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 8]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 4]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x58], ecx
push eax
lea ecx, [esp + 0x54]
mov dword [esp + 0x60], edx
push ecx
mov edx, ecx
push edx
call dword [sym.imp.USER32.dll_IntersectRect]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebx + 0x84]
mov edx, dword [ebp + 0x18]
sar eax, 3
lea esi, [ecx + eax + 4]
mov ecx, dword [ebx + 0x78]
mov eax, dword [ebx + 0x88]
mov dword [esp + 0x1c], ecx
xor ecx, ecx
sar edx, 3
lea edi, [eax + edx + 4]
mov eax, dword [ebx + 0x74]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x50]
sar esi, 3
sar edi, 3
cmp esi, ecx
mov dword [esp + 0x18], eax
jge 0x5a803e
mov edx, ecx
sub edx, esi
sub esi, ecx
add eax, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], eax
mov esi, ecx
mov ecx, dword [esp + 0x54]
cmp edi, ecx
jge 0x5a8056
mov edx, ecx
sub edx, edi
sub edi, ecx
add dword [esp + 0x1c], edi
mov dword [esp + 0x34], edx
mov edi, ecx
mov ecx, dword [esp + 0x58]
lea edx, [eax + esi]
cmp edx, ecx
jle 0x5a8069
sub ecx, esi
mov dword [esp + 0x18], ecx
mov eax, ecx
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + edi]
mov ecx, dword [esp + 0x5c]
cmp edx, ecx
jle 0x5a807e
sub ecx, edi
mov dword [esp + 0x1c], ecx
test eax, eax
jle 0x5a848b
mov ecx, dword [esp + 0x1c]
test ecx, ecx
jle 0x5a848b
add ecx, edi
push ecx
add eax, esi
push eax
mov eax, dword [ebp + 8]
push edi
push esi
push eax
call dword [sym.imp.USER32.dll_SetRect]
xor eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
lea eax, [esp + 0x60]
push eax
mov eax, dword [ebp + 8]
push eax
push eax
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], edx
call dword [sym.imp.USER32.dll_IntersectRect]
mov ecx, dword [ebx + 0x74]
imul ecx, dword [esp + 0x34]
add ecx, dword [esp + 0x28]
mov edx, dword [ebx + 0x70]
mov eax, dword [ebp + 0xc]
lea ebx, [edx + ecx*4]
mov ecx, dword [eax + 0x10]
add ebx, dword [ebp + 0x20]
imul ecx, edi
mov edi, dword [ebp + 0x1c]
mov edx, dword [edi]
lea ecx, [ecx + esi*4]
add ecx, dword [eax + 0x18]
mov eax, dword [0x71e2e4]
shr eax, 3
and al, 1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], edx
mov byte [esp + 0x17], al
jmp 0x5a811b
mov al, byte [esp + 0x17]
mov edi, dword [ebp + 0x1c]
sub dword [esp + 0x1c], 1
cmp dword [edi + 4], 0xffffffff
lea esi, [edi + 4]
jne 0x5a8299
test al, al
je 0x5a81d0
cmp dword [esp + 0x18], 0
jle 0x5a8468
mov eax, edx
and eax, 0xffffff
movd xmm1, eax
mov edi, edx
shr edi, 0x18
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x18]
pxor xmm2, xmm2
mov dword [esp + 0x24], edi
punpcklbw xmm1, xmm2
mov esi, ecx
mov dword [esp + 0x34], eax
jmp 0x5a8174
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + esi]
imul eax, edi
mov edi, dword [esi]
shr eax, 6
movd xmm0, edi
and eax, 0xff
mov edi, 0xff
sub edi, eax
shl eax, 0x10
punpcklbw xmm0, xmm2
or edi, eax
punpcklwd xmm0, xmm1
movd xmm3, edi
pshufd xmm3, xmm3, 0
pmaddwd xmm0, xmm3
psrld xmm0, 8
packssdw xmm0, xmm0
packuswb xmm0, xmm0
movd eax, xmm0
mov dword [esi], eax
add esi, 4
sub dword [esp + 0x34], 1
jne 0x5a8170
jmp 0x5a8468
cmp dword [esp + 0x18], 0
jle 0x5a8468
mov esi, edx
mov edi, edx
and edx, 0xff00ff
shr esi, 8
shr edi, 0x18
and esi, 0xff
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x18]
sub ebx, ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x3c], edx
jmp 0x5a8219
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
movzx eax, byte [ecx + ebx]
mov ecx, dword [ecx]
imul eax, edi
mov ebx, dword [esp + 0x44]
mov edi, ecx
and edi, 0xff00ff
shr eax, 6
and eax, 0xff
imul ebx, eax
imul esi, eax
mov edx, 0xff
sub edx, eax
imul edi, edx
add edi, ebx
mov ebx, ecx
shr ebx, 8
and ebx, 0xffff00ff
imul ebx, edx
shr ecx, 8
and ecx, 0xff00ff
imul ecx, edx
add ebx, esi
mov esi, dword [esp + 0x40]
mov edx, esi
imul edx, eax
shr edi, 8
xor edi, ebx
add ecx, edx
and edi, 0xff00ff
xor edi, ecx
mov ecx, dword [esp + 0x38]
mov dword [ecx], edi
add ecx, 4
sub dword [esp + 0x3c], 1
mov dword [esp + 0x38], ecx
jne 0x5a8211
mov edx, dword [esp + 0x30]
jmp 0x5a8460
test al, al
mov dword [esp + 0x3c], edi
je 0x5a8376
cmp dword [esp + 0x18], 0
jle 0x5a8468
mov eax, dword [esp + 0x28]
sub ebx, ecx
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x24], esi
pxor xmm1, xmm1
mov dword [esp + 0x3c], eax
mov esi, ecx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x24]
cmp eax, dword [ebx]
jb 0x5a82f6
jmp 0x5a82e0
add edi, 8
cmp eax, dword [edi + 4]
lea edx, [edi + 4]
mov dword [esp + 0x24], edx
jae 0x5a82e0
mov edx, dword [edi - 8]
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + esi]
mov ebx, edx
shr ebx, 0x18
imul eax, ebx
mov ebx, dword [esi]
movd xmm0, ebx
shr eax, 6
and eax, 0xff
mov ebx, edx
and ebx, 0xffffff
movd xmm2, ebx
mov ebx, 0xff
sub ebx, eax
shl eax, 0x10
punpcklbw xmm0, xmm1
or ebx, eax
punpcklbw xmm2, xmm1
punpcklwd xmm0, xmm2
movd xmm2, ebx
pshufd xmm2, xmm2, 0
pmaddwd xmm0, xmm2
psrld xmm0, 8
packssdw xmm0, xmm0
packuswb xmm0, xmm0
movd eax, xmm0
mov dword [esi], eax
mov eax, dword [esp + 0x3c]
add eax, 1
add esi, 4
sub dword [esp + 0x38], 1
mov dword [esp + 0x3c], eax
jne 0x5a82d0
jmp 0x5a8464
cmp dword [esp + 0x18], 0
jle 0x5a8468
mov eax, dword [esp + 0x28]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x18]
sub ebx, ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], esi
jmp 0x5a83a9
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
cmp eax, dword [esi]
jb 0x5a83cb
add edi, 8
cmp eax, dword [edi + 4]
lea edx, [edi + 4]
mov dword [esp + 0x24], edx
jae 0x5a83b1
mov edx, dword [edi - 8]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x30], edx
movzx eax, byte [ebx + ecx]
mov ecx, dword [ecx]
mov esi, edx
shr esi, 0x18
imul eax, esi
mov edi, ecx
shr edi, 8
shr eax, 6
and eax, 0xff
and edi, 0xffff00ff
mov esi, 0xff
sub esi, eax
imul edi, esi
movzx ebx, dh
imul ebx, eax
add edi, ebx
mov ebx, ecx
mov dword [esp + 0x48], esi
and ebx, 0xff00ff
imul ebx, esi
mov esi, edx
and esi, 0xff00ff
imul esi, eax
shr ecx, 8
add ebx, esi
and ecx, 0xff00ff
imul ecx, dword [esp + 0x48]
movzx esi, dh
imul esi, eax
mov eax, dword [esp + 0x38]
shr ebx, 8
xor edi, ebx
add ecx, esi
and edi, 0xff00ff
xor edi, ecx
mov ecx, dword [esp + 0x40]
mov dword [ecx], edi
add eax, 1
add ecx, 4
sub dword [esp + 0x44], 1
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], ecx
jne 0x5a83a1
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0x74]
lea ebx, [ebx + eax*4]
mov eax, dword [ebp + 0xc]
add ecx, dword [eax + 0x10]
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ecx
jne 0x5a8114
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c