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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xe8
mov edi, edx
mov edx, ecx
mov ecx, dword [esp + 0x100]
mov eax, dword [esp + 0xfc]
xor ebp, ebp
mov dword [ecx], 0
mov ebx, dword [eax + 0x10]
mov ecx, dword [eax + 0x14]
cmp ebx, ecx
ja 0x4fcb79
mov ebp, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], edi
mov dword [esp + 4], ecx
mov dword [esp], edx
lea esi, [ebp - 1]
mov dword [esp + 0x34], eax
cmp esi, 2
jb 0x4fb9ba
cmp byte [edx + 0x48], 3
mov esi, ebp
lea eax, [edx + 0x40]
mov ebp, 0x76842c
cmovne ebp, eax
cmp byte [ebp + 8], 2
mov dword [esp + 0x1c], ebp
mov ebp, esi
jne 0x4fbbe3
mov eax, dword [edx + 0x278]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x100]
cmp dword [eax + 0xc], 0
je 0x4fba8d
mov ebp, dword [esp + 0x100]
mov edi, dword [ebp + 0x10]
cmp dword [ebp + 0x14], 0
je 0x4fba77
bt edi, 0x1b
jae 0x4fcc01
mov eax, dword [esp + 0xc]
mov cl, byte [edx + 0x27c]
mov ebx, edi
and ebx, 0x7ffffff
mov edx, dword [eax + 0x94]
shr ebx, cl
cmp edx, ebx
jbe 0x4fcbb3
mov eax, dword [eax + 0x8c]
mov esi, dword [ebp + 0x18]
mov ecx, dword [eax + ebx*8]
mov edx, dword [eax + ebx*8 + 4]
call fcn.004fcca3
mov ecx, dword [esp + 4]
mov edx, dword [esp]
cmp esi, eax
jae 0x4fba77
lea eax, [esi + 1]
mov dword [ebp + 0x14], 1
mov dword [ebp + 0x18], eax
mov eax, dword [esp + 0x10]
xor ebp, ebp
cmp dword [eax + 0x150], 1
mov eax, 0
je 0x4fbcbe
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 0x94]
cmp edx, ebx
jbe 0x4fcbb3
mov eax, dword [eax + 0x8c]
jmp 0x4fbcae
mov ebx, dword [ebp + 0x1c]
inc ebx
mov dword [ebp + 0x1c], ebx
xor ebp, ebp
cmp ebx, ecx
jbe 0x4fc327
jmp 0x4fcb79
mov dword [eax + 0x1c], ebx
mov eax, ebx
sub eax, 1
mov dword [esp + 8], eax
jb 0x4fbcd9
mov esi, dword [esp + 0xfc]
cmp dword [esi + 0xc], eax
jbe 0x4fbcd9
mov eax, dword [edx + 0x258]
mov ecx, dword [edx + 0x260]
mov esi, dword [edx + 0x264]
or ecx, dword [edx + 0x270]
or eax, dword [edx + 0x268]
or esi, dword [edx + 0x274]
or eax, ecx
mov ecx, dword [edx + 0x25c]
or ecx, dword [edx + 0x26c]
or ecx, esi
or ecx, eax
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 8]
mov eax, dword [eax + 8]
mov al, byte [eax + ecx]
movzx ecx, al
mov dword [esp + 0x14], ecx
je 0x4fc2ca
mov ecx, dword [esp]
xor edx, edx
add ecx, 0x258
mov dword [esp + 0x18], ecx
mov ecx, eax
mov dword [esp + 0x94], edx
mov dword [esp + 0x90], edx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x88], 1
and al, 7
and cl, 0x78
shr cl, 3
neg cl
movsx esi, cl
mov ecx, eax
mov edi, dword [esp + esi + 0x90]
mov edx, dword [esp + esi + 0x94]
mov dword [esp + 0x5c], ebp
shld edx, edi, cl
shl edi, cl
not cl
mov dword [esp + 0x1c], edx
mov ebp, dword [esp + esi + 0x8c]
mov esi, dword [esp + esi + 0x88]
mov edx, ebp
shr edx, 1
shr edx, cl
mov ecx, eax
mov eax, dword [esp + 0x18]
or edx, edi
mov edi, dword [esp + 0x14]
shld ebp, esi, cl
shl esi, cl
mov ecx, dword [esp + 0x1c]
shr edi, 3
and edi, 0xfffffff0
and ecx, dword [eax + edi + 0xc]
and ebp, dword [eax + edi + 4]
and edx, dword [eax + edi + 8]
and esi, dword [eax + edi]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x1c], ecx
or esi, edx
or ebp, dword [esp + 0x1c]
or ebp, esi
mov ebp, dword [esp + 0x5c]
je 0x4fc2ca
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], 4
mov dword [esp + 0x28], eax
jmp 0x4fbe90
mov eax, dword [edx + 0x278]
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x58], eax
mov eax, dword [eax + 0x134]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x100]
cmp dword [eax + 0xc], 0
je 0x4fbd15
mov esi, dword [esp + 0x100]
mov eax, dword [esi + 0x10]
cmp dword [esi + 0x14], 0
mov dword [esp + 8], eax
je 0x4fbcff
mov ebx, dword [esp + 8]
bt ebx, 0x1b
jae 0x4fcc01
mov cl, byte [edx + 0x27c]
mov edx, dword [edi + 0x94]
and ebx, 0x7ffffff
shr ebx, cl
cmp edx, ebx
jbe 0x4fcbb3
mov eax, dword [esi + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + ebx*8]
mov edx, dword [eax + ebx*8 + 4]
call fcn.004fcca3
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 4]
cmp edx, eax
jae 0x4fbcff
lea eax, [edx + 1]
mov dword [esi + 0x14], 1
xor ebp, ebp
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x58]
cmp dword [eax + 0x150], 1
mov eax, 0
je 0x4fbcbe
mov esi, edx
mov edx, dword [edi + 0x94]
cmp edx, ebx
jbe 0x4fcbb3
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + ebx*8]
mov edx, dword [eax + ebx*8 + 4]
push esi
call fcn.004fccd8
add esp, 4
mov edx, dword [esp + 0x100]
mov ecx, dword [edx + 0x1c]
mov dword [edx], 1
mov dword [edx + 4], eax
mov dword [edx + 8], ecx
jmp 0x4fcb79
mov al, 2
mov esi, dword [esp + 0x34]
movzx ecx, al
test ebp, ebp
mov byte [esp + 0x14], al
je 0x4fc2f1
cmp ebp, 1
jne 0x4fbe7a
add ecx, 6
jmp 0x4fc2f1
mov ebx, dword [esi + 0x1c]
xor ebp, ebp
inc ebx
cmp ebx, ecx
mov dword [esi + 0x1c], ebx
jbe 0x4fbefe
jmp 0x4fcb79
mov dword [eax + 0x1c], ebx
mov eax, ebx
sub eax, 1
mov dword [esp + 8], eax
jb 0x4fbed2
mov ebp, dword [esp + 0xfc]
cmp dword [ebp + 0xc], eax
jbe 0x4fbed2
mov eax, dword [edx + 0x264]
mov ecx, dword [edx + 0x260]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x258]
or ecx, dword [edx + 0x270]
mov ebp, dword [esp + 0x10]
or eax, dword [edx + 0x268]
or ebp, dword [edx + 0x274]
or eax, ecx
mov ecx, dword [edx + 0x25c]
mov dword [esp + 0x10], ebp
or ecx, dword [edx + 0x26c]
or ecx, dword [esp + 0x10]
or ecx, eax
mov eax, dword [esp + 0xfc]
mov ecx, dword [esp + 8]
mov eax, dword [eax + 8]
mov al, byte [eax + ecx]
je 0x4fc81e
mov ecx, eax
xor edx, edx
mov dword [esp + 0xc8], 1
movzx ebp, al
and cl, 0x78
mov dword [esp + 0xd4], edx
mov dword [esp + 0xd0], edx
mov dword [esp + 0xcc], edx
mov dword [esp + 0xc4], edx
mov dword [esp + 0xc0], edx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xb8], edx
mov byte [esp + 0x10], al
shr cl, 3
mov al, byte [esp + 0x10]
neg cl
movsx ecx, cl
mov esi, dword [esp + ecx + 0xd0]
mov edx, dword [esp + ecx + 0xd4]
mov edi, ecx
mov dword [esp + 0x18], ecx
and al, 7
mov ecx, eax
shld edx, esi, cl
shl esi, cl
not cl
mov dword [esp + 0x14], edx
mov edx, dword [esp + edi + 0xcc]
mov dword [esp + 0x54], ebp
shr ebp, 3
and ebp, 0xfffffff0
mov edi, edx
shr edi, 1
shr edi, cl
mov ecx, dword [esp + 0x18]
or edi, esi
mov esi, dword [esp + ecx + 0xc8]
mov ecx, eax
shld edx, esi, cl
mov ecx, dword [esp]
add ecx, 0x258
mov dword [esp + 0x18], ecx
mov ecx, eax
mov eax, dword [esp + 0x18]
shl esi, cl
mov ecx, dword [esp + 0x14]
and edi, dword [eax + ebp + 8]
and esi, dword [eax + ebp]
and ecx, dword [eax + ebp + 0xc]
and edx, dword [eax + ebp + 4]
mov al, byte [esp + 0x10]
or esi, edi
mov edi, dword [esp + 0xc]
or edx, ecx
or edx, esi
je 0x4fc81e
mov eax, 4
jmp 0x4fcacd
test byte [edx + 0x4d], 1
jne 0x4fc2da
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], 2
mov eax, dword [esp + 0x24]
mov ecx, 2
lea edx, [eax - 3]
cmp edx, 2
cmovb ecx, edx
test ecx, ecx
je 0x4fcafc
mov edx, dword [esp + 0x28]
cmp ecx, 1
jne 0x4fcb65
test ebx, ebx
je 0x4fcc6b
lea ecx, [esp + 0x38]
mov byte [ecx + 1], dl
mov eax, dword [esp + 8]
mov dword [ecx + 4], eax
jmp 0x4fc808
mov al, 2
mov edx, dword [edi + 0x88]
movzx eax, al
cmp edx, eax
jbe 0x4fcbc7
mov ecx, dword [edi + 0x80]
mov ecx, dword [ecx + eax*4]
test ecx, ecx
js 0x4fc9fb
mov dword [esp + 8], ecx
mov ecx, dword [esp + 4]
cmp dword [edi + 0xb0], 0
je 0x4fbf25
mov eax, dword [edi + 0xb8]
mov ecx, dword [edi + 0xb4]
mov edx, eax
sub edx, ecx
neg edx
sub eax, ecx
mov ecx, dword [esp + 4]
cmovb eax, edx
add dword [edi + 0x70], eax
mov eax, dword [esp + 0xfc]
cmp ebx, ecx
mov dword [edi + 0xb0], 1
mov dword [edi + 0xb4], ebx
mov dword [edi + 0xb8], ebx
jae 0x4fc2bf
mov edx, dword [eax + 8]
mov ebp, dword [eax + 0xc]
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x54], eax
mov dword [esp + 0x14], edx
mov edx, dword [esp]
mov esi, dword [ecx + 4]
mov dword [esp + 0x10], ebp
lea eax, [edx + 0x258]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x34]
lea eax, [eax + eax*2]
lea eax, [eax + eax + 0xc]
mov dword [esp + 0x64], eax
mov eax, dword [ecx]
mov cl, byte [edx + 0x4d]
mov dword [esp + 0x18], eax
mov byte [esp + 0x23], cl
cmp ebx, ebp
jae 0x4fcba0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
movzx eax, byte [eax + ebx]
and ecx, 0x7ffffff
movzx edx, byte [edx + eax + 0x158]
add ecx, edx
mov edx, dword [edi + 0x7c]
cmp edx, ecx
jbe 0x4fcb0e
mov edx, dword [edi + 0x74]
mov ebp, dword [edx + ecx*4]
test ebp, ebp
js 0x4fc1d4
mov ecx, dword [esp + 4]
mov edx, dword [esp]
cmp ebp, 0x7ffffff
jbe 0x4fc198
mov eax, dword [esp + 0x100]
bt ebp, 0x1c
mov dword [eax + 0xc], 1
mov dword [eax + 0x10], ebp
jae 0x4fc7d4
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, dword [edi + 8]
dec eax
and eax, 0xfffffff8
lea eax, [eax + edx + 8]
push ecx
push ebx
push dword [esp + 0x18]
push dword [esp + 0x20]
push eax
lea eax, [esp + 0xec]
push eax
call dword [edi + 0x20]
add esp, 0x18
cmp dword [esp + 0xd8], 0
je 0x4fc9f4
mov edi, dword [esp + 0xdc]
mov edx, dword [esp]
cmp edi, ebx
jbe 0x4fc190
mov eax, dword [esp + 0x100]
cmp dword [esp + 0x6c], 0
mov ecx, dword [esp + 4]
mov dword [eax + 0x1c], edi
je 0x4fc25f
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ecx
cmp ebx, ecx
jb 0x4fcc17
cmp dword [esp + 0x54], edi
jb 0x4fcc17
mov ebp, dword [esp + 0x5c]
lea eax, [edi - 1]
cmp ebx, eax
mov dword [esp + 8], eax
jbe 0x4fc1c1
mov ebx, dword [esp + 0x60]
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx]
mov edx, dword [ebx + 8]
mov esi, dword [ebx + 4]
or edx, dword [ebx + 0x18]
or eax, dword [ebx + 0x10]
or ecx, dword [ebx + 0x1c]
or esi, dword [ebx + 0x14]
or esi, ecx
or eax, edx
mov ecx, dword [esp + 8]
or esi, eax
mov eax, dword [esp + 0x14]
mov ch, byte [eax + ecx]
movzx eax, ch
je 0x4fc187
mov dword [esp + 0x50], eax
mov al, ch
xor edx, edx
mov dword [esp + 0xa8], 1
and ch, 7
and al, 0x78
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xac], edx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], edx
mov dword [esp + 0x98], edx
mov cl, ch
shr al, 3
neg al
movsx ebx, al
mov esi, dword [esp + ebx + 0xb0]
mov eax, dword [esp + ebx + 0xb4]
shld eax, esi, cl
shl esi, cl
not cl
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x50]
mov edx, dword [esp + ebx + 0xac]
shr eax, 3
mov ebp, edx
and eax, 0xfffffff0
shr ebp, 1
shr ebp, cl
mov cl, ch
or ebp, esi
mov esi, dword [esp + ebx + 0xa8]
mov ebx, dword [esp + 0x60]
shld edx, esi, cl
shl esi, cl
mov ecx, dword [esp + 0x68]
and ebp, dword [ebx + eax + 8]
and esi, dword [ebx + eax]
and edx, dword [ebx + eax + 4]
and ecx, dword [ebx + eax + 0xc]
mov eax, dword [esp + 0x50]
or esi, ebp
mov ebp, dword [esp + 0x5c]
or edx, ecx
or edx, esi
jne 0x4fcb36
mov edx, dword [esp]
mov bl, byte [edx + eax + 0x58]
jmp 0x4fc1c3
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 4]
inc ebx
mov eax, dword [esp + 0x100]
cmp dword [edi + 0xb0], 0
mov dword [eax + 0x1c], ebx
je 0x4fcbd6
mov dword [edi + 0xb8], ebx
mov edi, ebx
mov dword [esp + 8], ebp
jmp 0x4fc265
mov bl, 2
movzx ecx, bl
test ebp, ebp
je 0x4fc229
cmp ebp, 1
jne 0x4fc202
add ecx, 6
jmp 0x4fc229
mov ecx, dword [esp]
mov edx, dword [esp + 8]
shl eax, 8
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edi
lea ecx, [esp + 0x38]
push eax
call fcn.006560e0
add esp, 4
test eax, eax
jne 0x4fcafc
mov ebp, edx
jmp 0x4fbfd0
test byte [esp + 0x23], 1
je 0x4fcb23
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x58]
mov byte [esp + 0x50], bl
cmp dword [esi + 0x150], eax
jbe 0x4fc27a
add ecx, dword [esp + 0x64]
mov bl, byte [esp + 0x50]
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 0x88]
cmp edx, ecx
jbe 0x4fcbc9
mov eax, dword [eax + 0x80]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 4]
test eax, eax
js 0x4fc287
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 5
mov ebp, dword [esp + 0x28]
mov edx, dword [esp]
mov dword [esp + 8], ebp
mov ebx, edi
cmp edi, ecx
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x10]
jb 0x4fbf93
jmp 0x4fc640
mov ecx, edx
call fcn.004faa8e
mov bl, byte [esp + 0x50]
jmp 0x4fc244
mov eax, dword [esp]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x3c], eax
movzx eax, bl
push eax
push dword [esp + 0x38]
push ebp
call fcn.00656fb8
mov ecx, dword [esp + 0x10]
add esp, 0xc
cmp dword [esp + 0x24], 5
je 0x4fc258
jmp 0x4fcb42
mov ebp, dword [eax + 0xc]
mov edx, dword [esp]
jmp 0x4fc647
mov edx, dword [esp]
mov eax, dword [esp + 0x14]
mov al, byte [edx + eax + 0x58]
jmp 0x4fbcdb
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x150], esi
jbe 0x4fc7c8
lea eax, [esi + esi*2]
lea ecx, [ecx + eax*2 + 0xc]
mov edx, dword [edi + 0x88]
cmp edx, ecx
jbe 0x4fcbc9
mov eax, dword [edi + 0x80]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 4]
test eax, eax
js 0x4fc82d
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 5
mov edi, dword [esp + 0x28]
mov edx, dword [esp]
mov esi, dword [esp + 0xc]
cmp dword [esi + 0xb0], 0
je 0x4fc355
mov eax, dword [esi + 0xb8]
mov ecx, dword [esi + 0xb4]
mov edx, eax
sub edx, ecx
neg edx
sub eax, ecx
mov ecx, dword [esp + 4]
cmovb eax, edx
mov edx, dword [esp]
add dword [esi + 0x70], eax
mov eax, dword [esp + 0xfc]
cmp ebx, ecx
mov dword [esi + 0xb0], 1
mov dword [esi + 0xb4], ebx
mov dword [esi + 0xb8], ebx
jae 0x4fc441
mov ebp, dword [eax + 0xc]
mov ecx, dword [eax + 8]
cmp ebx, ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 8], ecx
cmova ebp, ebx
cmp ebp, ebx
je 0x4fcb18
mov eax, dword [esp + 8]
mov ecx, dword [esp]
mov esi, dword [esp + 0xc]
movzx eax, byte [eax + ebx]
movzx edx, byte [ecx + eax + 0x158]
mov ecx, edi
and ecx, 0x7ffffff
add ecx, edx
mov edx, dword [esi + 0x7c]
cmp edx, ecx
jbe 0x4fcb0e
mov edx, dword [esi + 0x74]
mov esi, dword [esp + 0x100]
mov edx, dword [edx + ecx*4]
test edx, edx
js 0x4fc417
cmp edx, 0x7ffffff
jbe 0x4fc3ee
bt edx, 0x1c
mov dword [esi + 0xc], 1
mov dword [esi + 0x10], edx
jae 0x4fc55d
mov eax, dword [esp + 0xc]
inc ebx
mov dword [esi + 0x1c], ebx
cmp dword [eax + 0xb0], 0
je 0x4fcbd6
cmp dword [esp + 4], ebx
mov edi, edx
mov dword [eax + 0xb8], ebx
jne 0x4fc38d
jmp 0x4fc446
mov ecx, dword [esp]
shl eax, 8
mov edx, edi
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x3c], ecx
lea ecx, [esp + 0x38]
push eax
call fcn.006560e0
add esp, 4
test eax, eax
je 0x4fc3d2
jmp 0x4fcafc
mov ebp, dword [eax + 0xc]
jmp 0x4fc45a
mov edi, edx
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov eax, dword [esp + 0xfc]
mov ebp, dword [esp + 0x14]
cmp ecx, ebp
jae 0x4fc4d0
mov eax, dword [eax + 8]
mov esi, dword [esp + 0xc]
mov al, byte [eax + ecx]
mov ecx, edi
and ecx, 0x7ffffff
mov byte [esp + 8], al
movzx eax, al
movzx edx, byte [edx + eax + 0x158]
add ecx, edx
mov edx, dword [esi + 0x7c]
cmp edx, ecx
jbe 0x4fcb0e
mov edx, dword [esi + 0x74]
mov esi, dword [esp + 0x100]
mov ebx, dword [edx + ecx*4]
test ebx, ebx
js 0x4fc8ef
mov ecx, dword [esp]
bt ebx, 0x1b
jb 0x4fc529
xor ebp, ebp
bt ebx, 0x1d
jae 0x4fc514
mov al, byte [esp + 8]
lea ecx, [esp + 0x38]
mov byte [ecx + 1], al
mov eax, dword [esp + 4]
mov dword [ecx + 4], eax
mov byte [ecx], 0
call fcn.004f8c4d
mov ebp, eax
jmp 0x4fc514
mov esi, dword [esp + 0xc]
movzx eax, byte [edx + 0x257]
mov ecx, edi
and ecx, 0x7ffffff
mov edx, dword [esi + 0x7c]
lea ecx, [eax + ecx + 1]
cmp edx, ecx
jbe 0x4fcbbc
mov edx, dword [esi + 0x74]
mov esi, dword [esp + 0x100]
mov ebx, dword [edx + ecx*4]
test ebx, ebx
js 0x4fc922
mov ecx, dword [esp]
mov edi, ebp
xor ebp, ebp
bt ebx, 0x1b
jb 0x4fc545
mov edi, ebx
mov dword [esi + 0xc], 1
mov dword [esi + 0x10], edi
mov esi, dword [esp + 0xc]
jmp 0x4fc60c
mov edx, dword [esp + 0x10]
xor eax, eax
mov esi, dword [esp + 0xc]
cmp dword [edx + 0x150], 1
jne 0x4fc591
mov edi, dword [esp + 4]
jmp 0x4fc5ec
mov edx, dword [esp + 0x10]
xor eax, eax
cmp dword [edx + 0x150], 1
jne 0x4fc5b4
mov esi, dword [esp + 0xc]
jmp 0x4fc5ec
mov edi, dword [esp + 0xc]
bt edx, 0x1b
jb 0x4fc712
bt edx, 0x1e
jb 0x4fc810
bt edx, 0x1d
jae 0x4fcc7f
mov ecx, edi
mov edx, ebx
call fcn.004fcd35
mov eax, dword [esp + 8]
jmp 0x4fc7fb
mov cl, byte [ecx + 0x27c]
mov edx, dword [esi + 0x94]
mov eax, ebx
and eax, 0x7ffffff
shr eax, cl
cmp edx, eax
jbe 0x4fcbc3
mov edi, dword [esp + 4]
jmp 0x4fc5d5
mov esi, dword [esp + 0xc]
mov cl, byte [ecx + 0x27c]
mov eax, ebx
and eax, 0x7ffffff
mov edx, dword [esi + 0x94]
shr eax, cl
cmp edx, eax
jbe 0x4fcbc3
mov edx, dword [esi + 0x8c]
mov ecx, dword [edx + eax*8]
mov edx, dword [edx + eax*8 + 4]
push 0
call fcn.004fccd8
add esp, 4
mov edx, dword [esp + 0x100]
xor ecx, ecx
xor ebp, ebp
inc ecx
mov dword [edx], ecx
mov dword [edx + 4], eax
mov dword [edx + 8], edi
mov dword [edx + 0xc], ecx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x14], ecx
mov dword [edx + 0x18], ecx
mov eax, dword [esi + 0xb4]
cmp dword [esi + 0xb0], 0
mov edx, dword [esp + 4]
mov dword [esi + 0xb0], 0
je 0x4fcbf0
mov ecx, edx
sub ecx, eax
neg ecx
sub edx, eax
cmovb edx, ecx
add dword [esi + 0x70], edx
jmp 0x4fcb79
mov eax, dword [esp + 0xfc]
cmp ecx, ebp
jae 0x4fc6bc
mov eax, dword [eax + 8]
mov al, byte [eax + ecx]
mov ecx, dword [esp + 8]
mov byte [esp + 0xc], al
movzx eax, al
and ecx, 0x7ffffff
movzx edx, byte [edx + eax + 0x158]
add ecx, edx
mov edx, dword [edi + 0x7c]
cmp edx, ecx
jbe 0x4fcb0e
mov edx, dword [edi + 0x74]
mov ebx, dword [edx + ecx*4]
test ebx, ebx
js 0x4fca40
mov ecx, dword [esp]
bt ebx, 0x1b
jb 0x4fc770
mov edx, dword [esp + 4]
xor ebp, ebp
bt ebx, 0x1d
jae 0x4fc6fc
mov al, byte [esp + 0xc]
lea ecx, [esp + 0x38]
mov byte [ecx + 1], al
mov dword [ecx + 4], edx
mov byte [ecx], 0
call fcn.004f8c4d
mov edx, dword [esp + 4]
mov ebp, eax
jmp 0x4fc6fc
mov ecx, dword [esp + 8]
movzx eax, byte [edx + 0x257]
mov edx, dword [edi + 0x7c]
and ecx, 0x7ffffff
lea ecx, [eax + ecx + 1]
cmp edx, ecx
jbe 0x4fcbbc
mov edx, dword [edi + 0x74]
mov ebx, dword [edx + ecx*4]
test ebx, ebx
js 0x4fca7b
mov ecx, ebp
xor ebp, ebp
bt ebx, 0x1b
jb 0x4fc78e
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x100]
mov dword [eax + 0xc], 1
mov dword [eax + 0x10], ebx
jmp 0x4fc8bf
mov ebp, dword [esp + 0x10]
xor ecx, ecx
xor eax, eax
inc ecx
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], ecx
cmp dword [ebp + 0x150], ecx
je 0x4fc75f
mov eax, dword [esp]
and edx, 0x7ffffff
mov cl, byte [eax + 0x27c]
mov eax, dword [edi + 0x94]
shr edx, cl
cmp eax, edx
jbe 0x4fcbd0
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + edx*8]
mov edx, dword [eax + edx*8 + 4]
push 0
call fcn.004fccd8
add esp, 4
mov dword [esi], 1
mov dword [esi + 4], eax
mov dword [esi + 8], ebx
jmp 0x4fc9c9
mov edx, dword [esp + 0x58]
xor eax, eax
cmp dword [edx + 0x150], 1
jne 0x4fc863
mov edx, dword [esp + 4]
mov ebp, edx
jmp 0x4fc89f
mov edx, dword [esp + 0x58]
xor eax, eax
mov ebp, ecx
cmp dword [edx + 0x150], 1
je 0x4fc89b
mov ecx, dword [esp]
mov edx, dword [edi + 0x94]
mov eax, ebx
and eax, 0x7ffffff
mov cl, byte [ecx + 0x27c]
shr eax, cl
cmp edx, eax
ja 0x4fc884
jmp 0x4fcbc3
mov ecx, edx
call fcn.004faa8e
jmp 0x4fc308
bt ebp, 0x1b
jb 0x4fc962
bt ebp, 0x1e
jb 0x4fc810
bt ebp, 0x1d
jae 0x4fcc7f
mov ecx, edi
mov edx, ebx
call fcn.004fcd35
mov eax, dword [esp + 0x14]
mov al, byte [eax + ebx]
lea ecx, [esp + 0x38]
mov byte [ecx + 1], al
mov dword [ecx + 4], ebx
mov byte [ecx], 0
jmp 0x4fcb72
mov ecx, edi
mov edx, ebx
call fcn.004fcd35
jmp 0x4fc9f4
mov ecx, dword [esp]
movzx eax, al
mov al, byte [ecx + eax + 0x58]
jmp 0x4fbed4
mov eax, dword [esp]
lea edx, [esp + 0x38]
mov dword [edx], eax
movzx eax, byte [esp + 0x14]
mov dword [edx + 4], edi
mov edi, esi
lea esi, [esp + 0x24]
mov ecx, esi
push eax
push edi
push ebp
call fcn.00656fb8
mov ecx, dword [esp + 0x10]
add esp, 0xc
cmp dword [esi], 5
jne 0x4fbe90
jmp 0x4fc320
mov cl, byte [ecx + 0x27c]
mov edx, dword [edi + 0x94]
mov eax, ebx
and eax, 0x7ffffff
shr eax, cl
cmp edx, eax
jbe 0x4fcbc3
mov ebp, dword [esp + 4]
mov edx, dword [edi + 0x8c]
mov ecx, dword [edx + eax*8]
mov edx, dword [edx + eax*8 + 4]
push 0
call fcn.004fccd8
add esp, 4
mov edx, dword [esp + 4]
mov esi, dword [esp + 0x100]
xor ecx, ecx
inc ecx
mov dword [esi], ecx
mov dword [esi + 4], eax
mov dword [esi + 8], ebp
xor ebp, ebp
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], ecx
mov eax, dword [edi + 0xb4]
cmp dword [edi + 0xb0], 0
mov dword [edi + 0xb0], 0
je 0x4fcbf0
mov ecx, edx
sub ecx, eax
neg ecx
sub edx, eax
cmovb edx, ecx
add dword [edi + 0x70], edx
jmp 0x4fcb79
mov edx, dword [esp]
lea ecx, [esp + 0x38]
shl eax, 8
mov dword [ecx], edx
mov edx, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov edx, edi
push eax
call fcn.006560e0
add esp, 4
test eax, eax
je 0x4fca32
mov eax, dword [esp + 4]
lea ecx, [esp + 0x38]
mov dword [ecx + 4], eax
jmp 0x4fc953
mov edx, dword [esp]
lea ecx, [esp + 0x38]
inc eax
shl eax, 0x10
or eax, 1
mov dword [ecx], edx
mov edx, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov edx, edi
push eax
call fcn.006560e0
add esp, 4
test eax, eax
je 0x4fca39
lea ecx, [esp + 0x38]
mov dword [ecx + 4], ebp
mov byte [ecx], 1
call fcn.004f8c4d
mov ebp, eax
jmp 0x4fc516
mov ecx, dword [esp + 0x100]
xor eax, eax
inc eax
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
mov ecx, dword [esp + 0x58]
xor eax, eax
xor esi, esi
inc esi
cmp dword [ecx + 0x150], esi
je 0x4fc9b6
mov cl, byte [edx + 0x27c]
mov edx, dword [edi + 0x94]
and ebp, 0x7ffffff
shr ebp, cl
cmp edx, ebp
jbe 0x4fcbec
mov eax, dword [edi + 0x8c]
mov ecx, dword [eax + ebp*8]
mov edx, dword [eax + ebp*8 + 4]
push 0
call fcn.004fccd8
add esp, 4
mov ecx, dword [esp + 0x100]
mov dword [ecx], 1
mov dword [ecx + 4], eax
mov dword [ecx + 8], ebx
mov eax, dword [edi + 0xb4]
cmp dword [edi + 0xb0], 0
mov dword [edi + 0xb0], 0
je 0x4fcbf0
mov ecx, ebx
sub ecx, eax
neg ecx
sub ebx, eax
cmovb ebx, ecx
add dword [edi + 0x70], ebx
xor ebp, ebp
jmp 0x4fcb79
mov ecx, dword [esp]
lea edx, [esp + 0x38]
mov dword [edx], ecx
mov dword [edx + 4], edi
lea edi, [esp + 0x24]
mov ecx, edi
push eax
push dword [esp + 0x38]
push 0
call fcn.00656fb8
add esp, 0xc
cmp dword [edi], 5
jne 0x4fcac1
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0xc]
jmp 0x4fbef6
mov ebx, edx
jmp 0x4fc4a1
mov ebx, edx
jmp 0x4fc507
mov edx, dword [esp]
lea ecx, [esp + 0x38]
shl eax, 8
mov dword [ecx], edx
mov edx, dword [esp + 8]
mov dword [ecx + 4], edi
push eax
call fcn.006560e0
add esp, 4
test eax, eax
je 0x4fcb86
mov ebx, dword [esp + 4]
lea ecx, [esp + 0x38]
mov dword [ecx + 4], ebx
mov byte [ecx], 1
call fcn.004f8c4d
mov edx, ebx
jmp 0x4fcab6
mov edx, dword [esp]
lea ecx, [esp + 0x38]
inc eax
shl eax, 0x10
or eax, 1
mov dword [ecx], edx
mov edx, dword [esp + 8]
mov dword [ecx + 4], edi
push eax
call fcn.006560e0
add esp, 4
test eax, eax
je 0x4fcb8d
lea ecx, [esp + 0x38]
mov dword [ecx + 4], ebp
mov byte [ecx], 1
call fcn.004f8c4d
mov edx, dword [esp + 4]
mov ebp, eax
mov ebx, dword [esp + 8]
jmp 0x4fc6fc
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x54], ecx
lea edx, [eax - 3]
mov ecx, 2
cmp edx, 2
cmovb ecx, edx
test ecx, ecx
je 0x4fcafc
cmp ecx, 1
jne 0x4fcb08
test ebx, ebx
je 0x4fcc6b
mov eax, dword [esp + 0x54]
lea ecx, [esp + 0x38]
mov byte [ecx + 1], al
jmp 0x4fbec6
lea ecx, [esp + 0x38]
mov dword [ecx + 4], ebx
mov byte [ecx], 1
jmp 0x4fcb72
mov edx, dword [esp + 0x54]
jmp 0x4fcb65
push 0x7680c0
jmp 0x4fcba9
mov edx, dword [esp + 0x14]
mov ecx, ebp
jmp 0x4fcba4
mov ecx, dword [esp + 0x34]
mov eax, 2
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
jmp 0x4fcb42
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], 4
mov eax, dword [esp + 0x24]
mov ecx, 2
lea edx, [eax - 3]
cmp edx, 2
cmovb ecx, edx
test ecx, ecx
je 0x4fcb94
mov edx, dword [esp + 0x28]
cmp ecx, 1
je 0x4fbebf
lea ecx, [esp + 0x38]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov byte [ecx], 3
call fcn.004f8c4d
mov ebp, eax
mov eax, ebp
add esp, 0xe8
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, edx
jmp 0x4fc685
mov ebx, edx
jmp 0x4fc6ea
lea ecx, [esp + 0x38]
mov dword [ecx + 4], edi
jmp 0x4fcb03
mov ecx, ebx
mov edx, ebp
push 0x7686ec
call fcn.006521f0
add esp, 4
ud2
mov ecx, ebx
push 0x7683fc
jmp 0x4fcba9
push 0x7680d0
jmp 0x4fcba9
mov ecx, eax
jmp 0x4fcbb5
mov ecx, eax
push 0x7683ec
jmp 0x4fcba9
mov ecx, edx
mov edx, eax
jmp 0x4fcbb5
mov ecx, str.no_in_progress_search_to_update
mov edx, 0x1f
push 0x768164
call fcn.00652640
jmp 0x4fcbae
mov ecx, ebp
jmp 0x4fcbb5
mov ecx, str.no_in_progress_search_to_finish
mov edx, 0x1f
push 0x768194
jmp 0x4fcbe5
mov ecx, str.assertion_failed:_id.is_match__
mov edx, 0x1f
push 0x768134
call fcn.006522d0
jmp 0x4fcbae
lea eax, [esp + 0xe4]
lea ecx, [esp + 0x70]
lea edx, [esp + 0x24]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], 0x49881f
mov dword [esp + 0x2c], eax
mov dword [eax], ebx
lea ecx, [esp + 0x38]
mov eax, 2
mov dword [esp + 0x30], fcn.004a3a90
mov dword [ecx], str.invalid_span__for_haystack_of_length
mov dword [ecx + 4], eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 8], edx
mov edx, 0x76afac
mov dword [ecx + 0xc], eax
call fcn.00652150
ud2
mov ecx, str.no_quit_in_start_without_look_behindX
mov edx, 0x24
push 0x768104
jmp 0x4fcbe5
lea ecx, [esp + 0x38]
xor eax, eax
lea edx, [esp + 0x20]
mov dword [ecx], 0x768684
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], eax
mov dword [ecx + 8], edx
mov edx, 0x7686fc
jmp 0x4fcc61