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

Disassembly:
push ebp
mov ebp, esp
and dword [ecx], 0
sub esp, 0x10
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, eax
mov eax, dword [ebp + 0x18]
and dword [eax], 0
test esi, esi
mov eax, dword [ebp + 0x10]
mov ebx, edx
mov dword [edi], eax
je 0x301467da
test byte [esi + 0x70], 1
je 0x301467da
movzx edx, word [esi + 0x74]
movzx eax, word [esi + 0x76]
sub eax, edx
movzx edx, word [esi + 0x78]
mov dword [ebp + 0x10], eax
movzx eax, word [esi + 0x7a]
sub eax, edx
mov edx, dword [ebp + 0x10]
cmp edx, 0x78
mov dword [ebp + 0x14], eax
mov dword [edi + 0x10], edx
mov dword [edi + 0x28], eax
jg 0x301465be
cmp eax, 0x78
jle 0x30146683
xor eax, eax
inc eax
mov dword [ecx], eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
lea eax, [edi + 4]
push eax
push 0
push 2
push edx
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 8]
push eax
push 0
push 2
push dword [ebp + 0x10]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 0xc]
push eax
push 0
push 2
push dword [ebp + 0x10]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 0x18]
push eax
push 0
push 2
push dword [ebp + 0x14]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 0x1c]
push eax
push 0
push 4
push dword [ebp + 0x14]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 0x20]
push eax
push 0
push 4
push dword [ebp + 0x14]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
lea eax, [edi + 0x24]
push eax
push 0
push 8
push dword [ebp + 0x14]
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
movzx ebx, word [esi + 0x7e]
test ebx, ebx
movzx eax, word [esi + 0x7c]
mov dword [ebp + 0x18], eax
jle 0x301466a4
lea eax, [ebx + ebx]
push eax
push dword [esi + 4]
push dword [edi + 4]
call sub.MSVCR80.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 0x10]
sub eax, dword [ebp + 0x18]
mov dword [ebp - 0xc], eax
sub eax, ebx
test eax, eax
jle 0x301466d5
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
add eax, eax
push eax
movzx eax, word [esi + 0x74]
add eax, ebx
lea eax, [ecx + eax*2]
push eax
mov eax, dword [edi + 4]
lea eax, [eax + ebx*2]
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x301466f8
mov ecx, dword [ebp - 0xc]
add eax, eax
push eax
mov eax, dword [esi + 4]
lea eax, [eax + ebx*2]
push eax
mov eax, dword [edi + 4]
lea eax, [eax + ecx*2]
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0xc
test byte [esi + 0x70], 1
movzx eax, word [esi + 0x7a]
je 0x3014673b
movzx edx, word [esi + 0x78]
movzx ecx, word [esi + 0x40]
add edx, ecx
lea ebx, [eax - 1]
cmp ebx, edx
jge 0x3014671e
movzx ecx, word [esi + 0x78]
sub eax, ecx
mov ecx, dword [esi + 0x18]
jmp 0x30146741
movzx ebx, word [esi + 0x42]
movzx edx, word [esi + 0x7a]
sub edx, ebx
mov ebx, edx
movzx edx, word [esi + 0x7a]
dec edx
cmp edx, ebx
jl 0x3014673b
movzx eax, word [esi + 0x42]
add eax, ecx
jmp 0x30146719
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x48]
mov eax, dword [ecx + eax*4 - 4]
mov dword [edi + 0x14], eax
movzx edx, word [esi + 0x3e]
movzx eax, word [esi + 0x3c]
test eax, eax
movzx ecx, word [esi + 0x40]
mov dword [ebp + 0x18], edx
movzx edx, word [esi + 0x42]
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], edx
jle 0x30146777
push ecx
push eax
push 0
push 0
xor ebx, ebx
xor eax, eax
call fcn.301461c6
mov eax, dword [ebp + 0x10]
sub eax, dword [ebp + 0x18]
mov dword [ebp - 0xc], eax
sub eax, dword [ebp - 4]
test eax, eax
jle 0x301467b1
mov ecx, dword [ebp + 0x14]
sub ecx, dword [ebp - 8]
mov ebx, dword [ebp - 0x10]
sub ecx, ebx
push ecx
push eax
movzx eax, word [esi + 0x78]
add eax, ebx
push eax
movzx eax, word [esi + 0x74]
add eax, dword [ebp - 4]
mov esi, dword [ebp + 8]
push eax
mov eax, dword [ebp - 4]
call fcn.30146101
mov esi, dword [ebp + 0xc]
cmp dword [ebp + 0x18], 0
jle 0x301468e1
push dword [ebp - 8]
mov ebx, dword [ebp + 0x14]
push dword [ebp + 0x18]
sub ebx, dword [ebp - 8]
push dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
push dword [ebp - 4]
call fcn.301461c6
jmp 0x301468e1
mov esi, dword [ebp + 8]
movzx ecx, word [esi + 0x84]
movzx eax, word [esi + 0x86]
movzx edx, word [esi + 0x8a]
sub eax, ecx
movzx ecx, word [esi + 0x8c]
sub ecx, edx
mov dword [edi + 0x28], ecx
mov dword [edi + 0x10], eax
movzx ecx, word [esi + 0x84]
mov edx, dword [esi + 0xc]
lea ecx, [edx + ecx*2]
mov dword [edi + 4], ecx
cmp word [esi + 0x8a], 0
mov dword [ebp + 0x10], eax
jne 0x30146832
movzx eax, word [esi + 0x84]
mov ecx, dword [esi + 0x2c]
lea eax, [ecx + eax*2]
mov dword [edi + 8], eax
jmp 0x30146875
cmp eax, 0x78
jle 0x3014685c
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 1
lea ecx, [edi + 8]
push ecx
push 0
push 2
push eax
push dword [ebx + 8]
call fcn.3011a9ef
test eax, eax
jne 0x301468e3
mov eax, dword [ebp + 0x10]
mov ecx, dword [esi + 0x2c]
push eax
movzx eax, word [esi + 0x84]
push 0
push dword [edi + 8]
lea eax, [ecx + eax*2]
push eax
call fcn.3012c4d8
cmp dword [ebp + 0x14], 1
movzx eax, word [esi + 0x84]
mov ecx, dword [esi + 0x30]
lea eax, [ecx + eax*2]
mov dword [edi + 0xc], eax
movzx eax, word [esi + 0x8c]
mov ecx, dword [esi + 0x48]
mov eax, dword [ecx + eax*4 - 4]
mov dword [edi + 0x14], eax
movzx eax, word [esi + 0x8a]
mov ecx, dword [esi + 0x1c]
lea eax, [ecx + eax*2]
mov dword [edi + 0x18], eax
movzx eax, word [esi + 0x8a]
mov ecx, dword [esi + 0x34]
lea eax, [ecx + eax*4]
mov dword [edi + 0x1c], eax
movzx eax, word [esi + 0x8a]
jne 0x301468c8
mov ecx, dword [esi + 0x40]
jmp 0x301468cb
mov ecx, dword [esi + 0x20]
lea eax, [ecx + eax*4]
mov dword [edi + 0x20], eax
movzx eax, word [esi + 0x8a]
mov ecx, dword [esi + 0x24]
lea eax, [ecx + eax*8]
mov dword [edi + 0x24], eax
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 0x14