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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
mov eax, dword [0x100fb074]
xor eax, esp
mov dword [esp + 0x90], eax
push ebx
push esi
mov esi, edx
mov dword [esp + 0x3c], ecx
mov edx, dword [ebp + 8]
xorps xmm0, xmm0
push edi
mov dword [esp + 0x28], esi
mov eax, dword [esi]
mov dword [esp + 0x44], edx
movlpd qword [esp + 0x60], xmm0
mov dword [esp + 0x4c], 0
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov ecx, dword [ecx]
mov dword [esp + 0x1c], ecx
cmp byte [ecx + 0x45], 0
jne 0x1009a564
mov edi, dword [esi + 0x14]
lea ecx, [edx + edx*2]
shl ecx, 4
add eax, 0x44
add edi, ecx
mov dword [esp + 0x18], ecx
mov ecx, eax
mov dword [esp + 0x24], eax
mov ebx, dword [edi]
mov dword [esp + 0x3c], ebx
mov edx, dword [ebx + 0xc]
call fcn.1009a770
mov dword [esp + 0x2c], eax
mov al, byte [ebx]
mov byte [esp + 0xf], al
movzx eax, al
mov dword [esp + 0x70], edx
mov dword [esp + 0x20], eax
cmp eax, 0x4b
jne 0x10099be5
test dword [ebx + 4], 0x800
mov edx, dword [ebx + 0x14]
mov ecx, dword [esp + 0x24]
je 0x10099bde
call fcn.10099930
jmp 0x10099c09
call fcn.1009a800
jmp 0x10099c09
cmp eax, 0x4c
jne 0x10099bfd
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
jmp 0x10099c09
mov edx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x24]
call fcn.1009a770
mov ecx, dword [esp + 0x24]
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
mov edx, ebx
call fcn.1009a770
test byte [ebx + 4], 1
mov ecx, edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
je 0x10099c63
movsx edx, word [ebx + 0x24]
mov ecx, dword [esp + 0x24]
call fcn.1009a9a0
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x50]
or eax, edx
or ecx, dword [esp + 0x48]
add edx, 0xffffffff
mov dword [esp + 0x74], eax
adc dword [esp + 0x48], 0xffffffff
mov dword [esp + 0x78], ecx
jmp 0x10099c6f
mov edx, dword [esp + 0x64]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x60]
mov dword [edi + 0x28], eax
xor eax, eax
mov word [edi + 0x12], ax
mov al, byte [esp + 0xf]
mov dword [esp + 0x50], edx
mov dword [edi + 0x2c], ecx
mov dword [edi + 8], 0xffffffff
mov dword [edi + 4], 0xffffffff
cmp al, 0x4b
je 0x10099dd2
cmp al, 0x4f
jb 0x10099ca5
cmp al, 0x53
jbe 0x10099dd2
cmp al, 0x4c
je 0x10099dd2
cmp al, 0x49
je 0x10099dd2
mov al, byte [ebx]
cmp al, 0x4a
jne 0x10099dac
cmp byte [esi + 8], 0x48
jne 0x1009a36e
mov eax, dword [ebx + 0x14]
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x60], ecx
jmp 0x10099ce4
mov edi, dword [esp + 0x14]
mov eax, dword [eax + 4]
push 0
push 0
mov edx, dword [ecx + eax]
mov ecx, dword [esp + 0x24]
call fcn.10066a40
mov edx, dword [ebx + 0xc]
mov esi, eax
mov ecx, dword [esp + 0x24]
push 0
push 0
call fcn.10066a40
movzx edx, byte [edi + 0x100ecac0]
mov ecx, dword [esp + 0x20]
push 0
push esi
push eax
call fcn.100663a0
add esp, 0x1c
test eax, eax
je 0x10099d35
mov ecx, dword [ebx + 4]
and ecx, 1
or dword [eax + 4], ecx
mov cx, word [ebx + 0x24]
mov word [eax + 0x24], cx
mov edi, dword [esp + 0x28]
mov edx, eax
push 3
mov ecx, edi
call fcn.10098c30
mov ecx, dword [esp + 0x44]
add esp, 4
mov esi, eax
mov edx, edi
push esi
call fcn.10099b20
mov ecx, dword [edi + 0x14]
lea edx, [esi + esi*2]
mov eax, dword [esp + 0x1c]
add edx, edx
mov esi, dword [esp + 0x48]
add esp, 4
inc dword [esp + 0x14]
mov dword [ecx + edx*8 + 4], esi
lea edi, [ecx + eax]
mov esi, dword [esp + 0x28]
mov ecx, dword [esi + 0x14]
mov ax, word [eax + ecx + 0x10]
mov word [ecx + edx*8 + 0x10], ax
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x18]
inc byte [eax + ecx + 0x16]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x30]
add ecx, 0x18
mov dword [esp + 0x60], ecx
cmp ecx, 0x30
jl 0x10099ce0
jmp 0x1009a0f3
cmp al, 0x47
jne 0x1009a0f3
push dword [esp + 0x44]
mov ecx, dword [esp + 0x44]
mov edx, esi
call fcn.10099160
mov edi, dword [esi + 0x14]
add esp, 4
add edi, dword [esp + 0x18]
jmp 0x1009a0f3
mov ecx, dword [ebx + 0xc]
call fcn.10065c20
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x30], eax
call fcn.10065c20
mov ecx, dword [esp + 0x70]
and ecx, dword [edi + 0x24]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2c]
mov edx, eax
and edx, dword [edi + 0x20]
or edx, ecx
mov dword [esp + 0x60], 0x1fff
je 0x10099e0e
mov dword [esp + 0x60], 0x800
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x18]
push ecx
push dword [esp + 0x78]
mov ecx, dword [esp + 0x4c]
push eax
call fcn.10099a20
add esp, 0x10
test eax, eax
je 0x10099e51
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x6c]
mov dword [edi + 0xc], eax
call fcn.10098db0
and ax, word [esp + 0x60]
mov word [edi + 0x12], ax
cmp byte [esp + 0xf], 0x49
mov eax, 0x800
jne 0x10099e61
or word [edi + 0x14], ax
mov eax, dword [esp + 0x54]
test eax, eax
je 0x1009a0f3
lea ecx, [esp + 0x6c]
mov edx, eax
push ecx
lea ecx, [esp + 0x18]
push ecx
push dword [edi + 0x24]
mov ecx, dword [esp + 0x4c]
push dword [edi + 0x20]
call fcn.10099a20
add esp, 0x10
test eax, eax
je 0x1009a0f3
cmp dword [edi + 8], 0
mov dword [esp + 0x30], 0
jl 0x1009a034
mov edi, dword [esp + 0x1c]
mov edx, ebx
push 0
push 0
mov ecx, edi
call fcn.10066a40
add esp, 8
mov esi, eax
cmp byte [edi + 0x45], 0
mov edx, esi
je 0x10099edf
mov ecx, edi
call fcn.10066910
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x90]
xor ecx, esp
call fcn.100b47d2
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0x28]
mov ecx, edi
push 3
call fcn.10098c30
add esp, 4
test eax, eax
je 0x1009a564
push dword [esp + 0x44]
lea ecx, [eax + eax*2]
mov edx, eax
shl ecx, 4
add ecx, dword [edi + 0x14]
mov dword [esp + 0x58], ecx
mov ecx, edi
call fcn.10099120
add esp, 4
cmp byte [esp + 0xf], 0x49
jne 0x10099f28
mov eax, dword [esp + 0x54]
mov ecx, 0x800
or word [eax + 0x14], cx
mov edi, dword [edi + 0x14]
mov ecx, 0x200
add edi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
or word [edi + 0x14], 8
mov eax, dword [eax]
test word [eax + 0x40], cx
jne 0x1009a03a
mov al, byte [esi]
cmp al, 0x4f
je 0x10099f57
cmp al, 0x49
jne 0x1009a03a
test byte [esi + 4], 1
jne 0x1009a03a
mov ecx, dword [esi + 0xc]
call fcn.10065af0
mov ecx, dword [esi + 0x10]
mov byte [esp + 0xf], al
call fcn.10065af0
mov cl, al
mov al, byte [esp + 0xf]
cmp al, cl
je 0x10099f90
cmp al, 0x43
jl 0x1009a03a
cmp cl, 0x43
jl 0x1009a03a
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
mov dword [esp + 0x20], eax
test dword [edx + 4], 0x100
jne 0x10099fc5
test eax, eax
je 0x10099fb4
test dword [eax + 4], 0x100
je 0x10099fb4
mov edx, eax
jmp 0x10099fc5
mov ecx, dword [esp + 0x10]
call fcn.10065c50
test eax, eax
jne 0x10099fd2
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
call fcn.10065c50
test eax, eax
je 0x1009a025
mov ecx, dword [eax]
mov edx, str.BINARY
call fcn.100367a0
test eax, eax
je 0x1009a025
mov edx, dword [esi + 0xc]
mov ecx, dword [esp + 0x10]
call fcn.10065c50
test eax, eax
je 0x10099ffa
mov eax, dword [eax]
mov dword [esp + 0x20], eax
jmp 0x1009a002
mov dword [esp + 0x20], 0
mov edx, dword [esi + 0x10]
mov ecx, dword [esp + 0x10]
call fcn.10065c50
test eax, eax
je 0x1009a016
mov edx, dword [eax]
jmp 0x1009a018
xor edx, edx
mov ecx, dword [esp + 0x20]
call fcn.100367a0
test eax, eax
jne 0x1009a03a
mov eax, 0x800
or word [edi + 0x12], ax
mov dword [esp + 0x30], eax
jmp 0x1009a03a
mov esi, ebx
mov dword [esp + 0x54], edi
mov ecx, dword [esi + 0x10]
mov edx, 0x100
mov dword [esp + 0x20], edx
movzx eax, word [ecx + 4]
and ax, dx
movzx edx, ax
mov eax, dword [esi + 0xc]
movzx eax, word [eax + 4]
and ax, word [esp + 0x20]
cmp dx, ax
jne 0x1009a089
test dx, dx
je 0x1009a06f
and dword [ecx + 4], 0xfffffeff
jmp 0x1009a089
mov edx, dword [esi + 0xc]
mov ecx, dword [esp + 0x10]
call fcn.10065c50
test eax, eax
je 0x1009a089
mov eax, dword [esi + 0xc]
or dword [eax + 4], 0x100
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x10], eax
mov al, byte [esi]
mov dword [esi + 0xc], ecx
cmp al, 0x50
jb 0x1009a0a3
sub al, 0x50
xor al, 2
add al, 0x50
mov byte [esi], al
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x70]
or ecx, dword [esp + 0x48]
mov dword [edx + 8], eax
mov eax, dword [esp + 0x6c]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x2c]
or eax, dword [esp + 0x50]
mov dword [edx + 0x20], eax
mov eax, dword [esp + 0x74]
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x78]
mov dword [edx + 0x24], ecx
mov dword [edx + 0x2c], eax
movzx ecx, byte [esi]
call fcn.10098db0
add ax, word [esp + 0x30]
and ax, word [esp + 0x60]
mov esi, dword [esp + 0x28]
mov word [edx + 0x12], ax
cmp byte [esi + 8], 0x48
jne 0x1009a36e
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x5c]
mov edx, ebx
push eax
lea eax, [esp + 0x54]
mov ecx, esi
push eax
call fcn.10098de0
add esp, 0xc
test eax, eax
je 0x1009a36e
mov eax, dword [ebx + 0x14]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
push 0
mov eax, dword [eax + 4]
push 0
mov eax, dword [eax + 0x18]
mov dword [esp + 0x38], eax
call fcn.10066a40
add esp, 8
mov dword [esp + 0x14], eax
cmp dword [esp + 0x5c], 0
je 0x1009a1a7
mov ecx, dword [esi]
cmp byte [ecx + 0x45], 0
jne 0x1009a1a7
mov eax, 0x400
xor esi, esi
or word [edi + 0x14], ax
mov eax, dword [esp + 0x4c]
mov edi, dword [eax + 8]
mov cl, byte [edi]
test cl, cl
je 0x1009a1a3
mov ebx, eax
movzx edx, cl
mov al, byte [edx + 0x100ea3b0]
and al, 0x20
not al
and al, cl
mov byte [edi], al
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 8]
mov al, byte [edx + 0x100eac28]
mov byte [esi + ecx], al
inc esi
mov edi, dword [ebx + 8]
add edi, esi
mov cl, byte [edi]
test cl, cl
jne 0x1009a172
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
cmp byte [ecx + 0x45], 0
jne 0x1009a1f7
mov edx, dword [eax + 8]
test edx, edx
jne 0x1009a1bc
xor ecx, ecx
jmp 0x1009a1d0
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009a1c1
sub ecx, esi
and ecx, 0x3fffffff
cmp dword [esp + 0x5c], 0
mov al, byte [edx + ecx - 1]
mov esi, dword [esp + 0x58]
je 0x1009a1ef
xor edi, edi
cmp al, 0x40
movzx eax, al
cmove esi, edi
mov al, byte [eax + 0x100eac28]
inc al
mov byte [edx + ecx - 1], al
jmp 0x1009a1fb
mov esi, dword [esp + 0x58]
cmp dword [esp + 0x5c], 0
mov eax, str.BINARY
mov edx, dword [esp + 0x30]
mov edi, str.NOCASE
mov ecx, dword [esp + 0x1c]
cmove edi, eax
push 0
push 0
mov dword [esp + 0x44], edi
call fcn.10066a40
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, eax
push 0
push dword [esp + 0x50]
push edi
call fcn.10065bc0
mov ecx, dword [esp + 0x1c]
add esp, 4
mov edx, 0x53
push eax
call fcn.100663a0
add esp, 0xc
test eax, eax
je 0x1009a261
mov ecx, dword [ebx + 4]
and ecx, 1
or dword [eax + 4], ecx
mov cx, word [ebx + 0x24]
mov word [eax + 0x24], cx
mov edi, dword [esp + 0x28]
mov edx, eax
push 0x103
mov ecx, edi
call fcn.10098c30
mov ecx, dword [esp + 0x44]
add esp, 4
mov edx, edi
mov dword [esp + 0x2c], eax
push eax
call fcn.10099b20
mov edx, dword [esp + 0x34]
add esp, 4
mov ecx, dword [esp + 0x1c]
push 0
push 0
call fcn.10066a40
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, eax
push 0
push dword [esp + 0x18]
push dword [esp + 0x44]
call fcn.10065bc0
mov ecx, dword [esp + 0x1c]
add esp, 4
mov edx, 0x52
push eax
call fcn.100663a0
add esp, 0xc
test eax, eax
je 0x1009a2dc
mov ecx, dword [ebx + 4]
and ecx, 1
or dword [eax + 4], ecx
mov cx, word [ebx + 0x24]
mov word [eax + 0x24], cx
push 0x103
mov edx, eax
mov ecx, edi
call fcn.10098c30
mov ecx, dword [esp + 0x44]
add esp, 4
mov edx, edi
mov dword [esp + 0x3c], eax
push eax
call fcn.10099b20
mov eax, dword [edi + 0x14]
add esp, 4
mov edi, dword [esp + 0x18]
add edi, eax
test esi, esi
je 0x1009a36e
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x44]
add edx, edx
mov dword [eax + edx*8 + 4], ecx
mov ecx, dword [esi + 0x14]
mov eax, dword [esp + 0x18]
movzx eax, word [ecx + eax + 0x10]
mov word [ecx + edx*8 + 0x10], ax
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x18]
inc byte [eax + ecx + 0x16]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x14]
add edx, edx
mov dword [eax + edx*8 + 4], ecx
mov ecx, dword [esi + 0x14]
mov eax, dword [esp + 0x18]
movzx eax, word [ecx + eax + 0x10]
mov word [ecx + edx*8 + 0x10], ax
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x18]
inc byte [eax + ecx + 0x16]
cmp byte [ebx], 0x97
mov dword [esp + 0x7c], str.match
mov byte [esp + 0x80], 0x40
mov dword [esp + 0x84], str.glob
mov byte [esp + 0x88], 0x42
mov dword [esp + 0x8c], str.like
mov byte [esp + 0x90], 0x41
mov dword [esp + 0x94], str.regexp
mov byte [esp + 0x98], 0x43
jne 0x1009a556
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x1009a556
cmp dword [eax], 2
jne 0x1009a556
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x18]
cmp byte [eax], 0x98
jne 0x1009a556
mov eax, dword [eax + 0x2c]
test byte [eax + 0x2a], 0x10
je 0x1009a556
xor esi, esi
mov edx, dword [esp + esi*8 + 0x7c]
mov ecx, dword [ebx + 8]
call fcn.100367a0
test eax, eax
je 0x1009a40d
inc esi
cmp esi, 4
jl 0x1009a3f2
jmp 0x1009a556
mov al, byte [esp + esi*8 + 0x80]
mov ecx, dword [esp + 0x24]
mov byte [esp + 0xf], al
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 4]
mov esi, dword [eax]
mov edx, esi
mov ebx, dword [eax + 0x18]
mov dword [esp + 0x3c], ebx
call fcn.1009a770
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], edx
mov edx, ebx
mov dword [esp + 0x30], eax
call fcn.1009a770
and eax, dword [esp + 0x30]
and edx, dword [esp + 0x2c]
or eax, edx
jne 0x1009a556
mov ecx, dword [esp + 0x1c]
mov edx, esi
push eax
push eax
call fcn.10066a40
mov ebx, dword [esp + 0x18]
mov edx, 0x33
push 1
push 0
mov edi, eax
mov ecx, dword [ebx]
call fcn.10066160
mov ebx, dword [ebx]
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x1009a497
xor edx, edx
mov ecx, ebx
call fcn.10066910
mov edx, edi
mov ecx, ebx
call fcn.10066910
jmp 0x1009a4cd
test edi, edi
je 0x1009a4a9
mov dword [esi + 0x10], edi
mov eax, dword [edi + 4]
and eax, 0x200100
or dword [esi + 4], eax
mov ecx, esi
call fcn.100660a0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
cmp dword [esi + 0x18], eax
jle 0x1009a4cd
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.100365a0
add esp, 0xc
mov ebx, dword [esp + 0x28]
mov edx, esi
push 3
mov ecx, ebx
call fcn.10098c30
mov esi, dword [ebx + 0x14]
add esp, 4
mov ecx, dword [esp + 0x3c]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x30]
shl edx, 4
add esi, edx
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x24], eax
mov eax, dword [ecx + 0x1c]
mov dword [esi + 8], eax
movsx eax, word [ecx + 0x20]
mov ecx, dword [esp + 0x44]
mov dword [esi + 0xc], eax
mov eax, 0x40
mov word [esi + 0x12], ax
mov al, byte [esp + 0xf]
mov byte [esi + 0x17], al
mov eax, dword [ebx + 0x14]
mov dword [eax + edx + 4], ecx
mov ecx, dword [ebx + 0x14]
mov eax, dword [esp + 0x18]
mov ax, word [ecx + eax + 0x10]
mov word [ecx + edx + 0x10], ax
mov eax, dword [ebx + 0x14]
mov ecx, dword [esp + 0x18]
inc byte [eax + ecx + 0x16]
mov edi, dword [ebx + 0x14]
add edi, ecx
mov eax, dword [edi + 0x28]
or word [edi + 0x14], 8
mov dword [esi + 0x28], eax
mov eax, dword [edi + 0x2c]
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x50]
or dword [edi + 0x20], eax
mov eax, dword [esp + 0x48]
or dword [edi + 0x24], eax
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100b47d2
mov esp, ebp
pop ebp
ret