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

Disassembly:
sub esp, 0x58
push ebp
mov ebp, dword [esp + 0x64]
xorps xmm0, xmm0
push edi
movlpd qword [esp + 0x58], xmm0
mov dword [esp + 0x30], 0
mov eax, dword [ebp]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov edi, dword [eax]
mov dword [esp + 0x4c], edi
mov ecx, dword [edi]
mov dword [esp + 0x1c], ecx
cmp byte [ecx + 0x57], 0
jne 0x10029354
mov ecx, dword [esp + 0x6c]
lea edx, [eax + 0x1f0]
push ebx
mov ebx, dword [ebp + 0x18]
push esi
lea ecx, [ecx + ecx*2]
mov dword [esp + 0x1c], edx
shl ecx, 4
add ebx, ecx
mov dword [esp + 0x14], ecx
mov esi, dword [ebx]
mov dword [edx], 0
mov dword [esp + 0x20], esi
mov eax, dword [esi + 0xc]
test eax, eax
je 0x1002808f
cmp byte [eax], 0xa7
jne 0x10028056
test byte [eax + 4], 0x20
jne 0x10028056
push dword [eax + 0x1c]
push edx
call fcn.1008ee60
mov dword [esp + 0x3c], edx
add esp, 8
mov edx, dword [esp + 0x1c]
jmp 0x100280a1
test dword [eax + 4], 0x810000
je 0x1002807b
movlpd qword [esp + 0x58], xmm0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
jmp 0x100280a5
push eax
push edx
call fcn.1008ec60
mov dword [esp + 0x3c], edx
add esp, 8
mov edx, dword [esp + 0x1c]
jmp 0x100280a1
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x30], eax
mov al, byte [esi]
mov byte [esp + 0x13], al
movzx eax, al
mov dword [esp + 0x50], eax
cmp eax, 0x31
jne 0x1002810c
push esi
push edi
call fcn.10056bd0
add esp, 8
test eax, eax
jne 0x10029352
test dword [esi + 4], 0x1000
lea ecx, [esi + 4]
mov eax, dword [esi + 0x14]
push eax
push dword [esp + 0x20]
mov dword [esp + 0x20], ecx
je 0x100280e8
call fcn.1002b200
jmp 0x100280ed
call fcn.1008ebc0
mov ecx, edx
mov dword [ebx + 0x20], eax
or eax, dword [esp + 0x38]
lea edx, [esi + 4]
add esp, 8
mov dword [ebx + 0x24], ecx
or ecx, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
jmp 0x100281e7
mov eax, dword [esi + 0x10]
test eax, eax
je 0x10028145
cmp byte [eax], 0xa7
jne 0x1002812e
test byte [eax + 4], 0x20
jne 0x1002812e
push dword [eax + 0x1c]
push edx
call fcn.1008ee60
add esp, 8
mov ecx, edx
jmp 0x10028156
test dword [eax + 4], 0x810000
jne 0x10028145
push eax
push edx
call fcn.1008ec60
add esp, 8
mov ecx, edx
jmp 0x10028156
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x24], ecx
cmp dword [esi + 0xc], 0
je 0x10028186
test dword [esi + 4], 0x41000
lea edx, [esi + 4]
mov dword [esp + 0x18], edx
jne 0x10028186
cmp dword [esi + 0x14], 0
jne 0x10028186
or eax, dword [esp + 0x30]
or ecx, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
jmp 0x100281e7
cmp byte [esi], 0xa7
lea edx, [esi + 4]
mov eax, dword [edx]
mov dword [esp + 0x18], edx
jne 0x100281ad
test al, 0x20
jne 0x100281ad
push dword [esi + 0x1c]
push dword [esp + 0x20]
call fcn.1008ee60
mov dword [esp + 0x34], edx
lea edx, [esi + 4]
jmp 0x100281e4
test eax, 0x810000
je 0x100281cf
xorps xmm0, xmm0
mov dword [esp + 0x18], edx
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x2c], ecx
jmp 0x100281e7
push esi
push dword [esp + 0x20]
call fcn.1008ec60
mov dword [esp + 0x34], edx
lea edx, [esi + 4]
mov dword [esp + 0x20], edx
add esp, 8
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
cmp dword [ecx], 0
je 0x100281fd
mov eax, 0x1000
or word [ebx + 0xa], ax
mov eax, dword [edx]
mov dword [esp + 0x4c], eax
test al, 3
je 0x100282e2
push dword [esi + 0x24]
push ecx
call fcn.1008ee60
mov ecx, dword [esp + 0x54]
add esp, 8
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], edx
test cl, 1
je 0x1002827c
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
or eax, ecx
mov edx, dword [esp + 0x2c]
or edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x58], eax
mov dword [esp + 0x28], eax
mov eax, edx
mov dword [esp + 0x3c], ecx
add dword [esp + 0x3c], 0xffffffff
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x58]
adc ebp, 0xffffffff
shrd edx, eax, 1
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0x70]
shr eax, 1
cmp eax, dword [esp + 0x40]
ja 0x100282b1
jb 0x10028276
cmp edx, ecx
jae 0x100282b1
mov edx, dword [esp + 0x28]
jmp 0x100282f6
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x4c], edx
shrd dword [esp + 0x4c], eax, 1
shr eax, 1
cmp eax, dword [esp + 0x40]
jb 0x100282e6
ja 0x100282a2
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x3c]
jb 0x100282e6
mov eax, dword [esp + 0x6c]
cmp dword [eax], 0
jle 0x100282c7
test byte [eax + 0x2c], 0x40
je 0x100282c7
push str.ON_clause_references_tables_to_its_right
push edi
call fcn.10055e80
add esp, 8
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x58
ret
mov eax, dword [esp + 0x18]
and ecx, 0xfffffffd
mov dword [eax], ecx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x3c], ecx
jmp 0x100282f6
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0x2c], eax
xor eax, eax
mov word [ebx + 0xc], ax
mov al, byte [esp + 0x13]
mov dword [ebx + 0x28], edx
mov dword [ebx + 0x14], 0xffffffff
mov dword [ebx + 0x10], 0xffffffff
cmp al, 0x31
je 0x10028938
cmp al, 0x35
jb 0x1002832c
cmp al, 0x39
jbe 0x10028938
cmp al, 0x32
je 0x10028938
cmp al, 0x2d
je 0x10028938
mov al, byte [esi]
cmp al, 0x30
jne 0x100284e6
cmp byte [ebp + 8], 0x2c
jne 0x10028507
mov eax, dword [esi + 0x14]
add eax, 8
mov dword [esp + 0x48], 0
mov dword [esp + 0x50], eax
mov eax, dword [eax]
mov ebx, dword [esp + 0x24]
test eax, eax
je 0x1002837e
push 0
push 0
push eax
push ebx
call fcn.1002a3f0
add esp, 0x10
mov ebp, eax
jmp 0x10028380
xor ebp, ebp
mov eax, dword [esi + 0xc]
test eax, eax
je 0x10028399
push 0
push 0
push eax
push ebx
call fcn.1002a3f0
add esp, 0x10
mov ebx, eax
jmp 0x1002839b
xor ebx, ebx
mov eax, dword [esp + 0x48]
push 0
push 0x34
push dword [edi]
mov al, byte [eax + 0x100ad484]
mov byte [esp + 0x1f], al
call fcn.10053d40
mov esi, eax
add esp, 0xc
test esi, esi
je 0x10028451
push 0x34
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ebp, ebp
je 0x100283f5
mov dword [esi + 0x10], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ebp + 0x18]
inc ecx
jmp 0x100283fa
mov ecx, 1
mov dword [esi + 0x18], ecx
test ebx, ebx
je 0x1002841c
mov dword [esi + 0xc], ebx
mov eax, dword [ebx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ebx + 0x18]
cmp eax, ecx
jl 0x1002841c
lea ecx, [eax + 1]
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x10028437
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.10055e80
add esp, 0xc
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
and eax, 3
je 0x1002846f
or dword [esi + 4], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esi + 0x24], eax
jmp 0x1002846f
test ebx, ebx
je 0x10028460
push ebx
push dword [edi]
call fcn.100597d0
add esp, 8
test ebp, ebp
je 0x1002846f
push ebp
push dword [edi]
call fcn.100597d0
add esp, 8
mov ebp, dword [esp + 0x70]
push 3
push esi
push ebp
call fcn.1009d530
mov esi, eax
push esi
push ebp
push dword [esp + 0x80]
call fcn.10027fc0
mov ecx, dword [ebp + 0x18]
lea edx, [esi + esi*2]
mov eax, dword [esp + 0x8c]
add edx, edx
mov ebx, dword [esp + 0x2c]
add esp, 0x18
mov esi, dword [esp + 0x14]
add ebx, ecx
mov dword [ecx + edx*8 + 0x10], eax
mov ecx, dword [ebp + 0x18]
mov ax, word [esi + ecx + 8]
mov word [ecx + edx*8 + 8], ax
mov eax, dword [ebp + 0x18]
mov ecx, dword [esp + 0x48]
inc ecx
mov dword [esp + 0x48], ecx
inc byte [esi + eax + 0xe]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x20]
add eax, 0x14
mov dword [esp + 0x50], eax
cmp ecx, 2
jl 0x10028362
jmp 0x10028d08
cmp al, 0x2b
jne 0x10028507
push dword [esp + 0x74]
push ebp
push dword [esp + 0x74]
call fcn.10029360
mov ebx, dword [ebp + 0x18]
add esp, 0xc
add ebx, dword [esp + 0x14]
jmp 0x10028d08
cmp al, 0x33
jne 0x1002861a
mov eax, dword [esi + 0xc]
mov dword [esp + 0x48], eax
cmp byte [eax], 0xa7
jne 0x10028d08
cmp word [eax + 0x20], 0
jl 0x10028d08
mov ecx, dword [esp + 0x18]
test byte [ecx], 1
jne 0x10028d08
test eax, eax
je 0x10028552
push 0
push 0
push eax
push dword [esp + 0x30]
call fcn.1002a3f0
add esp, 0x10
mov dword [esp + 0x50], eax
jmp 0x1002855a
mov dword [esp + 0x50], 0
push 0
push 0x34
push dword [esp + 0x2c]
call fcn.10053d40
add esp, 0xc
mov dword [esp + 0x58], eax
test eax, eax
je 0x10028594
push 0x34
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [esp + 0x64]
add esp, 0xc
or ecx, 0xffffffff
mov byte [eax], 0x79
mov word [eax + 0x22], cx
mov dword [eax + 0x18], 1
push eax
push dword [esp + 0x54]
push 0x36
push edi
call fcn.10066af0
push 0x83
push eax
push ebp
call fcn.1009d530
mov edx, eax
add esp, 0x1c
test edx, edx
je 0x10028d08
mov ecx, dword [esp + 0x48]
lea esi, [edx + edx*2]
push dword [esp + 0x74]
shl esi, 4
add esi, dword [ebp + 0x18]
push edx
push ebp
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov eax, dword [ecx + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [ecx + 0x20]
mov dword [esi + 0x18], eax
mov eax, 4
mov word [esi + 0xc], ax
call fcn.10037a70
mov ebx, dword [ebp + 0x18]
add esp, 0xc
add ebx, dword [esp + 0x14]
or word [ebx + 0xa], 8
mov eax, dword [ebx + 0x28]
mov ecx, dword [ebx + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov esi, dword [esp + 0x20]
jmp 0x10028d08
cmp al, 0xac
jne 0x10028d08
cmp byte [ebp + 8], 0x2c
jne 0x10028d08
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x40]
push eax
push esi
push edi
call fcn.100336e0
add esp, 0x14
test eax, eax
je 0x10028d08
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x34], eax
test ecx, ecx
je 0x1002867a
push 0
push 0
push ecx
push dword [esp + 0x30]
call fcn.1002a3f0
mov ecx, dword [esp + 0x48]
add esp, 0x10
mov dword [esp + 0x40], eax
jmp 0x10028682
mov dword [esp + 0x40], 0
cmp dword [esp + 0x48], 0
je 0x100286ec
mov eax, dword [edi]
cmp byte [eax + 0x57], 0
jne 0x100286ec
mov eax, 0x400
or word [ebx + 0xa], ax
xor ebx, ebx
mov eax, dword [ecx + 8]
mov dword [esp + 0x58], eax
mov cl, byte [eax]
test cl, cl
je 0x100286ec
mov ebp, dword [esp + 0x38]
mov esi, eax
mov edi, dword [esp + 0x40]
movzx edx, cl
lea ebx, [ebx + 1]
mov al, byte [edx + 0x100b10a8]
and al, 0x20
not al
and al, cl
mov byte [esi + ebx - 1], al
mov ecx, dword [edi + 8]
mov al, byte [edx + 0x100b0f70]
mov byte [ebx + ecx - 1], al
mov esi, dword [ebp + 8]
mov cl, byte [esi + ebx]
test cl, cl
jne 0x100286b3
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 0x57], 0
jne 0x1002874f
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 8]
test edx, edx
jne 0x10028705
xor ecx, ecx
jmp 0x1002871f
mov ecx, edx
lea ebx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10028710
sub ecx, ebx
and ecx, 0x3fffffff
mov al, byte [edx + ecx - 1]
add edx, ecx
cmp dword [esp + 0x48], 0
mov ecx, dword [esp + 0x44]
je 0x10028740
xor ebx, ebx
cmp al, 0x40
movzx eax, al
cmove ecx, ebx
mov al, byte [eax + 0x100b0f70]
inc al
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x24]
mov byte [edx - 1], al
jmp 0x10028757
mov eax, dword [esp + 0x44]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x48], 0
mov eax, 0x100b1084
mov ebx, str.NOCASE
cmove ebx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x58], ebx
test eax, eax
je 0x10028785
push 0
push 0
push eax
push ecx
call fcn.1002a3f0
add esp, 0x10
jmp 0x10028787
xor eax, eax
push ebx
push eax
push edi
call fcn.10056360
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x60], eax
call fcn.10053d40
mov ebx, eax
add esp, 0x18
test ebx, ebx
je 0x1002884a
push 0x34
push 0
push ebx
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [esp + 0x44]
lea edx, [ebx + 4]
or eax, 0xffffffff
mov byte [ebx], 0x39
add esp, 0xc
mov word [ebx + 0x22], ax
mov dword [esp + 0x50], edx
test ecx, ecx
je 0x100287e4
mov dword [ebx + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [edx], eax
mov ecx, dword [ecx + 0x18]
inc ecx
jmp 0x100287ed
mov ecx, 1
mov dword [esp + 0x50], edx
mov dword [ebx + 0x18], ecx
mov edx, dword [esp + 0x48]
test edx, edx
je 0x10028819
mov ecx, dword [esp + 0x50]
mov dword [ebx + 0xc], edx
mov eax, dword [edx + 4]
and eax, 0x400208
or dword [ecx], eax
mov eax, dword [edx + 0x18]
mov ecx, dword [ebx + 0x18]
cmp eax, ecx
jl 0x10028819
lea ecx, [eax + 1]
mov dword [ebx + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x10028834
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.10055e80
add esp, 0xc
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
and eax, 3
je 0x10028870
or dword [ebx + 4], eax
mov eax, dword [esi + 0x24]
mov dword [ebx + 0x24], eax
jmp 0x10028870
mov eax, dword [esp + 0x48]
test eax, eax
je 0x1002885d
push eax
push dword [edi]
call fcn.100597d0
add esp, 8
mov eax, dword [esp + 0x38]
test eax, eax
je 0x10028870
push eax
push dword [edi]
call fcn.100597d0
add esp, 8
push 0x103
push ebx
push ebp
call fcn.1009d530
mov ebx, dword [esp + 0x78]
push eax
push ebp
push ebx
mov dword [esp + 0x68], eax
call fcn.10027fc0
mov eax, dword [esp + 0x4c]
add esp, 0x18
test eax, eax
je 0x100288aa
push 0
push 0
push eax
push dword [esp + 0x30]
call fcn.1002a3f0
add esp, 0x10
jmp 0x100288ac
xor eax, eax
push dword [esp + 0x40]
push dword [esp + 0x5c]
push eax
push edi
call fcn.10056360
add esp, 0xc
push eax
push 0x38
push edi
call fcn.10066af0
mov ecx, eax
add esp, 0x10
test ecx, ecx
je 0x100288e4
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
and eax, 3
je 0x100288e4
or dword [ecx + 4], eax
mov eax, dword [esi + 0x24]
mov dword [ecx + 0x24], eax
push 0x103
push ecx
push ebp
call fcn.1009d530
push eax
push ebp
push ebx
mov dword [esp + 0x70], eax
call fcn.10027fc0
mov ebx, dword [ebp + 0x18]
add esp, 0x18
add ebx, dword [esp + 0x14]
cmp dword [esp + 0x44], 0
je 0x10028d08
push dword [esp + 0x74]
push dword [esp + 0x54]
push ebp
call fcn.10037a70
push dword [esp + 0x80]
push dword [esp + 0x68]
push ebp
call fcn.10037a70
add esp, 0x18
jmp 0x10028d08
mov edx, dword [esi + 0xc]
mov dword [esp + 0x40], edx
test edx, edx
je 0x10028957
test dword [edx + 4], 0x2000
je 0x10028953
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x10028943
mov dword [esp + 0x40], edx
mov eax, dword [esi + 0x10]
mov dword [esp + 0x48], eax
test eax, eax
je 0x10028976
test dword [eax + 4], 0x2000
je 0x10028972
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x10028962
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
and ecx, dword [ebx + 0x20]
and eax, dword [ebx + 0x24]
or ecx, eax
mov dword [esp + 0x44], 0x3fff
je 0x10028998
mov dword [esp + 0x44], 0x800
mov eax, dword [ebx + 0x1c]
test eax, eax
jle 0x100289ad
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx*4 - 0xc]
mov dword [esp + 0x40], edx
push dword [esp + 0x50]
lea eax, [esp + 0x64]
push edx
push eax
push dword [esp + 0x40]
push dword [esp + 0x40]
push dword [esp + 0x80]
call fcn.1002ace0
mov edx, dword [esp + 0x68]
add esp, 0x18
test eax, eax
je 0x100289f6
mov eax, dword [esp + 0x60]
mov dword [ebx + 0x14], eax
mov eax, dword [esp + 0x64]
push edx
mov dword [ebx + 0x18], eax
call fcn.1003ad80
add esp, 4
and ax, word [esp + 0x44]
mov word [ebx + 0xc], ax
cmp byte [esp + 0x13], 0x2d
mov eax, 0x800
jne 0x10028a06
or word [ebx + 0xa], ax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x10028cb6
push edx
push eax
lea eax, [esp + 0x68]
push eax
push dword [ebx + 0x24]
push dword [ebx + 0x20]
push dword [esp + 0x80]
call fcn.1002ace0
add esp, 0x18
test eax, eax
je 0x10028cb6
mov eax, dword [esp + 0x48]
test byte [eax + 4], 0x20
jne 0x10028cb6
cmp dword [ebx + 0x14], 0
mov dword [esp + 0x38], 0
jl 0x10028b97
mov ebx, dword [esp + 0x24]
push 0
push 0
push esi
push ebx
call fcn.1002a3f0
add esp, 0x10
mov esi, eax
cmp byte [ebx + 0x57], 0
je 0x10028a8a
test esi, esi
je 0x10029352
push esi
push ebx
call fcn.100597d0
add esp, 8
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x58
ret
push 3
push esi
push ebp
call fcn.1009d530
add esp, 0xc
test eax, eax
je 0x10029352
push dword [esp + 0x74]
lea ebx, [eax + eax*2]
shl ebx, 4
add ebx, dword [ebp + 0x18]
push eax
push ebp
mov dword [esp + 0x4c], ebx
call fcn.10037a70
add esp, 0xc
cmp byte [esp + 0x13], 0x2d
jne 0x10028ac9
mov eax, 0x800
or word [ebx + 0xa], ax
mov ebx, dword [ebp + 0x18]
add ebx, dword [esp + 0x14]
or word [ebx + 0xa], 8
mov eax, dword [edi]
test byte [eax + 0x50], 0x80
jne 0x10028b9b
mov al, byte [esi]
cmp al, 0x35
je 0x10028aef
cmp al, 0x2d
jne 0x10028b9b
test byte [esi + 4], 1
jne 0x10028b9b
push dword [esi + 0xc]
call fcn.10056440
push dword [esi + 0x10]
mov byte [esp + 0x1b], al
call fcn.10056440
mov cl, al
add esp, 8
mov al, byte [esp + 0x13]
cmp al, cl
je 0x10028b23
cmp al, 0x43
jl 0x10028b9b
cmp cl, 0x43
jl 0x10028b9b
push esi
push edi
call fcn.100596d0
add esp, 8
test eax, eax
je 0x10028b88
cmp dword [eax + 0xc], fcn.1001ead0
je 0x10028b88
push dword [esi + 0xc]
mov eax, dword [esi + 0x10]
push edi
mov dword [esp + 0x60], eax
call fcn.100592a0
add esp, 8
mov dword [esp + 0x50], eax
test eax, eax
jne 0x10028b5e
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [esp + 0x50], eax
push dword [esp + 0x58]
push edi
call fcn.100592a0
add esp, 8
test eax, eax
jne 0x10028b74
mov eax, dword [edi]
mov eax, dword [eax + 8]
push dword [eax]
mov eax, dword [esp + 0x54]
push dword [eax]
call fcn.100762a0
add esp, 8
test eax, eax
jne 0x10028b9b
mov eax, 0x800
or word [ebx + 0xc], ax
mov dword [esp + 0x38], eax
jmp 0x10028b9b
mov dword [esp + 0x40], ebx
mov ecx, dword [esi + 0xc]
cmp byte [ecx], 0xb1
je 0x10028c3f
mov eax, dword [esi + 0x10]
mov dword [esp + 0x58], eax
cmp byte [eax], 0xb1
je 0x10028c3f
test dword [ecx + 4], 0x200
je 0x10028bc3
push ecx
jmp 0x10028beb
test eax, eax
je 0x10028bd3
test dword [eax + 4], 0x200
je 0x10028bd3
push eax
jmp 0x10028beb
push ecx
push edi
call fcn.100592a0
mov ecx, eax
add esp, 8
mov dword [esp + 0x48], ecx
test ecx, ecx
jne 0x10028bf8
push dword [esp + 0x58]
push edi
call fcn.100592a0
add esp, 8
mov dword [esp + 0x48], eax
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x58], eax
test dword [ecx + 4], 0x200
je 0x10028c0e
push ecx
jmp 0x10028c30
test eax, eax
je 0x10028c1e
test dword [eax + 4], 0x200
je 0x10028c1e
push eax
jmp 0x10028c30
push ecx
push edi
call fcn.100592a0
add esp, 8
test eax, eax
jne 0x10028c39
push dword [esp + 0x58]
push edi
call fcn.100592a0
add esp, 8
cmp dword [esp + 0x48], eax
je 0x10028c46
xor dword [esi + 4], 0x400
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, 0x36
jb 0x10028c60
sub al, 0x36
xor al, 2
add al, 0x36
mov byte [esi], al
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x34]
or ecx, dword [esp + 0x4c]
mov dword [edx + 0x14], eax
mov eax, dword [esp + 0x64]
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x30]
or eax, dword [esp + 0x3c]
mov dword [edx + 0x20], eax
mov eax, dword [esp + 0x28]
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x2c]
mov dword [edx + 0x24], ecx
mov dword [edx + 0x2c], eax
movzx eax, byte [esi]
push eax
call fcn.1003ad80
add ax, word [esp + 0x3c]
add esp, 4
and ax, word [esp + 0x44]
mov esi, dword [esp + 0x20]
mov word [edx + 0xc], ax
jmp 0x10028d08
cmp byte [esp + 0x13], 0x32
jne 0x10028d08
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov dword [esp + 0x58], eax
test al, 1
jne 0x10028d08
push dword [esp + 0x40]
call fcn.10056b20
add esp, 4
test eax, eax
jne 0x10028d08
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x58]
or eax, 0x20000000
mov byte [esi], 0xaa
mov dword [esi + 8], str.false
mov dword [ecx], eax
xor eax, eax
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x2c], 0
mov word [ebx + 0xc], ax
mov cl, byte [esi]
cmp cl, 0x35
je 0x10028d18
cmp cl, 0x2d
jne 0x10028ee5
mov edx, dword [esi + 0xc]
mov al, byte [edx]
cmp al, 0xb0
jne 0x10028d24
mov al, byte [edx + 2]
cmp al, 0xb1
jne 0x10028d2d
mov edx, dword [edx + 0x14]
jmp 0x10028d3b
cmp al, 0x8a
jne 0x10028ee5
mov eax, dword [edx + 0x14]
mov edx, dword [eax + 0x1c]
mov edx, dword [edx]
mov dword [esp + 0x48], edx
cmp edx, 1
jle 0x10028ee5
mov eax, dword [esi + 0x10]
mov ch, byte [eax]
cmp ch, 0xb0
jne 0x10028d57
mov ch, byte [eax + 2]
cmp ch, 0xb1
jne 0x10028d61
mov eax, dword [eax + 0x14]
jmp 0x10028d70
cmp ch, 0x8a
jne 0x10028ee5
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], edx
jne 0x10028ee5
mov eax, dword [esi + 0xc]
test dword [eax + 4], 0x1000
je 0x10028d94
mov eax, dword [esi + 0x10]
test dword [eax + 4], 0x1000
jne 0x10028ee5
cmp byte [ebp + 8], 0x2c
jne 0x10028ee5
xor ebp, ebp
mov dword [esp + 0x50], ebp
push edx
push ebp
push dword [esi + 0xc]
push edi
call fcn.10059860
push dword [esp + 0x58]
mov ebx, eax
push ebp
push dword [esi + 0x10]
push edi
call fcn.10059860
push 0
mov ebp, eax
mov al, byte [esi]
push 0x34
push dword [edi]
mov byte [esp + 0x3f], al
call fcn.10053d40
mov esi, eax
add esp, 0x2c
test esi, esi
je 0x10028e6f
push 0x34
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [esi], al
mov eax, 0xffffffff
mov word [esi + 0x22], ax
test ebp, ebp
je 0x10028e13
mov dword [esi + 0x10], ebp
mov eax, dword [ebp + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ebp + 0x18]
inc ecx
jmp 0x10028e18
mov ecx, 1
mov dword [esi + 0x18], ecx
test ebx, ebx
je 0x10028e3a
mov dword [esi + 0xc], ebx
mov eax, dword [ebx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov eax, dword [ebx + 0x18]
cmp eax, ecx
jl 0x10028e3a
lea ecx, [eax + 1]
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x10028e55
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.10055e80
add esp, 0xc
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
and eax, 3
je 0x10028e8d
or dword [esi + 4], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esi + 0x24], eax
jmp 0x10028e8d
test ebx, ebx
je 0x10028e7e
push ebx
push dword [edi]
call fcn.100597d0
add esp, 8
test ebp, ebp
je 0x10028e8d
push ebp
push dword [edi]
call fcn.100597d0
add esp, 8
mov ebx, dword [esp + 0x70]
push 0x8001
push esi
push ebx
call fcn.1009d530
push eax
push ebx
push dword [esp + 0x80]
call fcn.10027fc0
mov ebp, dword [esp + 0x68]
add esp, 0x18
mov edx, dword [esp + 0x48]
inc ebp
mov esi, dword [esp + 0x20]
mov dword [esp + 0x50], ebp
cmp ebp, edx
jl 0x10028da4
mov edx, dword [esp + 0x14]
mov ebp, ebx
mov ecx, 0x2000
mov eax, dword [ebp + 0x18]
or word [eax + edx + 0xa], 6
mov word [eax + edx + 0xc], cx
jmp 0x1002933f
cmp cl, 0x31
jne 0x10028fc3
cmp dword [ebx + 0x1c], 0
jne 0x10028fc3
mov eax, dword [esi + 0xc]
cmp byte [eax], 0xb1
jne 0x10028fc3
mov eax, dword [esp + 0x18]
test dword [eax], 0x1000
je 0x10028fc3
mov eax, dword [esi + 0x14]
cmp dword [eax + 0x34], 0
jne 0x10028fc3
cmp dword [eax + 0x44], 0
jne 0x10028fc3
cmp byte [ebp + 8], 0x2c
jne 0x1002933b
xor edi, edi
mov ecx, dword [esi + 0xc]
mov al, byte [ecx]
cmp al, 0xb0
jne 0x10028f43
mov al, byte [ecx + 2]
cmp al, 0xb1
jne 0x10028f4e
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
jmp 0x10028f61
cmp al, 0x8a
jne 0x10028f5c
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
jmp 0x10028f61
mov eax, 1
cmp edi, eax
jge 0x1002933b
push 0x8002
push esi
push ebp
call fcn.1009d530
mov ecx, dword [ebp + 0x18]
inc edi
push eax
push ebp
push dword [esp + 0x80]
lea esi, [eax + eax*2]
add esi, esi
mov dword [ecx + esi*8 + 0x1c], edi
call fcn.10027fc0
mov eax, dword [ebp + 0x18]
add esp, 0x18
mov ecx, dword [esp + 0x74]
mov dword [eax + esi*8 + 0x10], ecx
mov ecx, dword [ebp + 0x18]
mov eax, dword [esp + 0x14]
mov ax, word [ecx + eax + 8]
mov word [ecx + esi*8 + 8], ax
mov eax, dword [ebp + 0x18]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
inc byte [ecx + eax + 0xe]
jmp 0x10028f37
cmp byte [ebp + 8], 0x2c
jne 0x1002933b
cmp cl, 0xac
jne 0x100290af
mov ebx, dword [esi + 0x14]
test ebx, ebx
je 0x1002933b
cmp dword [ebx], 2
jne 0x1002933b
mov ebp, dword [ebx + 0x1c]
cmp byte [ebp], 0xa7
jne 0x10029032
mov eax, dword [ebp + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x10029032
mov eax, dword [esp + 0x20]
xor esi, esi
mov eax, dword [eax + 8]
mov dword [esp + 0x58], eax
nop dword [eax]
push dword [esi*8 + 0x100acf64]
push eax
call fcn.100762a0
add esp, 8
test eax, eax
je 0x1002909a
mov eax, dword [esp + 0x58]
inc esi
cmp esi, 4
jl 0x10029010
mov esi, dword [esp + 0x20]
mov ebp, dword [ebx + 8]
cmp byte [ebp], 0xa7
jne 0x10029337
mov eax, dword [ebp + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x10029337
push eax
push dword [esp + 0x28]
call fcn.10061900
add esp, 8
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x48]
test eax, eax
je 0x10029337
lea edx, [esp + 0x40]
push edx
lea edx, [esp + 0x38]
push edx
push dword [esi + 8]
push 2
push ecx
call eax
add esp, 0x14
mov dword [esp + 0x44], eax
cmp eax, 0x96
jl 0x10029337
mov ebx, dword [ebx + 0x1c]
mov edx, 1
jmp 0x10029128
mov al, byte [esi*8 + 0x100acf68]
mov edx, 1
mov ebx, dword [ebx + 8]
mov dword [esp + 0x44], eax
jmp 0x10029128
cmp cl, 0x34
je 0x100290c2
cmp cl, 0xab
je 0x100290c2
cmp cl, 0x33
jne 0x1002933b
mov ebp, dword [esi + 0xc]
xor edx, edx
mov ebx, dword [esi + 0x10]
cmp byte [ebp], 0xa7
jne 0x100290df
mov eax, dword [ebp + 0x2c]
mov esi, 1
cmp byte [eax + 0x2b], 1
cmove edx, esi
test ebx, ebx
je 0x100290f8
cmp byte [ebx], 0xa7
jne 0x100290f8
mov eax, dword [ebx + 0x2c]
cmp byte [eax + 0x2b], 1
jne 0x100290f8
mov eax, ebp
inc edx
mov ebp, ebx
mov ebx, eax
cmp cl, 0x34
setne al
dec al
and al, 0x44
cmp cl, 0xab
jne 0x1002910e
mov byte [esp + 0x44], 0x45
jmp 0x10029120
cmp cl, 0x33
movzx eax, al
mov esi, 0x46
cmove eax, esi
mov byte [esp + 0x44], al
test edx, edx
je 0x10029337
dec edx
mov dword [esp + 0x58], edx
test ebx, ebx
je 0x10029171
cmp byte [ebx], 0xa7
jne 0x10029153
test byte [ebx + 4], 0x20
jne 0x10029153
push dword [ebx + 0x1c]
push dword [esp + 0x20]
call fcn.1008ee60
add esp, 8
mov dword [esp + 0x38], edx
mov esi, eax
jmp 0x10029186
test dword [ebx + 4], 0x810000
jne 0x10029171
push ebx
push dword [esp + 0x20]
call fcn.1008ec60
add esp, 8
mov dword [esp + 0x38], edx
mov esi, eax
jmp 0x10029186
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], esi
test ebp, ebp
je 0x100291c3
cmp byte [ebp], 0xa7
jne 0x100291ab
test byte [ebp + 4], 0x20
jne 0x100291ab
push dword [ebp + 0x1c]
push dword [esp + 0x20]
call fcn.1008ee60
add esp, 8
jmp 0x100291d4
test dword [ebp + 4], 0x810000
jne 0x100291c3
push ebp
push dword [esp + 0x20]
call fcn.1008ec60
add esp, 8
jmp 0x100291d4
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
and edx, dword [esp + 0x38]
and eax, esi
or eax, edx
jne 0x10029325
test ebx, ebx
je 0x100291f7
push eax
push eax
push ebx
push dword [esp + 0x30]
call fcn.1002a3f0
add esp, 0x10
jmp 0x100291f9
xor eax, eax
push 0
push 0x34
push dword [edi]
mov dword [esp + 0x5c], eax
call fcn.10053d40
mov esi, eax
add esp, 0xc
test esi, esi
je 0x10029269
push 0x34
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [esp + 0x5c]
or eax, 0xffffffff
add esp, 0xc
mov byte [esi], 0x2e
mov word [esi + 0x22], ax
test ecx, ecx
je 0x10029244
mov dword [esi + 0x10], ecx
mov eax, dword [ecx + 4]
and eax, 0x400208
or dword [esi + 4], eax
mov ecx, dword [ecx + 0x18]
inc ecx
jmp 0x10029249
mov ecx, 1
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
cmp ecx, eax
jle 0x1002927c
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.10055e80
add esp, 0xc
jmp 0x1002927c
mov eax, dword [esp + 0x50]
test eax, eax
je 0x1002927c
push eax
push dword [edi]
call fcn.100597d0
add esp, 8
mov eax, dword [esp + 0x18]
test byte [eax], 1
je 0x10029297
test esi, esi
je 0x10029297
mov eax, dword [esp + 0x20]
or dword [esi + 4], 1
mov eax, dword [eax + 0x24]
mov dword [esi + 0x24], eax
push 3
push esi
push dword [esp + 0x78]
call fcn.1009d530
mov ecx, dword [esp + 0x7c]
add esp, 0xc
mov edi, dword [esp + 0x74]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x48]
mov esi, dword [ecx + 0x18]
shl edx, 4
add esi, edx
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x38]
mov dword [esi + 0x24], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x14], eax
movsx eax, word [ebp + 0x20]
mov dword [esi + 0x18], eax
mov eax, 0x40
mov word [esi + 0xc], ax
mov eax, dword [esp + 0x44]
mov byte [esi + 0xf], al
mov eax, dword [ecx + 0x18]
mov dword [edx + eax + 0x10], edi
mov ecx, dword [ecx + 0x18]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x54]
mov ax, word [ecx + eax + 8]
mov word [edx + ecx + 8], ax
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x14]
mov eax, dword [ecx + 0x18]
inc byte [edx + eax + 0xe]
mov ecx, dword [ecx + 0x18]
add ecx, edx
or word [ecx + 0xa], 8
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
mov edx, dword [esp + 0x58]
mov eax, ebp
mov ebp, ebx
mov ebx, eax
test edx, edx
jg 0x10029128
mov ebp, dword [esp + 0x70]
mov edx, dword [esp + 0x14]
mov eax, dword [ebp + 0x18]
mov ecx, dword [esp + 0x3c]
add eax, edx
or dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x4c]
or dword [eax + 0x24], ecx
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x58
ret