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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov edi, dword [esp + 0xc8]
mov eax, 0xffffffb8
cmp edi, 0x1ffff
ja 0x4e7758
cmp edi, 3
jae 0x4e7763
mov eax, 0xffffffec
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, dword [esp + 0xc4]
movzx esi, byte [ebp]
mov ebx, esi
shr ebx, 6
jmp dword [ebx*4 + 0x852500]
mov dword [esp + 0x14], esi
cmp edi, 5
jb case.default.0x4e7773
mov eax, dword [esp + 0x14]
shr eax, 4
and eax, 3
movzx ebx, byte [ebp + 1]
cmp eax, 2
je 0x4e7d1a
cmp eax, 3
jne 0x4e7d6e
mov esi, dword [esp + 0x14]
and esi, 0xf
shl esi, 0xe
shl ebx, 6
or ebx, esi
movzx edi, byte [ebp + 2]
mov eax, edi
shr eax, 2
or eax, ebx
cmp eax, 0x20000
ja case.default.0x4e7773
mov ebx, eax
and edi, 3
shl edi, 0x10
movzx eax, byte [ebp + 3]
shl eax, 8
or eax, edi
movzx esi, byte [ebp + 4]
lea ebp, [esi + eax]
add ebp, 5
mov dword [esp], ebp
cmp ebp, dword [esp + 0xc8]
ja case.default.0x4e7773
mov dword [esp + 8], edx
or eax, esi
mov edx, 5
mov ebp, dword [esp + 0xc4]
jmp 0x4e7dc6
mov ebx, esi
shr ebx, 4
and ebx, 3
cmp ebx, 2
mov dword [esp + 8], edx
je 0x4e7974
cmp ebx, 3
jne 0x4e79a5
mov ebx, edi
mov edx, esi
and edx, 0xf
shl edx, 0x10
movzx esi, byte [ebp + 1]
shl esi, 8
or esi, edx
movzx edx, byte [ebp + 2]
or edx, esi
mov esi, 3
jmp 0x4e79b1
mov eax, esi
shr eax, 4
and eax, 3
cmp eax, 2
je 0x4e798b
cmp eax, 3
jne 0x4e7a4c
cmp edi, 3
je case.default.0x4e7773
mov edi, edx
and esi, 0xf
shl esi, 0x10
movzx eax, byte [ebp + 1]
shl eax, 8
or eax, esi
movzx esi, byte [ebp + 2]
or esi, eax
mov edx, ebp
mov eax, 3
cmp esi, 0x20000
jbe 0x4e7a58
jmp case.default.0x4e7773
mov eax, esi
and eax, 0x30
cmp eax, 0x10
jne case.default.0x4e7773
cmp dword [ecx + 0x5450], 0
je 0x4e7d10
mov dword [esp + 0x14], esi
movzx eax, byte [ebp + 1]
mov dword [esp + 0x30], eax
and eax, 3
shl eax, 8
movzx esi, byte [ebp + 2]
lea ebx, [eax + esi]
add ebx, 3
cmp ebx, edi
ja case.default.0x4e7773
movzx edi, byte [ecx + 0x140d]
shl edi, 8
cmp edi, 0x100
jne case.default.0x4e7773
mov dword [esp], ebx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x14]
and edx, 0xf
shl edx, 6
mov ebx, dword [esp + 0x30]
shr ebx, 2
or ebx, edx
or eax, esi
lea edx, [ecx + 0x54cc]
mov dword [esp + 0xc], ecx
lea edi, [ecx + 0x140c]
lea esi, [ebp + 3]
mov ebp, ebx
mov ebx, edx
mov ecx, edx
mov edx, ebp
push edi
push eax
push esi
call fcn.004e60d0
add esp, 0xc
cmp eax, 0xffffff88
ja case.default.0x4e7773
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x54b8], ebx
mov dword [ecx + 0x54c8], ebp
mov dword [ecx + ebp + 0x54d0], 0
mov dword [ecx + ebp + 0x54cc], 0
mov edx, dword [esp + 8]
mov eax, 0xffffffb8
mov edi, dword [esp + 0xc8]
jmp 0x4e7e30
mov edx, esi
mov ebx, edi
and edx, 0xf
shl edx, 8
movzx esi, byte [ebp + 1]
or edx, esi
mov esi, 2
jmp 0x4e79b1
mov edi, edx
and esi, 0xf
shl esi, 8
movzx eax, byte [ebp + 1]
or esi, eax
mov edx, ebp
mov eax, 2
jmp 0x4e7a58
mov ebx, edi
mov edx, esi
and edx, 0x1f
mov esi, 1
lea ebp, [esi + edx]
lea edi, [esi + edx]
add edi, 8
cmp edi, ebx
mov edi, ebx
jbe 0x4e7a27
cmp ebp, edi
ja case.default.0x4e7773
mov dword [esp], ebp
mov ebx, edi
lea edi, [ecx + 0x54cc]
add esi, dword [esp + 0xc4]
mov ebp, edx
push edx
push esi
push edi
mov esi, ecx
call fcn.004f8d80
mov eax, 0xffffffb8
mov ecx, esi
mov edx, dword [esp + 0x14]
add esp, 0xc
mov dword [esi + 0x54b8], edi
mov edi, ebx
mov ebx, dword [esp]
mov dword [esi + 0x54c8], ebp
mov dword [esi + ebp + 0x54d0], 0
mov dword [esi + ebp + 0x54cc], 0
mov esi, edi
sub esi, ebx
je 0x4e7758
jmp 0x4e7aa6
add esi, dword [esp + 0xc4]
mov dword [ecx + 0x54b8], esi
mov dword [ecx + 0x54c8], edx
mov ebx, ebp
mov edx, dword [esp + 8]
mov esi, edi
sub esi, ebx
je 0x4e7758
jmp 0x4e7aa6
mov edi, edx
and esi, 0x1f
mov edx, ebp
mov eax, 1
mov dword [esp], eax
mov ebp, esi
lea ebx, [ecx + 0x54cc]
lea eax, [esi + 8]
mov esi, dword [esp]
movzx esi, byte [edx + esi]
push eax
push esi
push ebx
mov esi, edi
mov edi, ecx
call fcn.004f8b70
mov eax, 0xffffffb8
mov ecx, edi
mov edi, dword [esp + 0xd4]
mov edx, esi
add esp, 0xc
mov dword [ecx + 0x54b8], ebx
mov ebx, dword [esp]
mov dword [ecx + 0x54c8], ebp
inc ebx
mov esi, edi
sub esi, ebx
je 0x4e7758
add ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xc0]
add edi, edx
mov dword [esp + 0x30], edi
mov ebp, dword [ecx + 0x54b8]
mov edi, dword [ecx + 0x54c8]
mov dword [esp + 0x14], ebp
add edi, ebp
mov dword [esp], ebx
movzx ebx, byte [ebx]
test ebx, ebx
je 0x4e7c8c
mov dword [esp + 8], edx
mov ebp, dword [ecx + 0x5414]
mov dword [esp + 0x1c], ebp
mov edx, dword [ecx + 0x5418]
mov ebp, dword [ecx + 0x541c]
mov dword [esp + 0xa8], ebp
mov ebp, dword [ecx + 0x5454]
mov dword [esp + 4], ebp
test bl, bl
mov dword [esp + 0x34], ebx
js 0x4e7cc7
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edx, dword [esp]
lea ebp, [edx + 1]
mov ebx, dword [esp + 0xc4]
add ebx, dword [esp + 0xc8]
lea esi, [ebp + 4]
cmp esi, ebx
ja 0x4e7758
mov edi, ebx
movzx ebx, byte [ebp]
mov edx, ebx
shr edx, 6
inc ebp
mov eax, edi
sub eax, ebp
mov dword [esp + 0xc], ecx
mov esi, dword [esp + 4]
push esi
push 6
push 0x8527c0
push eax
push ebp
push 9
push 0x23
call fcn.004eaa70
add esp, 0x1c
cmp eax, 0xffffff88
ja case.default.0x4e7773
mov ecx, dword [esp + 0xc]
add ecx, 0x804
add ebp, eax
mov edx, ebx
shr edx, 4
and edx, 3
mov eax, edi
sub eax, ebp
push esi
push 5
push 0x852808
push eax
push ebp
push 8
push 0x1c
call fcn.004eaa70
add esp, 0x1c
cmp eax, 0xffffff88
ja case.default.0x4e7773
mov esi, dword [esp + 0xc]
lea ecx, [esi + 0xc08]
shr ebx, 2
and ebx, 3
add ebp, eax
mov eax, edi
sub eax, ebp
mov edx, ebx
push dword [esp + 4]
push 6
push 0x852842
push eax
push ebp
push 9
push 0x34
call fcn.004eaa70
add esp, 0x1c
mov ecx, eax
mov eax, 0xffffffec
cmp ecx, 0xffffff88
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
ja 0x4e7758
add ebp, ecx
mov eax, ebp
sub eax, dword [esp]
cmp eax, 0xffffff88
ja 0x4e7758
mov dword [esp], ebp
cmp dword [esp + 0x34], 0
je 0x4e7e9b
mov dword [esi + 0x5454], 1
mov eax, dword [esi + 0x542c]
mov dword [esp + 0x70], eax
movsd xmm0, qword [esi + 0x5424]
movsd qword [esp + 0x68], xmm0
mov ecx, edi
mov esi, dword [esp]
sub ecx, esi
je case.default.0x4e7773
mov dword [esp + 0x4c], esi
cmp ecx, 4
jb 0x4e7ea6
lea eax, [esi + ecx]
add eax, 0xfffffffc
mov dword [esp + 0x48], eax
mov edi, dword [esi + ecx - 4]
mov dword [esp + 0x40], edi
cmp edi, 0x1000000
jb case.default.0x4e7773
cmp ecx, 0xffffff88
ja case.default.0x4e7773
add ecx, 0xfffffffc
mov dword [esp + 4], ecx
mov eax, edi
shr eax, 0x18
bsr eax, eax
not eax
add eax, 9
jmp 0x4e7efe
mov ebp, edx
mov ebx, dword [esp + 0x14]
mov ecx, edi
sub edi, ebx
mov esi, dword [esp + 0x30]
sub esi, ebp
mov eax, 0xffffffba
cmp edi, esi
ja 0x4e7758
cmp ecx, ebx
je 0x4e7cbe
push edi
push ebx
push ebp
mov ebx, edx
call fcn.004f8d80
mov edx, ebx
add esp, 0xc
add ebp, edi
mov eax, ebp
sub eax, edx
jmp 0x4e7758
cmp ebx, 0xff
je 0x4e7e42
cmp esi, 2
mov ebx, dword [esp + 0xc4]
jl 0x4e7758
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x34]
shl edi, 8
mov edx, dword [esp]
lea ebp, [edx + 2]
movzx esi, byte [edx + 1]
add edi, esi
add edi, 0xffff8000
mov dword [esp + 0x34], edi
jmp 0x4e7b29
mov eax, 0xffffffe2
jmp 0x4e7758
mov dword [esp + 0x30], ebx
movzx eax, byte [ebp + 2]
mov dword [esp + 4], eax
and eax, 0x3f
shl eax, 8
movzx ebx, byte [ebp + 3]
mov dword [esp + 0x34], ebx
add ebx, eax
add ebx, 4
mov dword [esp], ebx
cmp dword [esp], edi
ja case.default.0x4e7773
mov dword [esp + 8], edx
mov esi, dword [esp + 0x14]
and esi, 0xf
shl esi, 0xa
mov edx, dword [esp + 0x30]
lea edx, [esi + edx*4]
mov ebx, dword [esp + 4]
shr ebx, 6
or ebx, edx
add eax, dword [esp + 0x34]
mov edx, 4
jmp 0x4e7dc6
mov esi, ebx
and esi, 3
shl esi, 8
movzx eax, byte [ebp + 2]
mov dword [esp + 4], eax
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 4]
add ebx, esi
add ebx, 3
mov dword [esp], ebx
cmp dword [esp], edi
ja case.default.0x4e7773
mov eax, esi
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x14]
mov edx, ebx
and edx, 0xf
shl edx, 6
mov edi, dword [esp + 0x30]
shr edi, 2
or edi, edx
add eax, dword [esp + 4]
mov edx, 3
test bl, 0x10
jne 0x4e7e76
mov ebx, edi
lea edi, [ecx + 0x140c]
mov esi, ecx
add ecx, 0x54cc
add edx, ebp
push eax
push edx
push ebx
push ecx
push edi
call fcn.004e7070
add esp, 0x14
cmp eax, 0xffffff88
mov edx, dword [esp + 8]
mov eax, 0xffffffb8
mov edi, dword [esp + 0xc8]
ja case.default.0x4e7773
mov ecx, esi
add esi, 0x54cc
mov dword [ecx + 0x54b8], esi
mov dword [ecx + 0x54c8], ebx
mov dword [ecx + 0x5450], 1
mov dword [ecx + ebx + 0x54d0], 0
mov dword [ecx + ebx + 0x54cc], 0
mov ebx, dword [esp]
mov esi, edi
sub esi, ebx
je 0x4e7758
jmp 0x4e7aa6
cmp esi, 3
mov ebx, dword [esp + 0xc4]
jl 0x4e7758
mov dword [esp + 0x8c], edx
mov dword [esp + 0x74], edi
mov edx, dword [esp]
lea ebp, [edx + 3]
movzx esi, word [edx + 1]
add esi, 0x7f00
mov dword [esp + 0x34], esi
jmp 0x4e7b29
lea edx, [ecx + 0x140c]
mov esi, ecx
add ecx, 0x54cc
lea ebx, [ebp + 3]
push eax
push ebx
push edi
push ecx
push edx
call fcn.004e4c50
add esp, 0x14
mov ebx, edi
jmp 0x4e7de3
mov ebp, edx
mov edi, dword [esp + 0x74]
jmp 0x4e7c92
mov dword [esp + 0x48], esi
movzx edi, byte [esi]
mov dword [esp + 0x40], edi
cmp ecx, 2
je 0x4e7ec8
mov edx, ecx
cmp ecx, 3
jne 0x4e7ed7
movzx eax, byte [esi + 2]
shl eax, 0x10
or edi, eax
jmp 0x4e7eca
mov edx, ecx
movzx eax, byte [esi + 1]
shl eax, 8
add edi, eax
mov dword [esp + 0x40], edi
movzx eax, byte [esi + edx - 1]
test eax, eax
je case.default.0x4e7773
bsr eax, eax
xor eax, 0x1f
shl edx, 3
sub eax, edx
add eax, 9
mov dword [esp + 0x44], eax
mov dword [esp + 4], 0
mov esi, edi
mov ecx, eax
shl esi, cl
mov ecx, dword [esp + 0xc]
movzx ebx, word [ecx]
shr esi, 1
mov cl, 0x1f
sub cl, bl
shr esi, cl
mov ch, 0x1f
add eax, ebx
mov dword [esp + 0x50], esi
cmp eax, 0x20
ja 0x4e7f86
mov edx, dword [esp + 4]
cmp edx, 4
jge 0x4e7f5f
mov ebx, dword [esp]
lea esi, [ebx + edx]
mov ecx, esi
sub ecx, ebx
je 0x4e8b18
mov edi, eax
shr edi, 3
sub esi, edi
mov edx, dword [esp]
cmp esi, edx
cmovb edi, ecx
mov ecx, dword [esp + 4]
sub ecx, edi
mov dword [esp + 4], ecx
add ecx, edx
mov dword [esp + 0x48], ecx
shl edi, 3
sub eax, edi
jmp 0x4e7f76
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov dword [esp + 4], edx
mov ecx, dword [esp]
add ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov edi, dword [edx + ecx]
mov dword [esp + 0x40], edi
mov ch, 0x1f
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 4]
mov esi, edi
mov cl, al
shl esi, cl
mov dword [esp + 0x54], edx
movzx ebx, word [ebx + 0x804]
shr esi, 1
sub ch, bl
mov cl, ch
shr esi, cl
add eax, ebx
mov dword [esp + 0x58], esi
cmp eax, 0x20
ja 0x4e8014
mov edx, dword [esp + 4]
cmp edx, 4
jge 0x4e7fef
mov esi, dword [esp]
add edx, esi
mov ecx, edx
sub ecx, esi
je 0x4e8b25
mov esi, eax
shr esi, 3
sub edx, esi
mov edi, dword [esp]
cmp edx, edi
cmovb esi, ecx
mov ecx, dword [esp + 4]
sub ecx, esi
mov dword [esp + 4], ecx
add ecx, edi
mov dword [esp + 0x48], ecx
shl esi, 3
sub eax, esi
jmp 0x4e8006
mov ecx, eax
shr ecx, 3
sub edx, ecx
mov dword [esp + 4], edx
mov ecx, dword [esp]
add ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov edi, dword [edx + ecx]
mov dword [esp + 0x40], edi
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
lea ecx, [esi + 0x808]
mov dword [esp + 0x5c], ecx
mov ecx, eax
shl edi, cl
movzx ebx, word [esi + 0xc08]
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add eax, ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edi
cmp eax, 0x20
ja 0x4e8099
mov edx, dword [esp + 4]
mov ecx, dword [esp]
add ecx, edx
cmp edx, 4
jge 0x4e807d
mov esi, ecx
sub esi, dword [esp]
mov edx, dword [esp + 8]
je 0x4e8099
mov edx, eax
shr edx, 3
mov edi, ecx
sub edi, edx
cmp edi, dword [esp]
cmovb edx, esi
sub ecx, edx
mov dword [esp + 0x48], ecx
shl edx, 3
sub eax, edx
jmp 0x4e808b
mov edx, eax
shr edx, 3
sub ecx, edx
mov dword [esp + 0x48], ecx
and eax, 7
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
lea eax, [ebp + 0x5424]
mov dword [esp + 0x98], eax
add ebp, 0xc0c
mov dword [esp + 0x64], ebp
mov eax, dword [esp + 0x30]
lea ecx, [eax - 8]
mov dword [esp + 0x38], ecx
add eax, 0xfffffff3
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + 8]
mov dword [esp + 0x94], ecx
lea ecx, [eax + 0x10]
mov dword [esp + 0x7c], ecx
add eax, 0x18
mov dword [esp + 0x90], eax
mov dword [esp], edx
mov ebx, dword [esp + 0x14]
jmp 0x4e811a
push ebp
push eax
push ebx
call fcn.004f8d88
add esp, 0xc
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
add ebx, dword [esp + 0x84]
mov ecx, dword [esp + 0x24]
mov eax, ecx
cmp ecx, 0xffffff89
jae 0x4e7758
mov ebp, dword [esp]
mov esi, dword [esp + 0x44]
cmp esi, 0x21
jae 0x4e8aea
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
lea eax, [ecx + 4]
mov dword [esp + 0x10], eax
cmp edi, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebx
jae 0x4e816e
mov eax, edi
sub eax, ecx
je 0x4e8186
mov ecx, esi
shr ecx, 3
mov ebx, edi
sub edi, ecx
cmp edi, dword [esp + 0x18]
mov edi, ebx
mov ebx, dword [esp + 0x14]
cmovb ecx, eax
sub edi, ecx
mov dword [esp + 0x48], edi
shl ecx, 3
sub esi, ecx
jmp 0x4e817c
mov eax, esi
shr eax, 3
sub edi, eax
mov dword [esp + 0x48], edi
and esi, 7
mov dword [esp + 0x44], esi
mov eax, dword [edi]
mov dword [esp + 0x40], eax
sub dword [esp + 0x34], 1
jb 0x4e8afa
mov dword [esp], edi
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], ecx
movzx eax, byte [ecx + eax*4 + 2]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x80], ecx
movzx eax, byte [ecx + eax*4 + 2]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
movzx ebx, byte [ecx + eax*4 + 2]
test ebx, ebx
mov dword [esp + 0x84], eax
mov dword [esp + 0x28], ecx
je 0x4e824a
mov edi, dword [esp + 0x40]
mov eax, esi
mov ecx, eax
shl edi, cl
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add eax, ebx
mov dword [esp + 0x44], eax
mov esi, eax
cmp eax, 0x20
ja 0x4e826d
mov ecx, dword [esp]
cmp ecx, dword [esp + 0x10]
jae 0x4e824e
mov dword [esp + 0xc], edi
mov eax, ecx
sub eax, dword [esp + 0x18]
je 0x4e82b3
mov dword [esp + 4], esi
shr esi, 3
mov edi, ecx
sub edi, esi
cmp edi, dword [esp + 0x18]
cmovb esi, eax
mov eax, dword [esp + 4]
sub ecx, esi
mov dword [esp + 0x48], ecx
shl esi, 3
sub eax, esi
mov edi, dword [esp + 0xc]
jmp 0x4e825e
xor edi, edi
jmp 0x4e8279
mov eax, esi
shr eax, 3
sub ecx, eax
mov eax, esi
mov dword [esp + 0x48], ecx
and eax, 7
mov esi, eax
mov dword [esp + 0x44], eax
mov dword [esp], ecx
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
add edi, dword [ebx*4 + 0x852b74]
cmp ebx, 1
jne 0x4e82c3
mov ecx, 1
sub ecx, edi
cmp edi, 2
cmovae ecx, edi
cmp dword [esp + 0x20], 0
cmovne ecx, edi
test ecx, ecx
je 0x4e82ad
mov edi, dword [esp + ecx*4 + 0x68]
cmp ecx, 1
je 0x4e82a3
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
jmp 0x4e82cf
mov edi, dword [esp + 0x68]
jmp 0x4e82d3
mov edi, dword [esp + 0xc]
add edi, dword [ebx*4 + 0x852b74]
cmp ebx, 1
je 0x4e8279
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 0x6c], xmm0
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x24]
mov ebx, dword [eax*4 + 0x85293c]
mov dword [esp + 4], 0
cmp al, 0x20
jb 0x4e8308
mov eax, dword [esp + 0x40]
mov ecx, esi
shl eax, cl
shr eax, 1
mov cl, 0x1f
sub cl, bl
shr eax, cl
mov dword [esp + 4], eax
mov eax, esi
add eax, ebx
mov esi, eax
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx*4 + 0x8528ac]
mov dword [esp + 0x2c], eax
add ebx, eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax*4 + 0x852aa0]
cmp ebx, 0x19
mov dword [esp + 0xc], edi
mov dword [esp + 0x78], eax
jb 0x4e836e
mov ebx, esi
cmp esi, 0x20
mov esi, dword [esp]
ja 0x4e838d
cmp esi, dword [esp + 0x10]
jae 0x4e8375
mov eax, esi
sub eax, dword [esp + 0x18]
je 0x4e838d
mov ecx, ebx
shr ecx, 3
mov edi, dword [esp]
sub edi, ecx
cmp edi, dword [esp + 0x18]
mov esi, dword [esp]
cmovb ecx, eax
sub esi, ecx
mov dword [esp + 0x48], esi
shl ecx, 3
sub ebx, ecx
mov ecx, dword [esp + 0x20]
jmp 0x4e8383
mov ebx, esi
mov esi, dword [esp]
jmp 0x4e838d
mov eax, ebx
shr eax, 3
sub esi, eax
mov dword [esp + 0x48], esi
and ebx, 7
mov dword [esp + 0x44], ebx
mov eax, dword [esi]
mov dword [esp + 0x40], eax
mov eax, dword [ecx*4 + 0x852a10]
mov dword [esp + 0x88], eax
mov dword [esp + 0x20], 0
cmp cl, 0x10
jb 0x4e83ca
mov eax, dword [esp + 0x40]
mov ecx, ebx
shl eax, cl
shr eax, 1
mov cl, 0x1f
mov edi, ebx
mov ebx, dword [esp + 0x2c]
sub cl, bl
shr eax, cl
mov dword [esp + 0x20], eax
add edi, ebx
mov ebx, edi
mov dword [esp + 0x44], edi
cmp ebx, 0x20
mov dword [esp + 0x2c], ebp
jbe 0x4e83d8
mov dword [esp], esi
jmp 0x4e841e
cmp esi, dword [esp + 0x10]
jae 0x4e8403
mov eax, esi
mov ebp, dword [esp + 0x18]
sub eax, ebp
je 0x4e83d3
mov ecx, ebx
shr ecx, 3
mov edi, esi
sub edi, ecx
cmp edi, ebp
cmovb ecx, eax
sub esi, ecx
mov dword [esp + 0x48], esi
shl ecx, 3
sub ebx, ecx
jmp 0x4e8411
mov eax, ebx
shr eax, 3
sub esi, eax
mov dword [esp + 0x48], esi
and ebx, 7
mov dword [esp + 0x44], ebx
mov dword [esp], esi
mov eax, dword [esi]
mov dword [esp + 0x40], eax
mov eax, ebx
mov ebp, dword [esp + 0x40]
mov ebx, ebp
mov ecx, eax
shl ebx, cl
mov esi, dword [esp + 0xa4]
mov edi, dword [esp + 0xa0]
movzx ecx, byte [edi + esi*4 + 3]
mov dword [esp + 0x24], ecx
shr ebx, 1
mov cl, 0x1f
sub cl, byte [esp + 0x24]
shr ebx, cl
movzx ecx, word [edi + esi*4]
add ebx, ecx
add eax, dword [esp + 0x24]
mov dword [esp + 0x44], eax
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x80]
movzx edi, word [esi + ecx*4]
mov dword [esp + 0x24], edi
movzx ebx, byte [esi + ecx*4 + 3]
mov edi, ebp
mov ecx, eax
shl edi, cl
shr edi, 1
mov cl, 0x1f
sub cl, bl
shr edi, cl
add edi, dword [esp + 0x24]
add eax, ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edi
cmp eax, 0x20
mov ecx, eax
ja 0x4e84e2
mov edi, dword [esp]
cmp edi, dword [esp + 0x10]
jae 0x4e84ca
mov eax, edi
mov ebx, dword [esp + 0x18]
sub eax, ebx
je 0x4e84e2
mov esi, ecx
shr esi, 3
mov edi, dword [esp]
sub edi, esi
cmp edi, ebx
mov edi, dword [esp]
cmovb esi, eax
sub edi, esi
mov dword [esp + 0x48], edi
shl esi, 3
sub ecx, esi
jmp 0x4e84d8
mov eax, ecx
shr eax, 3
sub edi, eax
mov dword [esp + 0x48], edi
and ecx, 7
mov dword [esp + 0x44], ecx
mov ebp, dword [edi]
mov dword [esp + 0x40], ebp
shl ebp, cl
mov esi, ecx
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x28]
movzx ebx, byte [edi + eax*4 + 3]
shr ebp, 1
mov cl, 0x1f
sub cl, bl
shr ebp, cl
movzx eax, word [edi + eax*4]
add ebp, eax
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x20]
add eax, ecx
add esi, ebx
mov ebx, eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x58], ebp
lea edi, [eax + 8]
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x2c]
sub ecx, ebp
mov eax, 0xffffffba
cmp edi, ecx
ja 0x4e7758
mov edi, dword [esp + 4]
mov esi, dword [esp + 0x78]
add esi, edi
mov dword [esp + 0x28], esi
add esi, ebx
mov dword [esp + 0x24], esi
cmp esi, ecx
mov edi, dword [esp + 0x14]
ja 0x4e7758
mov eax, dword [esp + 0x74]
sub eax, edi
cmp eax, ebx
jb case.default.0x4e7773
lea eax, [ebx + ebp]
lea ecx, [ebp + 8]
cmp eax, ecx
cmova ecx, eax
lea esi, [ebx + ebp]
mov edi, ebp
not ebp
add ebp, ecx
mov eax, edi
mov ecx, dword [esp + 0x14]
mov dword [esp], ebp
cmp ebp, 0x18
mov ebp, edi
mov dword [esp + 0x84], ebx
mov dword [esp + 0x10], esi
jb 0x4e85e5
mov edi, ebp
mov ecx, dword [esp + 0x14]
sub edi, ecx
mov eax, ebp
cmp edi, 0x20
jb 0x4e85e5
mov ebx, dword [esp]
shr ebx, 3
inc ebx
mov dword [esp], ebx
and ebx, 0xfffffffc
lea eax, [ebx*8]
add eax, ebp
mov esi, dword [esp + 0x14]
lea ecx, [esi + ebx*8]
xor edi, edi
movups xmm0, xmmword [esi + edi*8]
movups xmm1, xmmword [esi + edi*8 + 0x10]
movups xmmword [ebp + edi*8], xmm0
movups xmmword [ebp + edi*8 + 0x10], xmm1
add edi, 4
cmp ebx, edi
jne 0x4e85c2
cmp dword [esp], ebx
mov esi, dword [esp + 0x10]
je 0x4e85f7
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, esi
jb 0x4e85e5
mov eax, dword [esp + 0x24]
add eax, ebp
mov dword [esp], eax
mov edi, esi
mov ebp, dword [esp + 0xc]
sub edi, ebp
mov ecx, esi
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
cmp ecx, ebp
mov ecx, dword [esp + 0x8c]
jae 0x4e8682
mov eax, esi
mov ebx, esi
sub eax, ecx
cmp eax, ebp
mov ebp, dword [esp + 0x28]
jb case.default.0x4e7773
mov esi, edi
mov edi, dword [esp + 0x1c]
sub esi, edi
mov edx, dword [esp + 0xa8]
lea eax, [edx + esi]
lea ecx, [eax + ebp]
cmp ecx, edx
jbe 0x4e80f1
mov ecx, esi
neg ecx
push ecx
push eax
push ebx
call fcn.004f8d88
add esp, 0xc
sub ebx, esi
mov dword [esp + 0x10], ebx
cmp ebx, dword [esp + 0x38]
ja 0x4e88aa
add ebp, esi
cmp ebp, 2
jbe 0x4e88aa
mov dword [esp + 0x28], ebp
mov esi, edi
mov edx, dword [esp + 8]
jmp 0x4e8684
mov esi, edi
mov edi, dword [esp + 0xc]
cmp edi, 7
ja 0x4e86c5
movzx eax, byte [esi]
mov ebx, dword [esp + 0x10]
mov byte [ebx], al
movzx eax, byte [esi + 1]
mov byte [ebx + 1], al
movzx eax, byte [esi + 2]
mov byte [ebx + 2], al
movzx eax, byte [esi + 3]
mov byte [ebx + 3], al
mov eax, dword [edi*4 + 0x852be8]
mov ecx, dword [esi + eax]
add eax, esi
mov dword [ebx + 4], ecx
sub eax, dword [edi*4 + 0x852c08]
mov esi, eax
jmp 0x4e86d1
movsd xmm0, qword [esi]
mov ebx, dword [esp + 0x10]
movsd qword [ebx], xmm0
add ebx, 8
mov dword [esp + 0x3c], esi
lea ebp, [esi + 8]
mov eax, dword [esp]
cmp eax, dword [esp + 0x9c]
jbe 0x4e882d
mov esi, dword [esp + 0x38]
cmp ebx, esi
mov ecx, dword [esp + 0x18]
jae 0x4e87de
cmp edi, ecx
cmova ecx, edi
mov eax, dword [esp + 0x7c]
lea edi, [eax + ecx]
cmp esi, edi
cmova edi, esi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x80], ecx
add eax, ecx
sub edi, eax
add edi, 0xfffffff7
mov eax, ebx
mov ecx, ebp
mov dword [esp + 0x28], edi
cmp edi, 0x18
jb 0x4e87bc
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
cmp eax, ecx
mov edi, ecx
cmova edi, eax
add edi, dword [esp + 0x1c]
sub edi, dword [esp + 0x3c]
mov eax, ebx
mov ecx, ebp
cmp edi, 0x20
jb 0x4e87bc
mov eax, dword [esp + 0x28]
shr eax, 3
inc eax
mov dword [esp + 0x28], eax
mov ecx, eax
and ecx, 0xfffffffc
lea eax, [ebx + ecx*8]
mov dword [esp + 0x10], ecx
lea ecx, [ecx*8]
add ecx, ebp
mov edx, dword [esp + 0x90]
mov esi, dword [esp + 0x2c]
add edx, esi
mov edi, dword [esp + 0x80]
sub edi, esi
add edi, edx
xor edx, edx
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [esi + edx*8 + 8]
movups xmm1, xmmword [esi + edx*8 + 0x18]
movups xmmword [edi + edx*8 - 0x10], xmm0
movups xmmword [edi + edx*8], xmm1
add edx, 4
cmp dword [esp + 0x10], edx
jne 0x4e878e
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x28], edx
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x38]
je 0x4e87ce
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
add ecx, 8
cmp eax, esi
jb 0x4e87bc
mov eax, esi
sub eax, ebx
add ebp, eax
mov ebx, esi
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
cmp ebx, dword [esp]
jae 0x4e8100
mov esi, dword [esp + 4]
add esi, dword [esp + 0x20]
add esi, dword [esp + 0x78]
add esi, dword [esp + 0x88]
add esi, dword [esp + 0x2c]
cmp edi, ecx
mov eax, ecx
cmova eax, edi
add eax, dword [esp + 0x94]
cmp dword [esp + 0x38], eax
cmova eax, dword [esp + 0x38]
sub esi, eax
mov dword [esp + 4], esi
cmp esi, 8
jae 0x4e89ae
mov ecx, ebp
mov esi, ebx
jmp 0x4e8aa1
mov ecx, dword [esp + 4]
add ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x78]
mov esi, dword [esp + 0x18]
cmp edi, esi
mov eax, esi
cmovb eax, edi
cmova esi, edi
add eax, ecx
add eax, esi
sub eax, edi
mov ecx, dword [esp + 0x7c]
add ecx, esi
cmp eax, ecx
cmovbe eax, ecx
mov dword [esp + 0x20], esi
mov edi, dword [esp + 0x1c]
sub eax, esi
sub eax, edi
add eax, 0xfffffff7
cmp eax, 0x18
jb 0x4e888a
mov esi, edi
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
cmp ecx, edi
cmova edi, ecx
add edi, esi
sub edi, dword [esp + 0x3c]
cmp edi, 0x20
jae 0x4e89d7
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x28]
movsd xmm0, qword [ebp]
movsd qword [ebx], xmm0
add ebx, 8
add ebp, 8
cmp ebx, eax
jb 0x4e8892
jmp 0x4e8100
mov eax, dword [esp + 0x10]
cmp eax, dword [esp]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
jae 0x4e8100
mov eax, dword [esp + 4]
sub eax, dword [esp + 0x1c]
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x78]
add eax, dword [esp + 0x88]
add eax, dword [esp + 0x2c]
sub eax, ecx
mov dword [esp + 4], eax
cmp eax, 8
jb 0x4e8ab2
cmp dword [esp + 0xc], 0x20
jb 0x4e8ab2
xor eax, eax
mov ebx, 0
cmp dword [esp + 4], 0x20
jb 0x4e8954
mov ebx, dword [esp + 4]
and ebx, 0xffffffe0
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x2c]
lea edx, [esi + ecx]
mov ecx, dword [esp + 0xc]
sub ecx, esi
add ecx, edx
xor edx, edx
mov esi, dword [esp + 0x1c]
movups xmm0, xmmword [esi + edx]
movups xmm1, xmmword [esi + edx + 0x10]
movups xmmword [ecx + edx - 0x10], xmm0
movups xmmword [ecx + edx], xmm1
add edx, 0x20
cmp ebx, edx
jne 0x4e8922
cmp dword [esp + 4], ebx
mov edx, dword [esp + 8]
je 0x4e8100
test byte [esp + 4], 0x18
je 0x4e8ad8
mov edi, dword [esp + 4]
and edi, 0xfffffff8
mov esi, dword [esp + 0x1c]
lea ecx, [esi + edi]
add dword [esp + 0x10], edi
mov edx, dword [esp + 0xc]
add edx, ebx
mov ebp, dword [esp + 0x2c]
sub edx, ebp
add ebp, esi
add ebp, edx
mov dword [esp + 0xc], edi
mov edx, edi
sub edx, ebx
lea edi, [esi + ebx]
movsd xmm0, qword [edi + eax]
movsd qword [ebp + eax], xmm0
add eax, 8
cmp edx, eax
jne 0x4e8981
mov eax, dword [esp + 0xc]
cmp dword [esp + 4], eax
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
jne 0x4e8abe
jmp 0x4e8100
cmp edi, ecx
cmova ecx, edi
add ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x38]
cmp eax, ecx
cmova ecx, eax
sub ecx, ebp
cmp ecx, 0x20
jae 0x4e8a33
mov ecx, ebp
mov esi, ebx
mov edx, dword [esp + 8]
jmp 0x4e8aa1
shr eax, 3
inc eax
mov ecx, eax
and ecx, 0xfffffffc
lea ebx, [ebx + ecx*8]
mov dword [esp + 4], ecx
lea ebp, [ebp + ecx*8]
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
sub ecx, esi
add esi, dword [esp + 0x90]
add esi, ecx
xor edi, edi
mov ecx, dword [esp + 0x3c]
movups xmm0, xmmword [ecx + edi*8 + 8]
movups xmm1, xmmword [ecx + edi*8 + 0x18]
movups xmmword [esi + edi*8 - 0x10], xmm0
movups xmmword [esi + edi*8], xmm1
add edi, 4
cmp dword [esp + 4], edi
jne 0x4e8a04
cmp eax, dword [esp + 4]
mov eax, dword [esp + 0x10]
je 0x4e8100
jmp 0x4e888e
xor eax, eax
cmp dword [esp + 4], 0x20
jb 0x4e8a74
mov eax, dword [esp + 4]
and eax, 0xffffffe0
xor ecx, ecx
movups xmm0, xmmword [ebp + ecx]
movups xmm1, xmmword [ebp + ecx + 0x10]
movups xmmword [ebx + ecx], xmm0
movups xmmword [ebx + ecx + 0x10], xmm1
add ecx, 0x20
cmp eax, ecx
jne 0x4e8a45
cmp dword [esp + 4], eax
mov edx, dword [esp + 8]
je 0x4e8100
test byte [esp + 4], 0x18
je 0x4e8acf
mov edx, dword [esp + 4]
and edx, 0xfffffff8
lea ecx, [edx + ebp]
lea esi, [ebx + edx]
movsd xmm0, qword [ebp + eax]
movsd qword [ebx + eax], xmm0
add eax, 8
cmp edx, eax
jne 0x4e8a81
cmp dword [esp + 4], edx
mov edx, dword [esp + 8]
je 0x4e8100
movzx eax, byte [ecx]
inc ecx
mov byte [esi], al
inc esi
cmp esi, dword [esp]
jb 0x4e8aa1
jmp 0x4e8100
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
movzx eax, byte [ecx]
inc ecx
mov byte [esi], al
inc esi
cmp esi, dword [esp]
jb 0x4e8abe
jmp 0x4e8100
add ebx, eax
add ebp, eax
jmp 0x4e89ca
mov esi, dword [esp + 0x10]
add esi, ebx
add ebx, dword [esp + 0x1c]
mov ecx, ebx
mov edx, dword [esp + 8]
jmp 0x4e8abe
mov eax, 0xffffffec
cmp dword [esp + 0x34], 0
jne 0x4e7758
lea esi, [esp + 0x68]
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x98]
mov dword [ecx + 8], eax
movsd xmm0, qword [esi]
movsd qword [ecx], xmm0
jmp 0x4e7e9d
mov dword [esp + 4], 0
jmp 0x4e7f84
mov dword [esp + 4], 0
jmp 0x4e8014