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

Disassembly:
sub esp, 0x5c
push ebx
mov ebx, dword [esp + 0x68]
push ebp
push esi
mov dx, word [ebx + 2]
push edi
mov edi, dword [esp + 0x70]
mov dword [esp + 0x10], ecx
mov ax, word [edi + 2]
cmp ax, dx
mov ebp, eax
jg 0x56f6b4
mov ebp, edx
cmp ax, dx
mov esi, eax
jl 0x56f6bd
mov esi, edx
cmp ax, dx
jge 0x56f6c4
mov edx, eax
movsx eax, word [edi]
movsx edx, dx
lea ecx, [eax - 5]
sub edx, 3
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], edx
movsx ecx, word [ebx]
sub ecx, eax
movsx edx, si
movsx eax, bp
add ecx, 9
sub eax, edx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x78]
lea edx, [esp + 0x5c]
add eax, 0xb
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov dword [esp + 0x70], eax
call fcn.005725b0
test al, al
jne 0x56f714
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0xc
movsx esi, word [edi + 2]
movsx eax, word [ebx + 2]
sub eax, esi
mov dword [esp + 0x30], eax
cdq
mov ecx, eax
movsx eax, word [ebx]
xor ecx, edx
sub ecx, edx
movsx edx, word [edi]
sub eax, edx
mov dword [esp + 0x70], ecx
lea edx, [eax - 5]
cmp ecx, edx
jle 0x56f748
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x5c
ret 0xc
mov ecx, dword [esp + 0x68]
inc eax
cdq
sub eax, edx
mov edx, ecx
mov ebp, eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x4c], eax
lea eax, [esi + 1]
sub edx, esi
mov esi, dword [esp + 0x60]
sar ebp, 1
lea edx, [edx + esi + 1]
add ebp, 3
add edx, eax
mov dword [esp + 0x28], ebp
cmp eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], edx
jge 0x56f80c
mov eax, dword [esp + 0x5c]
lea edx, [eax + ebp + 2]
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x1c]
cmp esi, eax
jge 0x56f7fb
mov ax, word [esp + 0x18]
lea ecx, [esp + 0x14]
mov word [esp + 0x14], si
mov word [esp + 0x16], ax
call fcn.0058a6c0
test al, al
je 0x56f7ee
mov edx, dword [esp + 0x78]
lea ecx, [esp + 0x14]
call fcn.0056b610
lea ecx, [esp + 0x14]
push ecx
mov ecx, 0x81a800
call fcn.005453b0
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x24], eax
call fcn.00572980
mov dl, byte [eax + 0x10]
mov eax, dword [esp + 0x24]
mov byte [eax + 0x11b], dl
mov eax, dword [esp + 0x1c]
inc esi
cmp esi, eax
jl 0x56f79c
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
inc eax
cmp eax, edx
mov dword [esp + 0x18], eax
jl 0x56f790
movsx edx, word [ebx + 2]
movsx esi, word [ebx]
lea eax, [edx + 1]
sub ecx, edx
mov edx, dword [esp + 0x60]
sub esi, ebp
add esi, 3
mov dword [esp + 0x18], eax
lea ecx, [ecx + edx + 1]
mov dword [esp + 0x58], ecx
add ecx, eax
cmp eax, ecx
mov dword [esp + 0x24], ecx
jge 0x56f8b3
lea eax, [esi + ebp + 2]
cmp esi, eax
mov ebx, esi
jge 0x56f89e
mov dx, word [esp + 0x18]
lea ecx, [esp + 0x14]
mov word [esp + 0x14], bx
mov word [esp + 0x16], dx
call fcn.0058a6c0
test al, al
je 0x56f891
mov edx, dword [esp + 0x78]
lea ecx, [esp + 0x14]
call fcn.0056b610
lea eax, [esp + 0x14]
mov ecx, 0x81a800
push eax
call fcn.005453b0
mov ecx, dword [esp + 0x78]
mov ebp, eax
call fcn.00572980
mov cl, byte [eax + 0x10]
mov byte [ebp + 0x11b], cl
mov ebp, dword [esp + 0x28]
inc ebx
lea eax, [esi + ebp + 2]
cmp ebx, eax
jl 0x56f841
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
inc edx
cmp edx, ecx
mov dword [esp + 0x18], edx
jl 0x56f83b
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
lea ecx, [edx + 2]
mov dword [esp + 0x18], ecx
lea esi, [eax + 4]
movsx eax, word [edi + 2]
sub eax, edx
mov dword [esp + 0x4c], esi
dec eax
add eax, ecx
cmp ecx, eax
mov dword [esp + 0x28], eax
jge 0x56f948
lea ecx, [esi + ebp - 2]
cmp esi, ecx
jge 0x56f93b
mov cx, word [esp + 0x18]
mov word [esp + 0x14], si
mov word [esp + 0x16], cx
lea ecx, [esp + 0x14]
call fcn.0058a6c0
test al, al
je 0x56f926
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x14]
mov edx, dword [edx + 8]
call fcn.0056b610
lea eax, [esp + 0x14]
mov ecx, 0x81a800
push eax
call fcn.005453b0
mov ecx, dword [esp + 0x10]
mov dl, byte [ecx + 0x10]
mov byte [eax + 0x11b], dl
mov eax, dword [esp + 0x4c]
inc esi
lea eax, [eax + ebp - 2]
cmp esi, eax
jl 0x56f8de
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
inc ecx
cmp ecx, eax
mov dword [esp + 0x18], ecx
jl 0x56f8d6
movsx esi, word [ebx]
movsx eax, word [ebx + 2]
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x60]
sub esi, ebp
sub eax, edx
add esi, 2
add ecx, 2
dec eax
mov dword [esp + 0x18], ecx
add eax, ecx
cmp ecx, eax
mov dword [esp + 0x24], eax
jge 0x56f9e0
lea ebp, [esi + ebp - 1]
mov dword [esp + 0x28], ebp
cmp esi, ebp
mov ebx, esi
jge 0x56f9cf
mov dx, word [esp + 0x18]
lea ecx, [esp + 0x14]
mov word [esp + 0x14], bx
mov word [esp + 0x16], dx
call fcn.0058a6c0
test al, al
je 0x56f9c6
mov ebp, dword [esp + 0x10]
lea ecx, [esp + 0x14]
mov edx, dword [ebp + 8]
call fcn.0056b610
lea eax, [esp + 0x14]
mov ecx, 0x81a800
push eax
call fcn.005453b0
mov cl, byte [ebp + 0x10]
mov ebp, dword [esp + 0x28]
mov byte [eax + 0x11b], cl
inc ebx
cmp ebx, ebp
jl 0x56f97e
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
inc ecx
cmp ecx, eax
mov dword [esp + 0x18], ecx
jl 0x56f978
mov ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x78]
mov ecx, dword [0xa55c50]
mov edx, dword [ebp + 0x10]
push edx
push esi
mov edx, edi
call fcn.005850a0
mov ax, word [ebx]
mov cx, word [ebx + 2]
sub ax, 2
mov word [esp + 0x1e], cx
mov ecx, dword [0xa55c50]
mov word [esp + 0x1c], ax
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x28], edx
push eax
push esi
lea edx, [esp + 0x30]
inc ecx
call fcn.005850a0
mov ebp, dword [esp + 0x30]
xor eax, eax
cmp ebp, eax
mov word [esp + 0x28], ax
mov word [esp + 0x2a], ax
je 0x56fbdb
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 0
fild qword [esp + 0x4c]
fmul qword [0x790dd0]
call fcn.0076a6b0
mov esi, eax
cmp esi, 1
ja 0x56fa44
xor ecx, ecx
mov word [esp + 0x34], 0
test ebp, ebp
setg cl
xor edx, edx
mov dword [esp + 0x1c], ecx
test ebp, ebp
setge dl
dec edx
cmp esi, 1
mov word [esp + 0x36], dx
jne 0x56faa5
mov ax, word [esp + 0x70]
mov word [esp + 0x2a], bp
mov word [esp + 0x28], ax
jmp 0x56fab8
mov ax, word [ebx]
sub ax, word [esp + 0x70]
sub ax, word [edi]
sub eax, 5
mov word [esp + 0x34], ax
mov edx, dword [esp + 0x70]
xor eax, eax
test edx, edx
mov dword [esp + 0x14], eax
jle 0x56fbdb
mov dword [esp + 0x18], eax
jmp 0x56fad8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + ecx*4]
xor ebp, ebp
mov esi, 0x7cb4b4
lea ebx, [edx*4 + 0x7cb4c8]
jmp 0x56faef
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x56faf9
mov dword [esp + 0x20], eax
jmp 0x56fb01
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
mov dx, word [edi]
mov cx, word [edi + 2]
add dx, 3
mov word [esp + 0x3e], cx
mov word [esp + 0x3c], dx
mov edx, dword [esp + 0x3c]
add edx, eax
mov eax, dword [esp + 0x3e]
add eax, ebp
mov word [esp + 0x44], dx
mov edx, dword [esp + 0x34]
mov word [esp + 0x46], ax
mov ecx, dword [esp + 0x44]
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x46]
mov edx, dword [esp + 0x36]
mov word [esp + 0x24], ax
add ecx, edx
mov word [esp + 0x4e], cx
mov eax, dword [esp + 0x4e]
mov ecx, dword [esp + 0x20]
add eax, ecx
mov ecx, 0x81a800
mov word [esp + 0x26], ax
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x30]
mov dword [esp + 0x30], edx
push eax
call fcn.005453b0
mov edx, dword [esp + 0x10]
mov cl, byte [esi]
add esi, 4
add ebx, 4
add cl, byte [edx + 0x10]
sub cl, 4
mov byte [eax + 0x11b], cl
mov cl, byte [ebx - 4]
mov byte [eax + 0x11c], cl
mov edx, dword [0xa55c30]
and ecx, 0xff
inc ebp
mov byte [eax + 0x11a], 0
cmp esi, 0x7cb4c8
lea ecx, [ecx + edx - 1]
mov dword [eax + 0x38], ecx
mov eax, dword [esp + 0x14]
jl 0x56faeb
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
inc eax
dec edx
cmp eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
jl 0x56fad0
mov ebx, dword [esp + 0x74]
movsx edx, word [edi]
movsx eax, word [ebx]
mov ebx, dword [esp + 0x70]
sub eax, edx
sub eax, ebx
xor esi, esi
sub eax, 5
test eax, eax
jle 0x56fcd4
mov ebp, dword [esp + 0x2a]
xor ebx, ebx
mov cx, word [edi]
mov dx, word [edi + 2]
add cx, 3
mov word [esp + 0x46], dx
mov word [esp + 0x44], cx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x46]
add eax, esi
add ecx, ebx
mov word [esp + 0x3c], ax
mov eax, dword [esp + 0x28]
mov word [esp + 0x3e], cx
mov edx, dword [esp + 0x3c]
lea ecx, [edx + eax]
mov edx, dword [esp + 0x3e]
mov word [esp + 0x24], cx
lea eax, [edx + ebp]
mov word [esp + 0x26], ax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], edx
mov edx, dword [0xa5861c]
test edx, edx
je 0x56fc72
movsx eax, ax
imul eax, dword [0x836b2c]
movsx ecx, cx
add eax, ecx
mov ecx, dword [esp + 0x78]
lea eax, [eax + eax*4]
shl eax, 4
mov dword [eax + edx + 0x38], ecx
lea edx, [esp + 0x30]
mov ecx, 0x81a800
push edx
call fcn.005453b0
mov ecx, dword [esp + 0x10]
mov dl, byte [ecx + 0x10]
mov byte [eax + 0x11c], 4
sub dl, bl
dec dl
mov byte [eax + 0x11b], dl
mov ecx, dword [0xa55c30]
add ecx, 3
inc ebx
cmp ebx, 4
mov dword [eax + 0x38], ecx
mov byte [eax + 0x11a], 0
jl 0x56fbfc
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
movsx edx, word [edi]
movsx ecx, word [eax]
sub ecx, edx
inc esi
sub ecx, ebx
sub ecx, 5
cmp esi, ecx
jl 0x56fbfa
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x5c
ret 0xc