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

Disassembly:
sub esp, 0x5c
push ebx
push ebp
mov ebp, dword [esp + 0x6c]
push esi
push edi
mov edi, dword [esp + 0x70]
mov dx, word [ebp]
mov dword [esp + 0x10], ecx
mov ax, word [edi]
cmp ax, dx
mov ebx, eax
jg 0x56fd03
mov ebx, edx
cmp ax, dx
mov esi, eax
jl 0x56fd0c
mov esi, edx
cmp ax, dx
jl 0x56fd13
mov eax, edx
movsx eax, ax
sub eax, 3
mov dword [esp + 0x5c], eax
movsx eax, word [ebp + 2]
lea edx, [eax - 4]
mov dword [esp + 0x60], edx
movsx edx, si
movsx esi, bx
sub esi, edx
movsx edx, word [edi + 2]
sub edx, eax
mov eax, dword [esp + 0x78]
add edx, 9
add esi, 0xb
mov dword [esp + 0x68], edx
lea edx, [esp + 0x5c]
push eax
push edx
mov dword [esp + 0x6c], esi
call fcn.005725b0
test al, al
jne 0x56fd61
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0xc
movsx ebx, word [edi]
movsx eax, word [ebp]
sub eax, ebx
movsx ecx, word [edi + 2]
mov dword [esp + 0x20], eax
cdq
mov esi, eax
mov eax, ecx
xor esi, edx
sub esi, edx
movsx edx, word [ebp + 2]
sub eax, edx
mov dword [esp + 0x70], esi
lea edx, [eax - 5]
cmp esi, edx
jle 0x56fd98
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x5c
ret 0xc
inc eax
cdq
sub eax, edx
mov esi, eax
sar esi, 1
add esi, 2
inc ebx
sub ecx, esi
mov dword [esp + 0x4c], ebx
add ecx, 2
mov dword [esp + 0x18], ecx
lea edx, [esi + ecx + 3]
cmp ecx, edx
mov dword [esp + 0x24], edx
jge 0x56fe33
lea eax, [ebx + 7]
cmp ebx, eax
mov ebp, ebx
jge 0x56fe22
mov ax, word [esp + 0x18]
lea ecx, [esp + 0x14]
mov word [esp + 0x14], bp
mov word [esp + 0x16], ax
call fcn.0058a6c0
test al, al
je 0x56fe16
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 ebx, eax
call fcn.00572980
mov dl, byte [eax + 0x10]
mov byte [ebx + 0x11b], dl
mov ebx, dword [esp + 0x4c]
inc ebp
lea eax, [ebx + 7]
cmp ebp, eax
jl 0x56fdc6
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
inc ecx
cmp ecx, edx
mov dword [esp + 0x18], ecx
jl 0x56fdc0
mov ebp, dword [esp + 0x74]
movsx ebp, word [ebp]
mov eax, dword [esp + 0x60]
inc ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x18], eax
lea ecx, [esi + eax + 2]
cmp eax, ecx
mov dword [esp + 0x24], ecx
jge 0x56fec2
lea eax, [ebp + 7]
cmp ebp, eax
mov ebx, ebp
jge 0x56feb5
mov ax, word [esp + 0x18]
lea ecx, [esp + 0x14]
mov word [esp + 0x14], bx
mov word [esp + 0x16], ax
call fcn.0058a6c0
test al, al
je 0x56fea9
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 ebp, eax
call fcn.00572980
mov dl, byte [eax + 0x10]
mov byte [ebp + 0x11b], dl
mov ebp, dword [esp + 0x4c]
inc ebx
lea eax, [ebp + 7]
cmp ebx, eax
jl 0x56fe59
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
inc edx
cmp edx, ecx
mov dword [esp + 0x18], edx
jl 0x56fe53
mov edx, dword [esp + 0x5c]
movsx ecx, word [edi]
lea eax, [edx + 2]
sub ecx, edx
mov dword [esp + 0x4c], eax
movsx eax, word [edi + 2]
sub eax, esi
add eax, 2
dec ecx
mov ebp, eax
lea ebx, [esi + eax - 1]
mov dword [esp + 0x1c], ebp
cmp eax, ebx
mov dword [esp + 0x24], ebx
jge 0x56ff5f
mov ebx, dword [esp + 0x4c]
add ecx, ebx
mov dword [esp + 0x18], ecx
cmp ebx, dword [esp + 0x18]
jge 0x56ff52
lea ecx, [esp + 0x14]
mov word [esp + 0x14], bx
mov word [esp + 0x16], bp
call fcn.0058a6c0
test al, al
je 0x56ff41
mov ebp, dword [esp + 0x10]
lea ecx, [esp + 0x14]
mov edx, dword [ebp + 8]
call fcn.0056b610
lea ecx, [esp + 0x14]
push ecx
mov ecx, 0x81a800
call fcn.005453b0
mov dl, byte [ebp + 0x10]
mov ebp, dword [esp + 0x1c]
mov byte [eax + 0x11b], dl
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jl 0x56fefe
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x24]
inc ebp
cmp ebp, eax
mov dword [esp + 0x1c], ebp
jl 0x56fef8
mov eax, dword [esp + 0x74]
lea ebx, [edx + 2]
mov dword [esp + 0x4c], ebx
movsx ecx, word [eax + 2]
movsx eax, word [eax]
sub eax, edx
lea edx, [esi + ecx - 2]
dec eax
cmp ecx, edx
mov ebp, ecx
mov dword [esp + 0x24], edx
jge 0x56ffe7
add eax, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov esi, ebx
cmp ebx, eax
jge 0x56ffe2
lea ecx, [esp + 0x14]
mov word [esp + 0x14], si
mov word [esp + 0x16], bp
call fcn.0058a6c0
test al, al
je 0x56ffd5
mov ebx, dword [esp + 0x10]
lea ecx, [esp + 0x14]
mov edx, dword [ebx + 8]
call fcn.0056b610
lea eax, [esp + 0x14]
mov ecx, 0x81a800
push eax
call fcn.005453b0
mov cl, byte [ebx + 0x10]
mov ebx, dword [esp + 0x4c]
mov byte [eax + 0x11b], cl
mov eax, dword [esp + 0x1c]
inc esi
cmp esi, eax
jl 0x56ff92
mov edx, dword [esp + 0x24]
inc ebp
cmp ebp, edx
jl 0x56ff88
mov ax, word [edi + 2]
mov dx, word [edi]
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x78]
sub ax, 2
mov word [esp + 0x1c], dx
mov edx, dword [ebx + 0x10]
mov word [esp + 0x1e], ax
mov ecx, dword [esp + 0x1c]
mov eax, dword [0xa55c50]
mov dword [esp + 0x24], ecx
push edx
push esi
lea edx, [esp + 0x2c]
lea ecx, [eax + 2]
call fcn.005850a0
mov ecx, dword [ebx + 0x10]
mov eax, dword [0xa55c50]
mov ebp, dword [esp + 0x74]
push ecx
push esi
mov edx, ebp
lea ecx, [eax + 3]
call fcn.005850a0
mov esi, dword [esp + 0x20]
xor ebx, ebx
cmp esi, ebx
mov word [esp + 0x34], bx
mov word [esp + 0x36], bx
je 0x5701fb
mov ecx, 0xa581b8
call fcn.0062fc90
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ebx
fild qword [esp + 0x4c]
fmul qword [0x790dd0]
call fcn.0076a6b0
cmp eax, 1
ja 0x570052
xor ecx, ecx
cmp esi, ebx
setg cl
xor edx, edx
cmp esi, ebx
setge dl
dec edx
cmp eax, 1
mov dword [esp + 0x1c], ecx
mov word [esp + 0x2c], dx
mov word [esp + 0x2e], bx
jne 0x5700ac
mov eax, dword [esp + 0x70]
mov word [esp + 0x34], si
neg eax
mov word [esp + 0x36], ax
jmp 0x5700d1
mov ax, word [edi + 2]
mov word [esp + 0x2c], dx
sub ax, word [esp + 0x70]
sub ax, word [ebp + 2]
sub eax, 5
mov word [esp + 0x46], ax
mov edx, dword [esp + 0x46]
neg edx
mov word [esp + 0x2e], dx
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], ebx
cmp eax, ebx
jle 0x5701fb
mov dword [esp + 0x18], ebx
jmp 0x5700ed
mov ecx, dword [esp + 0x1c]
xor ebx, ebx
mov eax, dword [esp + 0x14]
xor ebp, ebp
lea edx, [ecx + ecx*4]
mov esi, 0x7cb4f0
neg eax
mov word [esp + 0x4e], ax
lea ebx, [edx*4 + 0x7cb504]
jmp 0x57010f
mov ecx, dword [esp + 0x1c]
test ecx, ecx
mov ecx, dword [esp + 0x14]
jne 0x57011b
mov ecx, dword [esp + 0x18]
mov dx, word [edi + 2]
mov ax, word [edi]
sub dx, 3
mov word [esp + 0x3c], ax
mov word [esp + 0x3e], dx
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x3e]
add eax, ebp
mov word [esp + 0x44], ax
mov eax, dword [esp + 0x4e]
add edx, eax
mov eax, dword [esp + 0x2c]
mov word [esp + 0x46], dx
mov edx, dword [esp + 0x44]
add edx, eax
mov eax, dword [esp + 0x2e]
mov word [esp + 0x20], dx
mov edx, dword [esp + 0x46]
add eax, edx
mov word [esp + 0x22], ax
mov edx, dword [esp + 0x20]
add edx, ecx
lea ecx, [esp + 0x28]
mov word [esp + 0x24], dx
mov word [esp + 0x26], ax
mov eax, dword [esp + 0x24]
push ecx
mov ecx, 0x81a800
mov dword [esp + 0x2c], eax
call fcn.005453b0
mov ecx, dword [esp + 0x10]
mov dl, byte [esi]
add esi, 4
add ebx, 4
add dl, byte [ecx + 0x10]
sub dl, 4
mov byte [eax + 0x11b], dl
mov cl, byte [ebx - 4]
mov byte [eax + 0x11c], cl
mov edx, dword [0xa55c30]
and ecx, 0xff
inc ebp
cmp esi, 0x7cb504
mov byte [eax + 0x11a], 0
lea ecx, [ecx + edx - 1]
mov dword [eax + 0x38], ecx
jl 0x57010b
mov eax, dword [esp + 0x14]
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 0x5700e7
mov ebp, dword [esp + 0x74]
xor ebx, ebx
movsx edx, word [edi + 2]
movsx eax, word [ebp + 2]
mov esi, dword [esp + 0x70]
sub edx, eax
sub edx, esi
mov dword [esp + 0x18], ebx
sub edx, 5
test edx, edx
jle 0x570312
mov ebp, dword [esp + 0x36]
jmp 0x570222
xor ebx, ebx
mov ecx, dword [esp + 0x18]
neg ecx
mov word [esp + 0x4e], cx
mov esi, dword [esp + 0x4e]
mov ax, word [edi + 2]
mov dx, word [edi]
sub ax, 3
mov word [esp + 0x44], dx
mov word [esp + 0x46], ax
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x46]
add ecx, ebx
add edx, esi
mov word [esp + 0x3c], cx
mov ecx, dword [esp + 0x34]
mov word [esp + 0x3e], dx
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x3e]
add ecx, eax
lea eax, [edx + ebp]
mov word [esp + 0x24], cx
mov word [esp + 0x26], ax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x28], edx
mov edx, dword [0xa5861c]
test edx, edx
je 0x5702a6
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 + 0x28]
mov ecx, 0x81a800
push edx
call fcn.005453b0
mov ecx, dword [esp + 0x10]
mov dl, byte [ecx + 0x10]
mov byte [eax + 0x11c], 3
sub dl, bl
dec dl
mov byte [eax + 0x11b], dl
mov ecx, dword [0xa55c30]
add ecx, 2
inc ebx
cmp ebx, 4
mov dword [eax + 0x38], ecx
mov byte [eax + 0x11a], 0
jl 0x570231
mov ecx, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
movsx edx, word [edi + 2]
movsx ecx, word [ecx + 2]
mov eax, dword [esp + 0x18]
sub edx, ecx
sub edx, ebx
inc eax
sub edx, 5
mov dword [esp + 0x18], eax
cmp eax, edx
jl 0x570220
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x5c
ret 0xc