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

Disassembly:
sub esp, 0x60
push ebx
push ebp
mov ebp, ecx
mov dword [esp + 0x4c], edx
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x98]
add ecx, 8
push esi
mov eax, dword [ebp + 0x110c]
lea ebx, [ebp + 0xf7c]
sub eax, dword [esp + 0x8c]
sar edx, 6
push edi
mov dword [esp + 0x44], ebp
lea eax, [eax*4 + 0x504]
mov dword [esp + 0x14], ebx
add eax, ebp
mov dword [esp + 0x28], 0
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0x1108]
sub eax, dword [esp + 0x90]
lea eax, [ecx + eax*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xac]
test eax, eax
jle 0x56ad6c
mov eax, dword [esp + 0xb4]
sar eax, 1
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xb0]
mov ecx, eax
sar ecx, 1
mov dword [esp + 0x58], ecx
lea ecx, [eax*4 + 0x10bc]
add ecx, ebp
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x8c]
sub ecx, 2
lea eax, [ecx + eax*2]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x9c]
mov ecx, eax
cwde
mov dword [esp + 0x64], eax
movsx eax, dx
sar edx, 0xf
sar ecx, 0x10
inc edx
sar edx, 1
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0xa0], edx
imul eax, dword [ebp + 0x1110], 0xbb38435
mov esi, dword [esp + 0x84]
add eax, 0x3619636b
mov dword [ebp + 0x1110], eax
movsx eax, word [esi + 0x12]
mov dword [esp + 0x24], eax
movsx eax, word [esi + 0xe]
mov dword [esp + 0x34], eax
movsx eax, word [esi + 0xa]
mov dword [esp + 0x30], eax
movsx eax, word [esi + 8]
mov dword [esp + 0x2c], eax
movsx eax, word [esi + 6]
mov dword [esp + 0x1c], eax
movsx eax, word [esi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
mov edx, dword [ebx - 0x18]
movsx ecx, word [esi + 0xc]
mov ebp, dword [ebx - 0x20]
mov eax, dword [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
sar eax, 0x10
mov dword [esp + 0x40], eax
movsx edi, word [esi + 0x10]
movzx eax, dx
imul eax, ecx
mov ebx, dword [ebx - 4]
movsx esi, word [esi + 2]
mov dword [esp + 0x4c], edi
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, bp
imul eax, edi
mov edi, dword [esp + 0x14]
imul edx, ecx
sar ebp, 0x10
imul ebp, dword [esp + 0x4c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 0x24]
movzx eax, ax
imul eax, dword [esp + 0x24]
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bx
imul eax, esi
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 8]
movzx eax, ax
imul eax, dword [esp + 0x20]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x1c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 0x14]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi - 0x1c]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
add ecx, edx
add ecx, ebp
mov eax, dword [edi - 0x24]
sar eax, 0x10
imul eax, dword [esp + 0x24]
sar ebx, 0x10
imul ebx, esi
add ecx, eax
mov eax, dword [esp + 0x84]
movsx edx, word [eax]
mov eax, edx
imul eax, dword [esp + 0x3c]
sar eax, 0x10
add ecx, eax
mov eax, dword [edi - 8]
sar eax, 0x10
add ecx, ebx
imul eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x40]
imul ebx, edx
add ecx, eax
mov eax, dword [edi - 0xc]
sar eax, 0x10
imul eax, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [edi - 0x10]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add ecx, eax
mov eax, dword [edi - 0x14]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [edi - 0x1c]
sar eax, 0x10
imul eax, dword [esp + 0x34]
add eax, dword [esp + 0x50]
add eax, ecx
add ebx, eax
cmp dword [esp + 0xb4], 0x10
mov dword [esp + 0x20], ebx
jne 0x56a8d9
mov ecx, dword [esp + 0x84]
mov ebp, dword [edi - 0x30]
mov edi, dword [edi - 0x2c]
movsx eax, word [ecx + 0x1e]
mov dword [esp + 0x2c], eax
movsx eax, word [ecx + 0x1c]
mov dword [esp + 0x30], eax
movsx eax, word [ecx + 0x1a]
movsx ebx, word [ecx + 0x18]
movsx esi, word [ecx + 0x16]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
movsx ecx, word [ecx + 0x14]
mov dword [esp + 0x4c], ebx
mov edx, dword [eax - 0x28]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x14]
sar ebp, 0x10
imul ebp, dword [esp + 0x4c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x34]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x38]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x3c]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
add ecx, edx
mov edx, ebx
add ecx, edi
add ecx, ebp
mov eax, dword [edx - 0x34]
sar eax, 0x10
imul eax, dword [esp + 0x34]
add ecx, eax
mov eax, dword [edx - 0x38]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [edx - 0x3c]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add eax, dword [esp + 0x20]
add eax, ecx
mov dword [esp + 0x20], eax
cmp dword [esp + 0x54], 2
jne 0x56a9b6
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x18]
movsx eax, word [edx + 8]
movsx ebx, word [edx + 4]
movsx esi, word [edx + 2]
mov ebp, dword [ecx - 8]
mov edi, dword [ecx - 4]
mov dword [esp + 0x30], eax
movsx eax, word [edx + 6]
mov edx, dword [ecx]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x4c], ebx
movsx ecx, word [eax]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x18]
sar ebp, 0x10
imul ebp, dword [esp + 0x4c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add eax, edx
mov edx, ebx
add eax, edi
add eax, ebp
mov ecx, dword [edx - 0xc]
mov ebx, dword [edx - 0x10]
sar ebx, 0x10
imul ebx, dword [esp + 0x30]
sar ecx, 0x10
imul ecx, dword [esp + 0x34]
add ebx, 2
add eax, ecx
add ebx, eax
add edx, 4
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], edx
jmp 0x56a9be
mov dword [esp + 0x24], 0
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x4c], 2
mov eax, dword [ebp + 0x10c0]
mov dword [ebp + 0x10c0], ecx
movsx esi, word [edx]
mov ecx, esi
imul esi, dword [esp + 0x40]
imul ecx, dword [esp + 0x3c]
sar ecx, 0x10
add ecx, dword [esp + 0x58]
add esi, ecx
cmp dword [esp + 0xb0], 2
mov dword [esp + 0x40], esi
jle 0x56aa71
lea ebx, [ebp + 0x10c8]
mov ebp, dword [esp + 0x4c]
mov edi, dword [ebx - 4]
lea ebx, [ebx + 8]
mov dword [ebx - 0xc], eax
movsx ecx, word [edx + ebp*2 - 2]
movzx edx, ax
imul edx, ecx
sar eax, 0x10
imul eax, ecx
mov ecx, dword [esp + 0x8c]
sar edx, 0x10
add esi, eax
mov eax, dword [ebx - 8]
add esi, edx
mov dword [ebx - 8], edi
movsx ecx, word [ecx + ebp*2]
add ebp, 2
movzx edx, di
sar edi, 0x10
imul edx, ecx
imul edi, ecx
sar edx, 0x10
add esi, edi
add esi, edx
mov edx, dword [esp + 0x8c]
cmp ebp, dword [esp + 0xb0]
jl 0x56aa11
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x40], esi
mov ecx, dword [esp + 0x5c]
movzx edx, ax
mov ebx, dword [esp + 0x20]
shl ebx, 2
mov dword [ecx], eax
mov ecx, dword [esp + 0x60]
mov edi, dword [ebp + 0x1100]
sar eax, 0xf
and eax, 0xfffffffe
movzx esi, di
movsx ecx, word [ecx]
imul eax, ecx
imul edx, ecx
movsx ecx, word [esp + 0x98]
sar edi, 0x10
sar edx, 0xf
and edx, 0xfffffffe
add edx, eax
mov eax, ecx
imul eax, esi
imul esi, dword [esp + 0x68]
sar eax, 0x10
add edx, eax
sar esi, 0x10
mov eax, edi
imul edi, dword [esp + 0x68]
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x40]
lea edx, [edx + eax*2]
mov eax, dword [ebp + 0x110c]
mov dword [esp + 0x4c], edx
mov eax, dword [ebp + eax*4 + 0x4fc]
movzx ecx, ax
imul ecx, dword [esp + 0x64]
sar eax, 0x10
imul eax, dword [esp + 0x64]
sar ecx, 0x10
add ecx, eax
add ecx, esi
add ecx, edi
sub ebx, ecx
mov dword [esp + 0x40], ecx
sub ebx, edx
cmp dword [esp + 0x90], 0
jle 0x56ab7f
mov eax, dword [esp + 0x48]
add ebx, ebx
mov ecx, dword [esp + 0x94]
movsx esi, cx
mov edi, dword [eax - 8]
add edi, dword [eax]
mov edx, dword [eax - 4]
add eax, 4
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x94]
sar eax, 0x10
movzx ecx, dx
imul ecx, eax
mov eax, dword [esp + 0x94]
sar eax, 0xf
and eax, 0xfffffffe
sar edx, 0x10
imul eax, edx
sar ecx, 0xf
and ecx, 0xfffffffe
sub ebx, ecx
sub ebx, eax
movzx eax, di
imul eax, esi
sar edi, 0xf
and edi, 0xfffffffe
imul edi, esi
sar eax, 0xf
and eax, 0xfffffffe
sub ebx, eax
sub ebx, edi
add ebx, dword [esp + 0x24]
sar ebx, 2
jmp 0x56ab81
sar ebx, 1
mov ecx, dword [esp + 0x74]
inc ebx
mov eax, dword [esp + 0x28]
sar ebx, 1
mov eax, dword [ecx + eax*4]
mov ecx, eax
sub ecx, ebx
sub ebx, eax
cmp dword [ebp + 0x1110], 0
cmovge ebx, ecx
cmp ebx, 0x7800
jle 0x56abae
mov ebx, 0x7800
jmp 0x56abbc
cmp ebx, 0xffff8400
mov eax, 0xffff8400
cmovl ebx, eax
mov ecx, dword [esp + 0xa8]
mov eax, ebx
sub eax, ecx
sar eax, 0xa
test eax, eax
jle 0x56abe8
shl eax, 0xa
lea edi, [ecx - 0x50]
add edi, eax
movzx eax, di
mov dword [esp + 0x1c], eax
lea esi, [edi + 0x400]
movzx eax, si
jmp 0x56ac3b
jne 0x56abfe
movzx eax, cx
lea esi, [ecx + 0x3b0]
mov dword [esp + 0x1c], eax
mov edi, ecx
movzx eax, si
jmp 0x56ac3b
cmp eax, 0xffffffff
jne 0x56ac1b
lea edi, [ecx - 0x3b0]
mov esi, ecx
mov eax, edi
neg eax
movzx eax, ax
mov dword [esp + 0x1c], eax
movzx eax, cx
jmp 0x56ac3b
shl eax, 0xa
lea edi, [ecx + 0x50]
add edi, eax
mov eax, edi
neg eax
movzx eax, ax
mov dword [esp + 0x1c], eax
lea esi, [edi + 0x400]
mov eax, esi
neg eax
movzx eax, ax
mov dword [esp + 0x10], eax
movzx ecx, bx
movsx ebx, word [esp + 0xa4]
mov eax, ecx
sub eax, edi
sub ecx, esi
movsx edx, ax
movsx eax, cx
mov ecx, dword [esp + 0x10]
imul eax, eax
movsx ecx, cx
imul ecx, ebx
imul edx, edx
add ecx, eax
mov eax, dword [esp + 0x1c]
cwde
imul eax, ebx
add eax, edx
mov edx, dword [esp + 0x20]
cmp ecx, eax
mov ecx, dword [esp + 0x78]
cmovge esi, edi
mov edi, dword [esp + 0x28]
mov eax, esi
shl esi, 4
sar eax, 9
inc eax
sar eax, 1
mov byte [edi + ecx], al
mov eax, esi
mov ecx, dword [esp + 0x24]
neg eax
cmp dword [ebp + 0x1110], 0
cmovge eax, esi
shl edx, 4
lea esi, [eax + ecx*2]
add edx, esi
movzx ecx, dx
mov eax, edx
imul ecx, dword [esp + 0x6c]
sar eax, 0x10
imul eax, dword [esp + 0x6c]
sar ecx, 0x10
add ecx, eax
mov eax, dword [esp + 0xa0]
imul eax, edx
add ecx, eax
sar ecx, 7
inc ecx
sar ecx, 1
cmp ecx, 0x7fff
jle 0x56ace3
mov ecx, 0x7fff
jmp 0x56acf1
cmp ecx, 0xffff8000
mov eax, 0xffff8000
cmovl ecx, eax
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x14]
add ebx, 4
mov dword [esp + 0x14], ebx
mov word [eax + edi*2], cx
lea ecx, [esi + esi]
mov eax, dword [esp + 0x4c]
mov dword [ebx], edx
shl eax, 2
sub edx, eax
mov eax, dword [esp + 0x40]
shl eax, 2
mov dword [ebp + 0x1100], edx
sub edx, eax
mov eax, dword [ebp + 0x110c]
mov dword [ebp + eax*4 + 0x500], edx
mov eax, dword [ebp + 0x1108]
mov edx, dword [esp + 0x80]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x78]
inc dword [ebp + 0x110c]
inc dword [ebp + 0x1108]
movsx eax, byte [edi + eax]
inc edi
add dword [ebp + 0x1110], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x28], edi
cmp edi, eax
jl 0x56a634
lea esi, [eax*4 + 0xf00]
mov ecx, 0x20
add esi, ebp
lea edi, [ebp + 0xf00]
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret