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

Disassembly:
sub esp, 0x30
mov eax, dword [esp + 0x34]
push esi
mov esi, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + 0x18], eax
test eax, eax
je 0x4e9a0c
imul eax, dword [esp + 0x40], 0xcc
mov ecx, dword [esp + 0x3c]
push ebx
add ecx, 4
push ebp
add ecx, eax
mov dword [esp + 0x10], ecx
push edi
jmp 0x4e9700
test byte [esi + 0x10], 8
mov eax, dword [ecx + 0xc4]
mov edi, dword [ecx + 0xc8]
mov dword [esp + 0x10], eax
jne 0x4e99f5
mov eax, dword [esi]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x28]
mov eax, dword [esi + 4]
add ebx, edi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x50]
test eax, eax
jne 0x4e9890
cmp byte [edi + 0x78], al
je 0x4e989f
cmp byte [edi + 0x7a], al
jne 0x4e98b4
mov dword [esp + 0x1c], 0
xor ecx, ecx
mov dword [esi + 0xc], ebp
xor ebx, ebx
mov dword [esp + 0x18], ecx
xor edx, edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], edx
cmp eax, 1
jne 0x4e9801
mov ecx, dword [esi]
lea eax, [esp + 0x34]
push eax
mov eax, dword [esi + 4]
add eax, ecx
push ecx
push eax
mov eax, dword [esp + 0x54]
add eax, 0x19c
push eax
call fcn.004e7e70
mov ebx, dword [esp + 0x48]
add esp, 0x10
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], ecx
mov eax, ecx
dec eax
je 0x4e998e
dec eax
je 0x4e9989
dec eax
je 0x4e997d
mov ebx, dword [esi + 0x14]
test ebx, ebx
je 0x4e98c1
test byte [ebx + 0x10], 8
jne 0x4e983c
mov eax, dword [esp + 0x4c]
push edi
push eax
push dword [esp + 0x50]
push ebx
call fcn.004e92a0
add esp, 0x10
mov eax, dword [ebx + 4]
mov ecx, dword [esi + 4]
mov edi, dword [ebx + 0xc]
sar ecx, 1
sar eax, 1
sub ecx, eax
sar edi, 1
sub ecx, dword [ebx]
add ecx, dword [esi]
add edi, dword [ebx + 8]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
mov eax, ebp
sar eax, 1
sub ecx, eax
add ecx, edi
mov dword [esp + 0x44], ecx
jmp 0x4e98c5
cmp eax, 1
jne 0x4e97a3
cmp byte [edi + 0x79], 0
jne 0x4e98aa
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebp
jmp 0x4e99ed
cmp byte [edi + 0x7b], 0
je 0x4e97a3
mov dword [esp + 0x1c], 1
jmp 0x4e97ab
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebp
cmp byte [eax + 0x7c], 0
je 0x4e9945
cmp ebp, 0x40
jg 0x4e9930
cmp ebp, 0x20
jl 0x4e98f1
sar ebp, 1
add ecx, ebp
mov ebp, 0x40
and ecx, 0xffffffc0
mov dword [esp + 0x44], ecx
jmp 0x4e9945
test ebp, ebp
jle 0x4e9924
lea ebx, [ebp + 0x20]
add ebx, ecx
lea edi, [ecx + 0x20]
and ebx, 0xffffffc0
and edi, 0xffffffc0
mov eax, ebx
mov edx, edi
sub eax, ebp
sub eax, ecx
sub edx, ecx
jns 0x4e9911
neg edx
test eax, eax
jns 0x4e9917
neg eax
cmp edx, eax
mov ecx, ebx
cmovle ecx, edi
mov dword [esp + 0x44], ecx
jmp 0x4e9945
add ecx, 0x20
and ecx, 0xffffffc0
mov dword [esp + 0x44], ecx
jmp 0x4e9945
push 0
push ebp
push dword [esp + 0x1c]
call fcn.004e7f60
mov ecx, dword [esp + 0x50]
add esp, 0xc
mov ebp, eax
lea edi, [ebp + 0x20]
mov dword [esi + 0xc], ebp
add edi, ecx
lea ebx, [ecx + 0x20]
and edi, 0xffffffc0
and ebx, 0xffffffc0
sub edi, ebp
sub ebx, ecx
sub edi, ecx
mov eax, edi
cdq
mov ecx, eax
mov eax, ebx
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
cmovle edi, ebx
add eax, edi
jmp 0x4e9992
mov eax, ebx
mov dword [esi + 8], edx
sub eax, edx
mov dword [esi + 0xc], eax
jmp 0x4e9995
mov dword [esi + 8], edx
jmp 0x4e9995
mov eax, ebx
sub eax, ebp
mov dword [esi + 8], eax
cmp dword [esp + 0x1c], 0
je 0x4e99ed
mov eax, dword [esi + 0xc]
mov edi, dword [esi + 8]
cmp eax, 0x40
jge 0x4e99ae
mov eax, 0x40
jmp 0x4e99b4
add eax, 0x20
and eax, 0xffffffc0
dec ecx
je 0x4e99e1
dec ecx
je 0x4e99ea
dec ecx
je 0x4e99ed
mov edx, eax
mov dword [esi + 0xc], eax
sar edx, 1
test al, 0x40
je 0x4e99d5
lea ecx, [edx + edi]
and ecx, 0xffffffc0
add ecx, 0x20
sub ecx, edx
jmp 0x4e99e7
lea ecx, [edi + 0x20]
add ecx, edx
and ecx, 0xffffffc0
sub ecx, edx
jmp 0x4e99e7
mov ecx, dword [esp + 0x20]
sub ecx, eax
mov dword [esi + 8], ecx
mov dword [esi + 0xc], eax
mov ecx, dword [esp + 0x14]
or dword [esi + 0x10], 8
mov eax, dword [esp + 0x24]
add esi, 0x1c
dec eax
mov dword [esp + 0x24], eax
test eax, eax
jne 0x4e9700
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x30
ret