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

Disassembly:
sub esp, 0x5c
mov eax, dword [esp + 0x64]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
push ebx
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov ebx, ecx
cmovae edx, ecx
mov eax, edx
shrd ebx, eax, 1
push ebp
sar eax, 1
or ebx, ecx
push esi
mov esi, dword [esp + 0x84]
or eax, edx
mov dword [esp + 0x1c], eax
push edi
mov dword [esp + 0x1c], ebx
mov eax, dword [esi + 0x30]
mov edi, dword [esi + 0x28]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x54], edi
cmp dword [eax + 0x2c], 0
mov ecx, dword [eax + 0x38]
jl 0x4ff1ed
jg 0x4ff1e3
cmp dword [eax + 0x28], 1
jbe 0x4ff1ed
mov ebx, dword [ecx + 4]
sub ebx, dword [ecx]
sar ebx, 3
jmp 0x4ff1ef
xor ebx, ebx
cmp dword [esi + 0x2c], 0
mov dword [esp + 0x14], ebx
jl 0x4ff20d
jg 0x4ff200
cmp edi, 1
jbe 0x4ff20d
mov eax, dword [esi + 0x38]
mov edx, dword [eax + 4]
sub edx, dword [eax]
sar edx, 3
jmp 0x4ff20f
xor edx, edx
mov eax, dword [esi + 0x38]
xor ebp, ebp
mov ecx, dword [ecx + 4]
mov esi, dword [esp + 0x70]
add ecx, 8
mov dword [esp + 0x28], edx
mov eax, dword [eax]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], ebp
test edi, edi
je 0x4ffa47
mov eax, ebx
shl eax, 5
shl edx, 5
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x64], eax
jmp 0x4ff254
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x54]
mov edi, ecx
sub eax, ebp
mov dword [esp + 0x34], edi
cmp eax, 4
mov ebp, 4
cmova eax, ebp
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x38], eax
mov dword [esp + 0x4c], ebp
test ebp, ebp
je 0x4ffa1d
mov ebp, edx
sub ebp, ecx
mov dword [esp + 0x44], ebp
jmp 0x4ff294
mov ebp, dword [esp + 0x44]
cmp eax, 4
jb 0x4ff3a4
mov eax, dword [edi]
and eax, 0x50ff
or eax, 0
jne 0x4ff3a4
lea ecx, [ebx*8]
mov eax, dword [ecx + edi]
lea edx, [ecx + edi]
and eax, 0x50ff
mov dword [esp + 0x18], ecx
or eax, 0
jne 0x4ff3a4
mov eax, dword [edx + ecx]
add edx, ecx
and eax, 0x50ff
or eax, 0
jne 0x4ff3a4
mov eax, dword [ecx + edx]
and eax, 0x50ff
or eax, 0
jne 0x4ff3a4
mov eax, dword [esi + 0x10]
lea ebp, [esi + 0x10]
lea edi, [esi + 0xc]
mov dword [edi], eax
push esi
mov dword [esp + 0x8c], edi
call fcn.0050a2f0
add esp, 4
test al, al
je 0x4ff9f3
mov eax, dword [ebp]
add eax, 0x48
push esi
mov dword [edi], eax
call fcn.0050a2f0
push esi
mov bl, al
call fcn.0050a2f0
mov edx, dword [esp + 0x3c]
add esp, 8
movzx ecx, al
mov edi, dword [esp + 0x44]
movzx eax, bl
add eax, eax
or ecx, eax
mov eax, ecx
imul eax, dword [esp + 0x14]
mov ebx, dword [edx + eax*8]
lea esi, [edx + eax*8]
mov eax, ecx
imul eax, dword [esp + 0x28]
lea eax, [edi + eax*8]
mov edi, dword [esp + 0x88]
add eax, edx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x38]
sub eax, ecx
mov dword [esp + 0x24], eax
cmp ecx, 3
ja case.default.0x4ff374
jmp dword [ecx*4 + 0x4ffabc]
mov edx, ebp
jmp 0x4ff427
mov eax, dword [esp + 0x28]
mov edx, ebp
shl eax, 3
jmp 0x4ff629
mov eax, dword [esp + 0x28]
mov edx, ebp
shl eax, 3
jmp 0x4ff7d2
mov edx, dword [esp + 0x18]
jmp 0x4ff3cb
mov edx, dword [esp + 0x14]
lea eax, [edi + ebp]
mov ebx, dword [edi]
mov esi, edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x70]
shl edx, 3
lea ebp, [eax + 0x10]
lea edi, [eax + 0xc]
mov dword [esp + 0x18], edx
mov dword [esp + 0x88], edi
mov dword [esp + 0x48], ebp
mov dword [esp + 0x74], edx
mov dword [esp + 0x10], edi
test ebx, 0x5000
jne 0x4ff584
mov eax, dword [esp + 0x78]
push dword [esp + 0x70]
shl eax, 8
movzx ecx, bl
or ecx, eax
mov dword [esp + 0x78], edx
mov eax, dword [ebp]
mov dword [esp + 0x14], edi
movzx ecx, byte [ecx + 0x7c07c0]
lea eax, [eax + ecx*4]
mov dword [edi], eax
call fcn.0050a2f0
add esp, 4
test al, al
je 0x4ff584
mov edx, ebp
mov eax, dword [esp + 0x18]
mov ebp, edx
push dword [esp + 0x70]
shr ebx, 4
mov dword [esp + 0x14], edi
movzx edi, bl
mov dword [esp + 0x78], eax
mov eax, dword [edx]
movzx ecx, byte [edi + 0x7c05c0]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x8c]
mov dword [ecx], eax
call fcn.0050a2f0
mov ecx, dword [esp + 0x20]
add esp, 4
cmp byte [edi + 0x7c06c0], al
mov eax, dword [esp + 0x20]
setne byte [esp + 0x88]
je 0x4ff47b
neg ecx
adc eax, 0
neg eax
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x74]
mov dword [edx], ecx
mov dword [edx + 4], eax
mov edx, esi
sub edx, ebx
cmp byte [esp + 0x7c], 0
je 0x4ff4e8
mov eax, dword [ebx + esi - 4]
or dword [ebx + esi - 8], 1
or dword [ebx + esi + 8], 8
cmp byte [esp + 0x88], 0
mov ecx, dword [ebx + esi + 4]
mov dword [ebx + esi - 4], eax
mov eax, dword [ebx + esi + 0xc]
mov dword [ebx + esi + 0xc], eax
mov eax, dword [ebx + esi]
mov dword [ebx + esi + 4], ecx
je 0x4ff4e0
or eax, 0x110
mov dword [ebx + esi], eax
or dword [esi - 8], 0x220
or dword [esi + 8], 0x880
jmp 0x4ff56a
or eax, 0x10
mov dword [ebx + esi], eax
jmp 0x4ff55f
mov eax, dword [edx - 4]
or dword [edx - 8], 2
or dword [edx + 8], 4
mov dword [edx - 4], eax
mov eax, dword [edx + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [ebx + esi - 4]
or dword [ebx + esi - 8], 1
or dword [ebx + esi + 8], 8
cmp byte [esp + 0x88], 0
mov dword [ebx + esi - 4], eax
mov eax, dword [ebx + esi + 0xc]
mov dword [ebx + esi + 0xc], eax
mov ecx, dword [edx + 4]
mov eax, dword [edx]
mov dword [edx + 4], ecx
je 0x4ff54e
or eax, 0x440
mov dword [edx], eax
mov eax, dword [ebx + esi + 4]
or dword [ebx + esi], 0x110
mov dword [ebx + esi + 4], eax
or dword [esi - 8], 0x220
or dword [esi + 8], 0x880
jmp 0x4ff56a
or eax, 0x40
mov dword [edx], eax
mov eax, dword [ebx + esi + 4]
or dword [ebx + esi], 0x10
mov dword [ebx + esi + 4], eax
or dword [esi - 8], 0x20
or dword [esi + 8], 0x80
mov eax, dword [esi - 4]
or dword [esi], 0x1000
mov dword [esi - 4], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 4]
mov dword [esi + 4], eax
jmp 0x4ff588
mov ebx, dword [esp + 0x74]
mov edx, dword [esp + 0x10]
mov edi, edx
and dword [esi], 0xffffbfff
sub dword [esp + 0x24], 1
mov eax, dword [esi + 4]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x88], edx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x48], ebp
mov dword [esi + 4], eax
je 0x4ff9eb
mov eax, dword [esp + 0x28]
add esi, ebx
mov ecx, dword [esp + 0x84]
shl eax, 3
add ecx, eax
mov dword [esp + 0x2c], eax
mov ebx, dword [esi]
mov dword [esp + 0x84], ecx
test ebx, 0x5000
jne 0x4ff726
mov eax, dword [esp + 0x78]
push dword [esp + 0x70]
shl eax, 8
movzx ecx, bl
or ecx, eax
mov dword [esp + 0x14], edx
mov eax, ebp
movzx ecx, byte [ecx + 0x7c07c0]
mov eax, dword [eax]
lea eax, [eax + ecx*4]
mov dword [edx], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x78], eax
call fcn.0050a2f0
add esp, 4
test al, al
je 0x4ff72c
mov eax, dword [esp + 0x2c]
mov edx, ebp
push dword [esp + 0x70]
shr ebx, 4
mov ebp, edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
movzx edi, bl
mov dword [esp + 0x78], eax
mov eax, dword [edx]
movzx ecx, byte [edi + 0x7c05c0]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x8c]
mov dword [ecx], eax
call fcn.0050a2f0
mov ecx, dword [esp + 0x20]
add esp, 4
cmp byte [edi + 0x7c06c0], al
mov eax, dword [esp + 0x20]
setne bl
je 0x4ff67c
neg ecx
adc eax, 0
neg eax
mov edx, dword [esp + 0x84]
mov dword [edx], ecx
mov ecx, esi
mov dword [edx + 4], eax
mov edx, dword [esp + 0x74]
sub ecx, edx
mov eax, dword [ecx - 4]
or dword [ecx - 8], 2
or dword [ecx + 8], 4
mov dword [ecx - 4], eax
mov eax, dword [ecx + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [edx + esi - 4]
or dword [edx + esi - 8], 1
or dword [edx + esi + 8], 8
mov dword [edx + esi - 4], eax
mov eax, dword [edx + esi + 0xc]
mov dword [edx + esi + 0xc], eax
mov edi, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [ecx + 4], edi
test bl, bl
je 0x4ff6f0
or eax, 0x440
mov dword [ecx], eax
mov eax, dword [edx + esi + 4]
or dword [edx + esi], 0x110
mov dword [edx + esi + 4], eax
or dword [esi - 8], 0x220
or dword [esi + 8], 0x880
jmp 0x4ff70c
or eax, 0x40
mov dword [ecx], eax
mov eax, dword [edx + esi + 4]
or dword [edx + esi], 0x10
mov dword [edx + esi + 4], eax
or dword [esi - 8], 0x20
or dword [esi + 8], 0x80
mov eax, dword [esi - 4]
or dword [esi], 0x1000
mov dword [esi - 4], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 4]
mov dword [esi + 4], eax
jmp 0x4ff730
mov edx, dword [esp + 0x74]
jmp 0x4ff737
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x84]
and dword [esi], 0xffffbfff
sub dword [esp + 0x24], 1
mov edi, dword [esp + 0x10]
mov eax, dword [esi + 4]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0x88], edi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x74], ebp
mov dword [esi + 4], eax
je 0x4ff9eb
mov eax, dword [esp + 0x2c]
add esi, edx
add ecx, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x84], ecx
mov ebx, dword [esi]
test ebx, 0x5000
jne 0x4ff8da
mov eax, dword [esp + 0x78]
push dword [esp + 0x70]
shl eax, 8
movzx ecx, bl
or ecx, eax
mov dword [esp + 0x78], edx
mov eax, ebp
movzx ecx, byte [ecx + 0x7c07c0]
mov eax, dword [eax]
lea eax, [eax + ecx*4]
mov ecx, edi
mov dword [esp + 0x14], ecx
mov dword [ecx], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
call fcn.0050a2f0
add esp, 4
test al, al
je 0x4ff8cf
mov eax, dword [esp + 0x2c]
mov edx, ebp
push dword [esp + 0x70]
shr ebx, 4
mov ebp, edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x1c]
movzx edi, bl
mov dword [esp + 0x78], eax
mov eax, dword [edx]
movzx ecx, byte [edi + 0x7c05c0]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x8c]
mov dword [ecx], eax
call fcn.0050a2f0
mov ecx, dword [esp + 0x20]
add esp, 4
cmp byte [edi + 0x7c06c0], al
mov eax, dword [esp + 0x20]
setne bl
je 0x4ff825
neg ecx
adc eax, 0
neg eax
mov edx, dword [esp + 0x84]
mov dword [edx], ecx
mov ecx, esi
mov dword [edx + 4], eax
mov edx, dword [esp + 0x74]
sub ecx, edx
mov eax, dword [ecx - 4]
or dword [ecx - 8], 2
or dword [ecx + 8], 4
mov dword [ecx - 4], eax
mov eax, dword [ecx + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [edx + esi - 4]
or dword [edx + esi - 8], 1
or dword [edx + esi + 8], 8
mov dword [edx + esi - 4], eax
mov eax, dword [edx + esi + 0xc]
mov dword [edx + esi + 0xc], eax
mov edi, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [ecx + 4], edi
test bl, bl
je 0x4ff899
or eax, 0x440
mov dword [ecx], eax
mov eax, dword [edx + esi + 4]
or dword [edx + esi], 0x110
mov dword [edx + esi + 4], eax
or dword [esi - 8], 0x220
or dword [esi + 8], 0x880
jmp 0x4ff8b5
or eax, 0x40
mov dword [ecx], eax
mov eax, dword [edx + esi + 4]
or dword [edx + esi], 0x10
mov dword [edx + esi + 4], eax
or dword [esi - 8], 0x20
or dword [esi + 8], 0x80
mov eax, dword [esi - 4]
or dword [esi], 0x1000
mov dword [esi - 4], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [esi + 4]
mov dword [esi + 4], eax
jmp 0x4ff8d3
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x84]
mov eax, dword [esi + 4]
and dword [esi], 0xffffbfff
mov edi, dword [esp + 0x10]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x88], edi
add eax, 0xffffffff
je 0x4ff9eb
add ecx, dword [esp + 0x30]
add esi, edx
mov dword [esp + 0x84], ecx
mov ecx, ebp
mov ebx, dword [esi]
test ebx, 0x5000
jne 0x4ff9d7
mov eax, dword [esp + 0x78]
push dword [esp + 0x70]
shl eax, 8
movzx ecx, bl
or ecx, eax
mov dword [esp + 0x78], ebp
mov eax, dword [ebp]
movzx ecx, byte [ecx + 0x7c07c0]
lea eax, [eax + ecx*4]
mov dword [edi], eax
call fcn.0050a2f0
add esp, 4
test al, al
je 0x4ff9d3
mov eax, dword [ebp]
push dword [esp + 0x70]
shr ebx, 4
movzx edi, bl
mov dword [esp + 0x78], ebp
movzx ecx, byte [edi + 0x7c05c0]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x8c]
mov dword [ecx], eax
call fcn.0050a2f0
mov ecx, dword [esp + 0x20]
add esp, 4
cmp byte [edi + 0x7c06c0], al
mov eax, dword [esp + 0x20]
setne byte [esp + 0x60]
je 0x4ff996
neg ecx
adc eax, 0
neg eax
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x14]
push 0
push dword [esp + 0x64]
mov dword [edx], ecx
push ebx
push esi
mov dword [edx + 4], eax
call fcn.004ff080
mov eax, dword [esi + 4]
add esp, 0x10
or dword [esi], 0x1000
mov ecx, dword [esp + 0x74]
mov ebp, ecx
and dword [esi], 0xffffbfff
mov dword [esi + 4], eax
mov dword [esi + 4], eax
jmp 0x4ff9ef
mov ecx, dword [esp + 0x74]
mov eax, dword [esi + 4]
mov ebp, ecx
mov ebx, dword [esp + 0x14]
and dword [esi], 0xffffbfff
mov dword [esi + 4], eax
jmp 0x4ff9ef
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x34]
dec ecx
mov eax, dword [esp + 0x38]
add edi, 8
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x34], edi
test ecx, ecx
jne 0x4ff290
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x40]
jmp 0x4ffa20
lea ebp, [esi + 0x10]
mov eax, dword [esp + 0x3c]
add ecx, dword [esp + 0x64]
add eax, 4
add edx, dword [esp + 0x68]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x40], edx
cmp eax, dword [esp + 0x54]
jb 0x4ff250
jmp 0x4ffa4a
lea ebp, [esi + 0x10]
cmp byte [esp + 0x80], 0
je 0x4ffab2
mov eax, dword [ebp]
add eax, 0x48
push esi
mov dword [esi + 0xc], eax
call fcn.0050a2f0
push esi
mov byte [esp + 0x88], al
call fcn.0050a2f0
push esi
mov bh, al
call fcn.0050a2f0
push esi
mov bl, al
call fcn.0050a2f0
movzx edx, byte [esp + 0x90]
add esp, 0x10
add edx, edx
movzx ecx, bh
or edx, ecx
movzx esi, al
add edx, edx
movzx eax, bl
or edx, eax
add edx, edx
or esi, edx
cmp esi, 0xa
je 0x4ffab2
push str.warning:_bad_segmentation_symbol_n
call fcn.004f71f0
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret