Function at 0x592750
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 0x592c4e
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 0x5927fe
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 0x592816
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 0x592829
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 0x59283e
sub ecx, edi
mov dword [esp + 0x1c], ecx
test eax, eax
jle 0x592c4b
mov ecx, dword [esp + 0x1c]
test ecx, ecx
jle 0x592c4b
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 [0x6f951c]
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 0x5928db
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 0x592a59
test al, al
je 0x592990
cmp dword [esp + 0x18], 0
jle 0x592c28
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 0x592934
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 0x592930
jmp 0x592c28
cmp dword [esp + 0x18], 0
jle 0x592c28
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 0x5929d9
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 0x5929d1
mov edx, dword [esp + 0x30]
jmp 0x592c20
test al, al
mov dword [esp + 0x3c], edi
je 0x592b36
cmp dword [esp + 0x18], 0
jle 0x592c28
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 0x592ab6
jmp 0x592aa0
add edi, 8
cmp eax, dword [edi + 4]
lea edx, [edi + 4]
mov dword [esp + 0x24], edx
jae 0x592aa0
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 0x592a90
jmp 0x592c24
cmp dword [esp + 0x18], 0
jle 0x592c28
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 0x592b69
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
cmp eax, dword [esi]
jb 0x592b8b
add edi, 8
cmp eax, dword [edi + 4]
lea edx, [edi + 4]
mov dword [esp + 0x24], edx
jae 0x592b71
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 0x592b61
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 0x5928d4
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c