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

Disassembly:
sub esp, 0x14
push esi
mov esi, eax
mov eax, dword [esi + 0x188]
mov ecx, dword [esi + 0x18c]
sub ecx, eax
cmp ecx, 0x21b
jge 0x657093
xor eax, eax
pop esi
add esp, 0x14
ret
push ebx
push edi
mov edi, dword [esi + 0x184]
lea edx, [esp + 0xc]
push edx
add edi, eax
mov eax, dword [esi]
lea ecx, [edi + 8]
push 0x210
push ecx
push eax
call dword [eax + 0x34]
xor ebx, ebx
add esp, 0x10
cmp eax, ebx
jle 0x657308
cmp eax, 0x20e
jg 0x657308
mov word [edi + 4], ax
mov eax, dword [esi]
push ebp
push eax
call dword [eax + 0x28]
mov ebp, dword [esi + 0x3c]
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x28]
add esp, 4
inc ecx
mov dword [esi + 0x28], ecx
mov ecx, dword [esi + 0x4c]
mov dword [esi + 0x44], eax
movzx edx, word [edi + 4]
add ebp, edx
cmp ecx, ebx
mov dword [esi + 0x3c], ebp
je 0x657106
mov edx, eax
sub edx, ecx
cmp edx, 0x64
jbe 0x657106
mov dword [esi + 0x4c], ebx
mov dword [esi + 0x54], eax
mov ecx, dword [esi + 0x54]
cmp ecx, ebx
je 0x65711c
mov edx, eax
sub edx, ecx
cmp edx, 0x64
jbe 0x65711c
mov dword [esi + 0x54], ebx
mov dword [esi + 0x4c], eax
dec word [edi + 4]
xor eax, eax
mov ax, word [edi + 4]
movzx ecx, ax
mov cl, byte [ecx + edi + 8]
test cl, 0x40
mov byte [edi + 6], cl
je 0x65729e
add eax, 0xfffffff4
mov word [edi + 4], ax
movzx edx, ax
lea eax, [edx + edi + 8]
mov ecx, eax
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 8]
xor byte [edi + 6], 0x40
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], edx
mov edx, dword [esi + 0xc]
mov ebp, ecx
sub ebp, edx
cmp ebp, 0xa
jge 0x65716e
mov ebp, 0xa
push eax
mov dword [esi + 0xc], ecx
call fcn.00655bd0
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x24]
push eax
call fcn.00655bb0
movzx ecx, ax
push ebx
mov dword [esi + 0x30], ecx
call fcn.00655bd0
mov cx, word [esi + 0xc]
sub cx, ax
add esp, 0xc
test cx, cx
jl 0x65729e
cmp cx, 0x9c4
jg 0x65729e
cmp ebp, 0x400
movsx ebx, cx
jge 0x65720b
mov eax, 0x400
sub eax, ebp
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x1c]
mov edx, ebx
sub edx, eax
jns 0x6571cf
neg edx
mov eax, dword [esi + 0x20]
imul edx, ebp
imul eax, dword [esp + 0x14]
add eax, edx
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x1c]
imul eax, dword [esp + 0x14]
mov edx, ebx
imul edx, ebp
add eax, edx
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
mov dword [esi + 0x1c], eax
jmp 0x657215
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], 0
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
mov ebp, dword [esi + 0x18]
add eax, edx
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x10]
mov edx, eax
sub edx, ebp
cmp edx, 0xfa
jb 0x657258
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x70]
inc eax
and eax, 0x1f
mov dword [esi + 0x70], eax
mov word [esi + eax*8 + 0x74], cx
mov word [esi + eax*8 + 0x76], cx
mov word [esi + eax*8 + 0x78], cx
mov word [esi + eax*8 + 0x7a], 1
jmp 0x657297
mov eax, dword [esi + 0x70]
movzx edx, word [esi + eax*8 + 0x74]
cmp ebx, edx
lea ebp, [esi + eax*8 + 0x74]
jge 0x65726c
mov word [ebp], cx
movzx eax, word [ebp + 2]
cmp ebx, eax
jle 0x657278
mov word [ebp + 2], cx
mov cx, word [ebp + 6]
movzx eax, word [ebp + 4]
movzx edx, cx
imul eax, edx
add eax, ebx
lea ebx, [edx + 1]
cdq
idiv ebx
inc ecx
mov word [ebp + 6], cx
mov word [ebp + 4], ax
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x6c], ecx
mov al, byte [edi + 6]
cmp al, 1
pop ebp
jne 0x6572c9
xor eax, eax
mov ax, word [edi + 8]
test ax, ax
jle 0x6572bd
dec eax
mov word [edi + 8], ax
mov eax, edi
call fcn.00656f10
pop edi
pop ebx
mov eax, 1
pop esi
add esp, 0x14
ret
cmp al, 3
jne 0x6572e2
mov esi, dword [esi]
push esi
call dword [esi + 0x1c]
add esp, 4
pop edi
pop ebx
mov eax, 1
pop esi
add esp, 0x14
ret
test al, al
je 0x6572fc
xor eax, eax
mov ax, word [edi + 4]
add eax, 0xb
and eax, 0x7ffc
mov dword [edi], eax
add dword [esi + 0x188], eax
pop edi
pop ebx
mov eax, 1
pop esi
add esp, 0x14
ret
pop edi
pop ebx
xor eax, eax
pop esi
add esp, 0x14
ret