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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x148
mov eax, dword [0x102beb54]
xor eax, esp
mov dword [esp + 0x144], eax
push esi
mov esi, dword [ecx]
lea eax, [ecx + 0x50]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x30], ecx
mov eax, dword [esi]
mov dword [esp + 0x5c], eax
lea eax, [edx + edx*4]
shl eax, 4
lea edx, [ecx + 0x2f0]
add edx, eax
mov dword [esp + 0x44], 0
push edi
mov edi, dword [esi + 8]
mov dword [esp + 0x6c], esi
mov eax, dword [edx + 0x40]
mov dword [esp + 0x2c], eax
movzx eax, byte [edx + 0x2c]
mov dword [esp + 0x50], edi
mov dword [esp + 0xc], edx
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x34]
shl ecx, 4
mov eax, dword [eax + 4]
add eax, 8
add eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 8], eax
mov eax, dword [eax + 0x30]
mov dword [esp + 0x3c], eax
xor eax, eax
cmp dword [ecx + 0x1ec], eax
jle 0x10087d68
add ecx, 0x1f0
mov edx, dword [esp + 0x3c]
cmp dword [ecx], edx
mov edx, dword [esp + 0xc]
je 0x10087f46
mov edi, dword [esp + 0x34]
inc eax
add ecx, 4
cmp eax, dword [edi + 0x1ec]
mov edi, dword [esp + 0x50]
jl 0x10087d44
xorps xmm0, xmm0
movlpd qword [esp + 0x98], xmm0
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
not ecx
not eax
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
mov dword [edx + 0x48], ecx
mov ecx, dword [esp + 0x34]
mov dword [edx + 0x4c], eax
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x44]
mov ecx, dword [esp + 0x40]
call fcn.101ead30
and eax, 1
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x2c]
test byte [eax + 0x24], 0x40
je 0x10087dc8
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], 1
test byte [eax + 0x2c], 0x20
je 0x10087dd0
mov dword [esp + 0x14], 0
mov edx, dword [edi + 0xc]
mov dword [esp + 0x28], edx
mov ecx, dword [edx + 0x44]
mov dword [esp + 0x1c], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x44], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x10087e11
mov edx, dword [edx + 0x48]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x28]
push 0
push eax
mov ecx, dword [ecx]
call fcn.100203f0
mov edx, dword [esp + 0x30]
add esp, 8
mov ecx, dword [esp + 0x1c]
mov dword [edx + 0x48], eax
mov eax, dword [edx + 0x48]
test eax, eax
je 0x10087e1f
mov dword [eax + ecx*4], 0xffffffff
mov edx, dword [esp + 0xc]
not ecx
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x1c], ecx
mov dword [edx + 0x10], ecx
mov dword [edx + 0xc], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x84], ecx
mov eax, dword [ecx + 0x44]
mov dword [esp + 0x74], eax
inc eax
mov dword [ecx + 0x44], eax
mov eax, dword [esp + 0x74]
dec eax
test dword [esp + 0x74], eax
jne 0x10087e7c
mov eax, dword [esp + 0x74]
mov edx, dword [ecx + 0x48]
mov ecx, dword [ecx]
push 0
lea eax, [eax*8 + 4]
push eax
call fcn.100203f0
mov ecx, dword [esp + 0x8c]
add esp, 8
mov edx, dword [esp + 0xc]
mov dword [ecx + 0x48], eax
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x10087e8e
mov ecx, dword [esp + 0x74]
mov dword [eax + ecx*4], 0xffffffff
cmp byte [edx + 0x2c], 0
mov eax, dword [esp + 0x74]
not eax
mov dword [esp + 0x74], eax
mov dword [edx + 0x18], eax
jbe 0x10087eca
mov eax, dword [esp + 8]
test byte [eax + 0x24], 8
je 0x10087eca
mov eax, dword [esi + 0x2c]
mov ecx, edi
inc eax
mov dword [esi + 0x2c], eax
push eax
mov dword [edx], eax
mov edx, 0x38
push 0
call fcn.1003e830
mov edx, dword [esp + 0x14]
add esp, 8
mov ecx, dword [esp + 0x40]
mov eax, ecx
test ecx, ecx
jle 0x10087ee3
mov ecx, edx
cmp dword [ecx], 0
jne 0x10087ee3
dec eax
sub ecx, 0x50
test eax, eax
jg 0x10087ed6
mov ecx, dword [esp + 0x34]
lea eax, [eax + eax*4]
add eax, eax
mov dword [esp + 0x84], 0xb
mov eax, dword [ecx + eax*8 + 0x2fc]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x98], ecx
test cl, 0x10
je 0x10088013
mov esi, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
mov dword [esp + 0x14], esi
cmp dword [eax + 0x30], ecx
jg 0x10087f69
push edx
push 0
push esi
mov edx, 0xf
mov ecx, edi
call fcn.1003e6a0
add esp, 0xc
jmp 0x10087f97
xor ecx, ecx
xor esi, esi
bts ecx, eax
cmp eax, 0x20
cmovae esi, ecx
xor ecx, esi
mov dword [esp + 0x84], esi
cmp eax, 0x40
mov eax, esi
cmovae eax, ecx
jmp 0x10087d82
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0xf
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x88]
cmp dword [eax + 0x30], edx
jg 0x10087fd1
mov esi, dword [esp + 0x1c]
mov edx, 0x10
push 0
push esi
push dword [esp + 0x1c]
mov ecx, edi
call fcn.1003e6a0
mov edx, eax
add esp, 0xc
mov eax, dword [esp + 0xc]
mov dword [eax + 0x34], edx
mov byte [eax + 0x2d], 0xd
jmp 0x100884dc
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x1c]
mov dword [eax + ecx*4], 0x10
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0xc]
mov dword [eax + 0x34], edx
mov byte [eax + 0x2d], 0xd
jmp 0x100884dc
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x24]
test eax, 0x400
je 0x100884f7
movzx eax, word [ecx + 0x28]
inc dword [esi + 0x3c]
mov dword [esp + 0x10], eax
lea ecx, [eax + 2]
cmp ecx, 1
jne 0x10088060
mov al, byte [esi + 0x13]
test al, al
jne 0x1008804b
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x24], eax
jmp 0x10088089
dec al
mov byte [esi + 0x13], al
movzx eax, al
mov eax, dword [esi + eax*4 + 0x15c]
mov dword [esp + 0x24], eax
jmp 0x10088089
mov eax, dword [esi + 0x20]
mov dword [esp + 0x24], eax
cmp ecx, dword [esi + 0x1c]
jg 0x10088076
add eax, ecx
sub dword [esi + 0x1c], ecx
mov dword [esi + 0x20], eax
jmp 0x10088089
mov eax, dword [esi + 0x2c]
lea edi, [eax + 1]
add eax, ecx
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x50]
mov dword [esi + 0x2c], eax
mov eax, dword [edx + 0xc]
xor ecx, ecx
mov dword [esp + 0x40], eax
mov dword [esp + 8], ecx
cmp dword [esp + 0x10], ecx
jbe 0x10088109
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0xc]
add eax, 2
mov dword [esp + 0x20], eax
nop dword [eax + eax]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + ecx*4]
test edx, edx
je 0x100880fa
mov eax, dword [esp + 0x20]
add eax, ecx
test byte [edx + 0xc], 1
je 0x100880e4
push eax
push dword [esp + 0x50]
push ecx
push edi
mov ecx, esi
call fcn.10086f40
mov edx, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x40], edx
jmp 0x100880f6
mov edx, dword [edx]
mov ecx, esi
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.10087bc0
add esp, 8
mov ecx, dword [esp + 8]
inc ecx
mov dword [esp + 8], ecx
cmp ecx, dword [esp + 0x10]
jl 0x100880b0
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x88]
mov edx, dword [eax + 0x18]
mov eax, dword [edi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x10088136
push 0
push dword [esp + 0x28]
mov ecx, edi
push edx
mov edx, 0x38
call fcn.1003e6a0
add esp, 0xc
jmp 0x10088168
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x38
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 0xc]
mov edx, dword [esp + 0x24]
mov ecx, dword [edi + 0x88]
inc edx
mov dword [esp + 0x20], edx
cmp dword [eax + 0x30], ecx
jg 0x10088197
push 0
push edx
push dword [esp + 0x18]
mov edx, 0x38
mov ecx, edi
call fcn.1003e6a0
add esp, 0xc
jmp 0x100881cd
mov edx, dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x38
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x2c]
or eax, 0xffffffff
mov edx, 0xfffffff9
cmp byte [ecx + 0x1c], 0
cmovne eax, edx
mov edx, dword [edi + 0x88]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x64], eax
mov eax, dword [edi + 0xc]
cmp dword [eax + 0x30], edx
jg 0x1008821a
push dword [esp + 0x24]
mov edx, dword [esp + 0x88]
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.1003e6a0
add esp, 0xc
mov edx, eax
jmp 0x10088254
mov esi, dword [esp + 0x3c]
lea eax, [edx + 1]
mov dword [edi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x6c]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x20]
mov ecx, edi
push dword [esp + 0x68]
call fcn.1003f4e0
mov eax, dword [esp + 0x34]
add esp, 8
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x34]
mov byte [eax + 0x1c], 0
mov eax, dword [esp + 0x3c]
mov dword [ecx + 0x30], eax
mov eax, 0x32
cmp byte [edx + 0x31], 0
mov edx, 0xa6
cmovne eax, edx
mov edx, dword [esp + 0x10]
mov byte [ecx + 0x2d], al
sub edx, 1
mov eax, dword [edi + 0x88]
mov dword [ecx + 0x34], eax
mov dword [esp + 0x1c], edx
js 0x100884d1
mov eax, dword [ecx + 0x38]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [esp + 0x14], eax
nop dword [eax + eax]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edx*4]
mov dword [esp + 8], eax
cmp edx, 0x10
jge 0x100882fb
mov eax, dword [esp + 0x2c]
mov cx, dx
mov ax, word [eax + 0x1e]
shr ax, cl
mov ecx, dword [esp + 0xc]
test al, 1
je 0x100882f7
mov edx, dword [esp + 8]
call fcn.10086d80
jmp 0x100884bc
mov eax, dword [esp + 8]
test byte [eax + 0xc], 1
je 0x100884c0
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x45], 0
jne 0x100883c6
mov edx, dword [esp + 0x14]
mov eax, dword [ecx + 0x3c]
sub edx, 0xc
mov dword [esp + 0x14], edx
mov ecx, dword [eax + edx + 4]
test ecx, ecx
jns 0x10088330
mov ecx, dword [edi + 0x88]
dec ecx
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x1008833f
mov eax, 0x102c70c4
jmp 0x10088348
mov eax, dword [edi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 4]
mov al, byte [eax]
mov byte [esp + 0x1b], al
mov eax, dword [edi + 0xc]
mov dword [esp + 0x28], ecx
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x10088389
mov ecx, dword [esp + 0x40]
push edx
movzx edx, byte [esp + 0x1f]
push ecx
mov ecx, dword [esp + 0x30]
push ecx
mov ecx, edi
call fcn.1003e6a0
add esp, 0xc
jmp 0x100883c6
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x1b]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x28]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esi]
push 0
push 0x30
call fcn.10020250
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x100884bc
push 0x30
push 0
push eax
call fcn.102010e0
mov eax, dword [esp + 0x1c]
or ecx, 0xffffffff
add esp, 0xc
mov word [eax + 0x22], cx
mov ecx, eax
mov byte [eax], 0x4e
call fcn.10053eb0
mov eax, dword [esi]
mov ecx, dword [eax + 0x6c]
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x18], ecx
jle 0x1008841f
push ecx
push str.Expression_tree_is_too_large__maximum_depth__d_
push esi
call fcn.10022e00
add esp, 0xc
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
push 0
push 0x31
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x68]
call fcn.10020250
mov edx, eax
add esp, 8
mov dword [esp + 0x20], edx
test edx, edx
je 0x10088474
push 0x30
push 0
push edx
call fcn.102010e0
mov edx, dword [esp + 0x2c]
add esp, 0xc
or eax, 0xffffffff
mov word [edx + 0x22], ax
lea eax, [edx + 0x30]
mov byte [edx], 0x9d
mov dword [edx + 8], eax
mov byte [eax], 0
mov dword [edx + 0x18], 1
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x10], edx
test edx, edx
je 0x100884aa
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
add edi, 2
add eax, edi
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0xc]
push 0
push dword [eax + 0x18]
push ecx
push esi
call fcn.1005a510
mov edi, dword [esp + 0x60]
add esp, 0x10
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0xc], 0
mov edx, ecx
mov ecx, dword [esp + 0x60]
call fcn.100547e0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xc]
sub edx, 1
mov dword [esp + 0x1c], edx
jns 0x100882c0
mov ecx, esi
call fcn.10058550
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x48]
neg edi
sbb edi, edi
add edi, 2
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x80]
jmp 0x10089bc4
test al, 5
setne cl
bt eax, 8
setb al
test al, cl
mov eax, dword [esp + 0x2c]
je 0x100885e4
mov eax, dword [eax + 0x30]
mov ecx, esi
mov edx, dword [eax]
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
push eax
push dword [esp + 0x50]
mov dword [esp + 0x28], eax
push 0
push dword [esp + 0x18]
call fcn.10086f40
mov edx, eax
add esp, 0x10
mov eax, dword [esp + 0x20]
mov dword [esp + 8], edx
cmp edx, eax
je 0x1008854e
mov edx, eax
mov ecx, esi
call fcn.1005b1c0
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov ecx, dword [edi + 0x88]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x10088585
push edx
push dword [esp + 0x18]
mov edx, 0x1f
mov ecx, edi
push dword [esp + 0x44]
call fcn.1003e6a0
mov edx, dword [esp + 0x14]
add esp, 0xc
jmp 0x100885b7
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov edi, dword [esp + 0x3c]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x1f
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push 1
mov ecx, esi
call fcn.100584b0
mov edx, dword [esp + 0x40]
add esp, 4
mov ecx, esi
push dword [esp + 8]
push 0xffffffffffffffff
call fcn.10058380
mov eax, dword [esp + 0x14]
add esp, 8
mov byte [eax + 0x2d], 0xa6
jmp 0x100884dc
mov ecx, dword [eax + 0x24]
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
jne 0x100888a3
xor eax, eax
mov dword [esp + 0x54], 0xa6
xor edx, edx
mov dword [esp + 0x40], 0
test cl, 0x20
je 0x10088627
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], 4
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
xor eax, eax
jmp 0x1008862b
mov dword [esp + 0x14], eax
test cl, 0x10
je 0x1008863e
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov eax, dword [ecx + eax]
cmp dword [esp + 0x4c], 0
mov ecx, edx
cmove ecx, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x4c]
test ecx, ecx
cmove eax, edx
mov dword [esp + 0x64], eax
test eax, eax
je 0x10088748
mov ecx, dword [eax]
mov dword [esp + 0x10], 0x1a18191b
mov dword [esp + 0x14], ecx
mov edx, dword [ecx + 0x10]
mov al, byte [edx]
cmp al, 0x9d
jne 0x1008867b
mov al, byte [edx + 0x26]
cmp al, 0x9e
jne 0x10088684
lea eax, [edx + 0x14]
jmp 0x1008868b
cmp al, 0x77
jne 0x100886df
mov eax, dword [edx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x100886df
mov al, byte [esi + 0x13]
test al, al
jne 0x100886a1
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
jmp 0x100886b0
dec al
mov byte [esi + 0x13], al
movzx eax, al
mov eax, dword [esi + eax*4 + 0x15c]
mov edx, dword [ecx + 0x10]
mov ecx, esi
push 1
push eax
mov dword [esp + 0x4c], eax
call fcn.10087bc0
mov ecx, dword [esp + 0x1c]
add esp, 8
mov eax, dword [esp + 0x44]
mov dword [esp + 8], eax
movzx eax, byte [ecx]
sub eax, 0x4f
or eax, 1
mov cl, byte [esp + eax + 0x10]
jmp 0x10088712
lea eax, [esp + 0x20]
mov ecx, esi
push eax
call fcn.10059cf0
mov edx, dword [esp + 0x68]
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], eax
call fcn.10086d80
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 0x3f]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], eax
push dword [esp + 8]
movzx edx, cl
mov ecx, edi
push dword [esp + 0x20]
push dword [esp + 0x44]
call fcn.1003e6e0
mov edx, dword [esp + 0x14]
add esp, 0xc
mov ecx, esi
push 1
call fcn.100584b0
mov edx, dword [esp + 0x48]
add esp, 4
mov ecx, esi
call fcn.1005b1c0
jmp 0x10088764
push dword [esp + 0x20]
xor ecx, 1
push dword [esp + 0x40]
lea edx, [ecx*4 + 0x21]
mov ecx, edi
call fcn.1003e830
add esp, 8
mov eax, dword [esp + 0x28]
test eax, eax
je 0x10088814
mov eax, dword [eax]
inc dword [esi + 0x2c]
mov ecx, dword [esi + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x44], ecx
push ecx
mov ecx, esi
mov dword [esp + 0x1c], eax
call fcn.10087bc0
mov ecx, dword [esp + 0x1c]
add esp, 8
mov ecx, dword [ecx + 0x10]
mov dl, byte [ecx]
mov al, dl
cmp al, 0x9d
jne 0x100887a2
mov al, byte [ecx + 0x26]
cmp al, 0x9e
jne 0x100887ab
lea eax, [ecx + 0x14]
jmp 0x100887b2
cmp al, 0x77
jne 0x100887b9
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x100887c7
mov eax, dword [esp + 0x14]
mov al, byte [eax]
cmp al, 0x51
je 0x100887d4
cmp al, 0x4f
je 0x100887d4
mov eax, dword [esp + 0x4c]
lea eax, [eax*2 + 0x4f]
jmp 0x100887e2
mov eax, dword [esp + 0x4c]
xor eax, 1
lea eax, [eax*2 + 0x50]
mov dword [esp + 0x54], eax
cmp dl, 0x9d
jne 0x100887ee
mov dl, byte [ecx + 0x26]
cmp dl, 0x9e
jne 0x100887f8
lea eax, [ecx + 0x14]
jmp 0x10088800
cmp dl, 0x77
jne 0x10088807
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x10088814
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0xc]
call fcn.10086d80
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0xc]
mov ecx, dword [edi + 0x88]
sete al
add al, 6
cmp dword [esp + 0x54], 0xa6
mov byte [edx + 0x2d], al
mov eax, edx
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x30], edx
mov dword [eax + 0x34], ecx
je 0x100884dc
inc dword [esi + 0x2c]
mov ecx, edi
mov esi, dword [esi + 0x2c]
push esi
push edx
mov edx, 0x7b
call fcn.1003e830
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x74]
push esi
push 0xffffffffffffffff
call fcn.10058380
mov edx, dword [esp + 0x64]
mov ecx, edi
push esi
push dword [esp + 0x30]
push dword [esp + 0x58]
call fcn.1003e6e0
mov eax, dword [edi + 0x88]
add esp, 0x1c
test eax, eax
jle 0x100884d8
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [edi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x100884d8
test ecx, 0x200
je 0x1008921f
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x68], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x30], 0
movzx eax, word [eax + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
movzx eax, word [eax + 0x1a]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x2c]
movzx eax, word [eax + 0x1c]
mov dword [esp + 0x54], eax
xor eax, eax
mov dword [esp + 0x7c], eax
mov byte [esp + 0x1b], al
mov byte [esp + 0x73], al
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
test byte [eax + 0x2c], 1
je 0x1008893c
cmp byte [eax + 0x2f], 0
mov eax, dword [esp + 0x10]
jle 0x10088940
mov esi, dword [esp + 0x48]
cmp word [esi + 0x32], ax
mov esi, dword [esp + 0x6c]
jbe 0x10088940
mov byte [esp + 0x1b], 1
mov dword [esp + 0x30], 1
jmp 0x10088940
mov eax, dword [esp + 0x10]
movzx eax, ax
mov dword [esp + 0x24], eax
mov dword [esp + 8], eax
test cl, 0x20
je 0x10088986
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 8]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edi*4]
inc edi
mov dword [esp + 8], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x68], eax
movzx eax, word [edi + 0x1a]
mov edi, dword [esp + 0x30]
cmp edi, eax
cmovbe edi, eax
mov eax, edi
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x30], eax
test cl, 0x10
je 0x10088a69
mov eax, dword [esp + 0x2c]
mov edx, 0x100
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x58], eax
movzx ecx, word [ecx + 0x1c]
cmp dword [esp + 0x30], ecx
cmova ecx, dword [esp + 0x30]
test word [eax + 0xa], dx
mov edx, dword [esp + 0xc]
mov dword [esp + 8], ecx
je 0x10088a14
mov eax, dword [esi + 0x2c]
mov ecx, edi
inc eax
mov dword [esi + 0x2c], eax
push eax
mov dword [edx + 0x24], eax
mov edx, 0x38
push 1
call fcn.1003e830
mov edx, dword [esp + 0x14]
xor ecx, ecx
mov eax, dword [edi + 0x88]
add esp, 8
mov edi, dword [esp + 0x24]
shl dword [edx + 0x24], 1
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x1c]
cmp byte [edi + eax], 1
mov edi, dword [esp + 0x50]
sete cl
xor ecx, dword [esp + 0x4c]
or dword [edx + 0x24], ecx
mov ecx, dword [esp + 8]
cmp dword [esp + 0x68], 0
mov dword [esp + 0x30], ecx
jne 0x10088a69
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov eax, dword [eax + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x20], ecx
test ecx, ecx
js 0x10088a4d
mov eax, dword [esp + 0x48]
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
je 0x10088a5c
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 8]
mov dword [esp + 0x30], eax
cmp ecx, 0xfffffffe
jne 0x10088a69
jmp 0x10088a60
mov eax, dword [esp + 8]
mov byte [esp + 0x1b], 1
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + 0x32]
mov dword [esp + 0x20], eax
cmp cx, ax
jae 0x10088aa3
mov eax, dword [esp + 0x48]
xor ecx, ecx
mov edi, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
cmp byte [edi + eax], cl
mov edi, dword [esp + 0x50]
sete cl
cmp dword [esp + 0x4c], ecx
je 0x10088aaf
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x4c], 0
je 0x10088ae6
cmp ax, cx
jne 0x10088ae6
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
mov dword [esp + 0x68], eax
mov al, byte [esp + 0x1b]
mov byte [esp + 0x73], al
mov eax, dword [esp + 0x44]
mov dword [esp + 0x58], ecx
movzx ecx, di
mov edi, dword [esp + 0x50]
movzx eax, al
mov byte [esp + 0x1b], 0
mov dword [esp + 0x44], ecx
mov dword [esp + 0x54], eax
lea eax, [esp + 0x78]
mov ecx, esi
push eax
push dword [esp + 0x34]
push dword [esp + 0x54]
call fcn.100875d0
mov ecx, dword [esp + 0x84]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x1c], edx
test ecx, ecx
je 0x10088b2e
cmp word [esp + 0x54], 0
je 0x10088b2e
mov edx, dword [esp + 0x24]
lea edx, [ecx + edx]
mov ecx, dword [esp + 0x60]
call fcn.100204b0
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x68]
test eax, eax
je 0x10088b4f
test byte [eax + 0xc], 0x28
mov dword [esp + 0x5c], 0
je 0x10088b57
mov dword [esp + 0x5c], 1
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x10088b6d
test byte [ecx + 0xc], 0x28
mov dword [esp + 8], 0
je 0x10088b75
mov dword [esp + 8], 1
test eax, eax
jne 0x10088d0e
cmp word [esp + 0x10], ax
ja 0x10088d0e
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0x30], ecx
test al, al
je 0x10088bce
lea eax, [edx + ecx]
mov edx, 0x3b
push eax
push 0
mov ecx, edi
call fcn.1003e830
mov eax, dword [esp + 0x2c]
add esp, 8
inc eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x30], eax
mov al, byte [esp + 0x1b]
mov dword [esp + 0x28], 1
mov ecx, dword [esp + 0x30]
push dword [esp + 0x78]
mov edx, dword [esp + 0x20]
movzx eax, al
sub ecx, eax
push ecx
mov ecx, esi
call fcn.10086e00
mov eax, dword [esp + 0x34]
add esp, 8
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x10088bfd
cmp dword [esp + 0x30], eax
je 0x10088c2e
mov ecx, dword [esp + 0x28]
push dword [esp + 0x30]
mov eax, dword [esp + 0x60]
push dword [esp + 0x20]
push dword [esp + 0x48]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x44]
movzx edx, byte [ecx + eax*2 + 0x102a8700]
mov ecx, edi
call fcn.1003ebe0
add esp, 0x10
mov eax, dword [esp + 0x58]
test eax, eax
je 0x10088e22
mov eax, dword [eax]
mov ecx, esi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x20]
mov edx, eax
mov dword [esp + 0x2c], eax
call fcn.100584b0
mov eax, dword [esp + 0x58]
add esp, 4
mov edx, dword [esp + 0x5c]
mov ecx, esi
movzx eax, ax
push eax
push dword [esp + 0x2c]
call fcn.10087bc0
push dword [esp + 0x60]
mov edx, dword [esp + 0x18]
mov ecx, edi
call fcn.100879f0
mov ecx, dword [esp + 0x68]
add esp, 0xc
call fcn.10055be0
test eax, eax
je 0x10088caa
push dword [esp + 0x40]
mov edx, 0x4b
mov ecx, edi
push dword [esp + 0x2c]
call fcn.1003e830
add esp, 8
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x10088ce4
mov ecx, dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x58]
movzx edx, ax
call fcn.10086e70
mov eax, dword [esp + 0x80]
add esp, 4
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x28]
push eax
movzx eax, cx
mov ecx, esi
push eax
call fcn.10086e00
add esp, 8
mov ecx, dword [esp + 0x54]
movzx eax, cx
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x5c]
mov cl, byte [eax]
cmp cl, 0x9d
jne 0x10088cfd
mov cl, byte [eax + 0x26]
cmp cl, 0x9e
jne 0x10088dfa
add eax, 0x14
jmp 0x10088e02
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], 1
mov dword [esp + 0x30], ecx
test eax, eax
je 0x10088b90
mov eax, dword [eax]
mov edx, dword [esp + 0x44]
add ecx, dword [esp + 0x1c]
movzx edx, dx
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x24], ecx
mov edx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.10087bc0
push dword [esp + 0x70]
mov edi, dword [esp + 0x5c]
mov ecx, edi
mov edx, dword [esp + 0x18]
call fcn.100879f0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
call fcn.10055be0
test eax, eax
je 0x10088d83
push dword [esp + 0x40]
mov edx, 0x4b
mov ecx, edi
push dword [esp + 0x24]
call fcn.1003e830
add esp, 8
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x10088da5
mov eax, dword [esp + 0x24]
add eax, ecx
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x48]
movzx edx, ax
call fcn.10086e70
add esp, 4
mov ecx, dword [esp + 0x44]
movzx eax, cx
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x10]
mov cl, byte [eax]
cmp cl, 0x9d
jne 0x10088dbe
mov cl, byte [eax + 0x26]
cmp cl, 0x9e
jne 0x10088dc8
add eax, 0x14
jmp 0x10088dd0
cmp cl, 0x77
jne 0x10088de6
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x10088de6
mov dword [esp + 0x5c], 1
xor al, al
jmp 0x10088bce
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0xc]
call fcn.10086d80
xor al, al
jmp 0x10088bce
cmp cl, 0x77
jne 0x10088e13
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x10088e13
mov dword [esp + 8], 1
jmp 0x10088e4f
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0xc]
call fcn.10086d80
jmp 0x10088e4f
cmp byte [esp + 0x73], 0
je 0x10088e4f
mov eax, dword [esp + 0x24]
mov edx, 0x3b
add eax, dword [esp + 0x1c]
mov ecx, edi
push eax
push 0
call fcn.1003e830
add esp, 8
mov dword [esp + 8], 0
inc dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x60]
test ecx, ecx
je 0x10088ea8
test edx, edx
je 0x10088e9b
cmp dword [edx + 0x1c8], 0
je 0x10088e75
mov edx, ecx
mov ecx, dword [esp + 0x60]
call fcn.1001fef0
jmp 0x10088ea4
cmp ecx, dword [edx + 0x120]
jb 0x10088e9b
cmp ecx, dword [edx + 0x124]
jae 0x10088e9b
mov eax, dword [edx + 0x11c]
mov dword [ecx], eax
dec dword [edx + 0x108]
mov dword [edx + 0x11c], ecx
jmp 0x10088ea8
push ecx
call fcn.1001fe80
add esp, 4
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x10088ef9
test edx, edx
je 0x10088ef0
cmp dword [edx + 0x1c8], 0
je 0x10088eca
mov edx, ecx
mov ecx, dword [esp + 0x60]
call fcn.1001fef0
jmp 0x10088ef9
cmp ecx, dword [edx + 0x120]
jb 0x10088ef0
cmp ecx, dword [edx + 0x124]
jae 0x10088ef0
mov eax, dword [edx + 0x11c]
mov dword [ecx], eax
dec dword [edx + 0x108]
mov dword [edx + 0x11c], ecx
jmp 0x10088ef9
push ecx
call fcn.1001fe80
add esp, 4
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x88]
mov dword [ecx + 0x34], eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10088f35
mov ecx, dword [esp + 0x4c]
push eax
push dword [esp + 0x20]
mov eax, dword [esp + 0x10]
push dword [esp + 0x48]
push dword [esp + 0x44]
movzx edx, byte [eax + ecx*2 + 0x102a67a4]
mov ecx, edi
call fcn.1003ebe0
add esp, 0x10
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x48]
jne 0x1008908e
mov ecx, dword [edx + 0xc]
test byte [ecx + 0x24], 0x20
jne 0x10088fc7
mov ecx, dword [esp + 0x34]
movzx eax, word [ecx + 0x2c]
test eax, 0x400
jne 0x10088f85
test eax, 0x1000
je 0x10088f69
cmp byte [ecx + 0x31], 1
je 0x10088f85
mov esi, dword [esp + 0x38]
mov edi, ecx
push esi
push dword [esp + 0x40]
call fcn.10087a50
mov edx, dword [esp + 0x50]
add esp, 8
jmp 0x10089096
inc dword [esi + 0x2c]
mov edx, 0x81
mov esi, dword [esi + 0x2c]
mov ecx, edi
push esi
push dword [esp + 0x3c]
call fcn.1003e830
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x74]
push esi
push 0xffffffffffffffff
call fcn.10058380
push esi
push 0
push dword [esp + 0x54]
mov edx, 0x20
mov ecx, edi
call fcn.1003e6e0
add esp, 0x1c
jmp 0x1008908a
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x38]
je 0x1008908e
call fcn.1005ff30
mov ecx, esi
mov dword [esp + 8], eax
movzx edx, word [eax + 0x32]
call fcn.1005b210
mov dword [esp + 0x40], eax
xor esi, esi
mov eax, dword [esp + 8]
xor edx, edx
mov dword [esp + 0x28], esi
movzx eax, word [eax + 0x32]
mov ecx, eax
cmp dx, ax
jae 0x1008906b
mov eax, dword [esp + 0x48]
xor ecx, ecx
movzx edx, word [eax + 0x34]
test edx, edx
je 0x10089039
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
movzx esi, word [eax + esi*2]
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 4]
cmp si, word [eax]
je 0x10089107
inc ecx
add eax, 2
cmp ecx, edx
jl 0x10089024
mov esi, dword [esp + 0x28]
or ecx, 0xffffffff
mov eax, dword [esp + 0x40]
mov edx, 0x60
add eax, esi
push eax
movsx eax, cx
mov ecx, edi
push eax
push dword [esp + 0x40]
call fcn.1003e6e0
mov eax, dword [esp + 0x14]
inc esi
add esp, 0xc
mov dword [esp + 0x28], esi
movzx ecx, word [eax + 0x32]
cmp esi, ecx
jl 0x10089004
movzx eax, cx
mov edx, 0x1d
push eax
push dword [esp + 0x44]
mov ecx, edi
push dword [esp + 0x7c]
push dword [esp + 0x48]
call fcn.1003ebe0
add esp, 0x10
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov eax, dword [edx + 0x28]
mov dword [esp + 0x20], eax
test eax, eax
je 0x100891ce
lea ecx, [esp + 0x98]
mov dword [esp + 0xa0], esi
xorps xmm0, xmm0
mov dword [esp + 0xc8], ecx
mov ecx, dword [esp + 0x3c]
xor esi, esi
mov dword [esp + 0xb0], 0
movlpd qword [esp + 0xb8], xmm0
movlpd qword [esp + 0xc0], xmm0
mov dword [esp + 0xb4], 0x10087c60
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x44], esi
cmp dword [eax], esi
jle 0x100891ce
lea ecx, [eax + 8]
mov dword [esp + 0x28], ecx
jmp 0x10089117
mov esi, dword [esp + 0x28]
movzx ecx, cx
jmp 0x1008903c
mov edi, dword [esp + 0x34]
mov eax, dword [edx + 4]
cmp word [eax + esi*2], 0xfffe
jne 0x100891b4
mov edx, dword [edi + 0x10]
mov dword [esp + 0xa4], esi
mov eax, dword [ecx]
mov dword [esp + 0x98], eax
test edx, edx
je 0x10089148
lea ecx, [esp + 0xb0]
call fcn.10051100
mov edi, dword [edi + 8]
test edi, edi
je 0x1008917e
mov esi, dword [edi]
add edi, 8
test esi, esi
jle 0x1008917a
nop dword [eax + eax]
mov edx, dword [edi]
lea ecx, [esp + 0xb0]
call fcn.10051180
test eax, eax
jne 0x1008917a
dec esi
add edi, 0x18
test esi, esi
jg 0x10089160
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x34]
mov edi, dword [eax + 0xc]
test edi, edi
je 0x100891b0
mov esi, dword [edi]
add edi, 8
test esi, esi
jle 0x100891ac
mov edx, dword [edi]
lea ecx, [esp + 0xb0]
call fcn.10051180
test eax, eax
jne 0x100891ac
dec esi
add edi, 0x18
test esi, esi
jg 0x10089192
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x20]
inc esi
add dword [esp + 0x28], 0x18
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x44], esi
cmp esi, dword [eax]
jl 0x10089113
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0xc]
test dword [ecx + 0x24], 0x1000
je 0x100891e5
mov byte [edx + 0x2d], 0xa6
jmp 0x100891f2
cmp dword [esp + 0x4c], 0
sete al
add al, 6
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x38]
mov dword [edx + 0x30], eax
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edx + 0x2e], al
test byte [ecx + 0x24], 0xf
jne 0x1008920b
mov byte [edx + 0x2f], 1
xor eax, eax
cmp dword [esp + 0x14], eax
cmove eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
jmp 0x100884d8
test ecx, 0x2000
je 0x10089b6a
mov eax, dword [esi + 0x28]
inc dword [esi + 0x2c]
mov dword [esp + 0x20], eax
inc eax
mov dword [esi + 0x28], eax
mov ecx, dword [edi + 0xc]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x24], 0
mov edx, dword [ecx + 0x44]
mov dword [esp + 0x54], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x64], ecx
lea eax, [edx + 1]
mov dword [esp + 0x30], edx
mov dword [ecx + 0x44], eax
lea eax, [edx - 1]
test edx, eax
jne 0x10089295
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x48]
mov ecx, dword [ecx]
push 0
push eax
call fcn.100203f0
mov ecx, dword [esp + 0x6c]
add esp, 8
mov edx, dword [esp + 0x30]
mov dword [ecx + 0x48], eax
mov eax, dword [ecx + 0x48]
test eax, eax
je 0x100892a3
mov dword [eax + edx*4], 0xffffffff
mov eax, dword [esp + 8]
not edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x28], 0
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x58], 0
mov dword [esp + 0x68], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xc]
mov dword [eax + 0x30], edx
mov edx, dword [esp + 0x34]
mov byte [eax + 0x2d], 0x34
mov al, byte [edx + 0x2e]
cmp al, 1
jbe 0x1008941f
mov ecx, dword [esp + 0x60]
movzx eax, al
sub eax, dword [esp + 0x40]
dec eax
mov dword [esp + 0x64], eax
push 0
lea eax, [eax + eax*4]
shl eax, 4
add eax, 0x58
push eax
test ecx, ecx
je 0x10089323
call fcn.10020250
mov ecx, eax
mov dword [esp + 0x54], ecx
jmp 0x1008932e
call fcn.1001fa90
mov ecx, eax
mov dword [esp + 0x54], eax
add esp, 8
test ecx, ecx
jne 0x1008934f
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
mov ecx, dword [esp + 0x144]
xor ecx, esp
call fcn.101e95a5
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x64]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 8]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x38], xmm0
movups xmm0, xmmword [eax + 0x40]
mov eax, dword [esp + 0x34]
movups xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x64], eax
cmp edx, 1
jl 0x100893e9
mov edi, dword [esp + 0xc]
add ecx, 0x58
add edi, 0x7c
movzx eax, byte [edi]
lea edi, [edi + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
shl eax, 4
add eax, dword [esp + 0x64]
movups xmm0, xmmword [eax]
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx - 0x10], xmm0
sub edx, 1
jne 0x100893a6
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x34]
test byte [eax + 0x2c], 0x10
jne 0x1008947e
test byte [ecx + 0x24], 0x20
jne 0x10089428
inc dword [esi + 0x2c]
mov edx, 0x3b
mov eax, dword [esi + 0x2c]
mov ecx, edi
push eax
push 0
mov dword [esp + 0x5c], eax
call fcn.1003e830
add esp, 8
jmp 0x10089474
mov eax, dword [edx + 4]
mov dword [esp + 0x4c], eax
jmp 0x100893ed
mov ecx, dword [ecx + 8]
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x10089447
mov eax, dword [ecx + 0x38]
and al, 3
cmp al, 2
je 0x10089443
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x10089433
mov dword [esp + 0x14], ecx
mov edx, dword [esi + 0x28]
mov dword [esp + 0x54], edx
lea eax, [edx + 1]
mov dword [esi + 0x28], eax
movzx eax, word [ecx + 0x32]
mov ecx, edi
push eax
push edx
mov edx, 0x6c
call fcn.1003e830
mov edx, dword [esp + 0x1c]
add esp, 8
mov ecx, esi
call fcn.1003f5b0
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x44], eax
push dword [esp + 0x7c]
mov edx, 0x38
mov ecx, edi
push 0
call fcn.1003e830
mov dword [esp + 0xa0], eax
add esp, 8
mov eax, dword [esp + 0x80]
xor edx, edx
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jle 0x100895da
mov dword [esp + 0x14], edx
test ecx, ecx
jle 0x100895d8
mov esi, dword [esp + 0x60]
xor ecx, ecx
mov edi, dword [esp + 0x1c]
mov dword [esp + 8], ecx
nop dword [eax]
mov eax, dword [eax + 0x14]
add eax, ecx
cmp eax, edi
je 0x10089524
mov edi, dword [eax]
mov dword [esp + 0x64], edi
test byte [edi + 4], 1
jne 0x10089520
test byte [eax + 0xa], 6
jne 0x10089520
mov edi, 0x1fff
test word [eax + 0xc], di
je 0x10089520
mov edx, dword [esp + 0x64]
mov ecx, esi
push 0
push 0
call fcn.100549d0
mov edx, dword [esp + 0x60]
mov ecx, esi
push eax
call fcn.10054420
mov ecx, dword [esp + 0x14]
add esp, 0xc
mov edx, dword [esp + 0x14]
mov dword [esp + 0x58], eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x80]
inc edx
add ecx, 0x30
mov dword [esp + 0x14], edx
mov dword [esp + 8], ecx
cmp edx, dword [eax + 0xc]
jl 0x100894d0
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x6c]
test edx, edx
je 0x100895da
mov ecx, dword [esi]
push 0
push 0x30
call fcn.10020250
add esp, 8
mov dword [esp + 8], eax
test eax, eax
je 0x100895c1
push 0x30
push 0
push eax
call fcn.102010e0
mov ecx, dword [esp + 0x14]
or eax, 0xffffffff
add esp, 0xc
mov word [ecx + 0x22], ax
mov eax, dword [esp + 0x58]
mov dword [ecx + 0x10], eax
mov byte [ecx], 0x47
mov eax, dword [eax + 4]
and eax, 0x200100
or dword [ecx + 4], eax
call fcn.10053eb0
mov eax, dword [esi]
mov ecx, dword [eax + 0x6c]
mov eax, dword [esp + 8]
cmp dword [eax + 0x18], ecx
jle 0x100895d0
push ecx
push str.Expression_tree_is_too_large__maximum_depth__d_
push esi
call fcn.10022e00
mov eax, dword [esp + 0x14]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x58], edx
jmp 0x100895da
mov edx, dword [esp + 0x58]
mov ecx, dword [esi]
call fcn.100547e0
mov eax, dword [esp + 8]
mov edx, eax
mov dword [esp + 0x58], edx
jmp 0x100895da
xor edx, edx
mov eax, dword [esp + 0x34]
mov ecx, 0x400
mov ax, word [eax + 0x2c]
and ax, cx
mov ecx, dword [esp + 0x78]
or ax, 0x20
movzx eax, ax
mov dword [esp + 0x88], eax
xor eax, eax
mov dword [esp + 0x5c], eax
cmp dword [ecx + 0xc], eax
jle 0x10089a1f
mov dword [esp + 0x90], 0x10
mov dword [esp + 0xa8], 1
mov edi, dword [esp + 0x3c]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], edi
mov edi, dword [esp + 0x50]
je 0x1008964a
mov edi, 0x400
test word [eax + 0xc], di
mov edi, dword [esp + 0x50]
je 0x10089a09
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x14], ecx
test edx, edx
je 0x10089661
test byte [eax + 4], 1
jne 0x10089661
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x20]
mov edx, dword [esp + 0x50]
mov ecx, esi
push dword [esp + 0x8c]
push 0
push 0
push eax
call fcn.100914c0
mov edx, eax
add esp, 0x14
mov dword [esp + 0x94], edx
test edx, edx
je 0x10089a05
mov eax, dword [esp + 0xc]
push 0
movzx ecx, byte [eax + 0x2c]
push ecx
push dword [esp + 0x48]
lea ecx, [edx + 0x2f0]
mov edx, dword [esp + 0x58]
push ecx
mov ecx, esi
call fcn.10086aa0
mov eax, dword [esp + 0x44]
add esp, 0x10
test byte [eax + 0x2c], 0x10
jne 0x1008990a
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x5c]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 8], ecx
test byte [eax + 0x24], 0x20
jne 0x1008971e
push 0
push dword [esp + 0x48]
mov edx, eax
mov ecx, esi
push dword [esp + 0x44]
push 0xffffffffffffffff
call fcn.10058790
push dword [esp + 0x18]
mov edx, 0x2b
mov ecx, edi
push eax
push 0
push dword [esp + 0x70]
call fcn.1003ebe0
add esp, 0x20
mov dword [esp + 0x14], eax
jmp 0x1008990a
mov ecx, eax
call fcn.1005ff30
mov dword [esp + 0x8c], eax
movzx ecx, word [eax + 0x32]
mov edx, ecx
mov eax, ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x10], edx
cmp edx, 1
jne 0x10089769
mov cl, byte [esi + 0x13]
test cl, cl
jne 0x10089754
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x38], eax
jmp 0x10089792
dec cl
movzx eax, cl
mov byte [esi + 0x13], cl
mov eax, dword [esi + eax*4 + 0x15c]
mov dword [esp + 0x38], eax
jmp 0x10089792
mov ecx, dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
mov dword [esp + 0x38], eax
cmp edx, ecx
jg 0x10089783
add eax, edx
sub ecx, edx
mov dword [esi + 0x20], eax
mov dword [esi + 0x1c], ecx
jmp 0x10089792
mov eax, dword [esi + 0x2c]
lea ecx, [eax + 1]
add eax, edx
mov dword [esp + 0x38], ecx
mov dword [esi + 0x2c], eax
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], ecx
cmp ax, word [esp + 0x64]
jae 0x10089800
mov edi, dword [esp + 0x38]
nop word [eax + eax]
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x68]
push 0
push edi
mov eax, dword [eax + 4]
push dword [esp + 0x44]
movsx eax, word [eax + ecx*2]
mov ecx, esi
push eax
call fcn.10058790
add esp, 0x10
cmp eax, edi
je 0x100897ea
mov ecx, dword [esi + 8]
mov edx, 0x41
push edi
push eax
call fcn.1003e830
add esp, 8
mov ecx, dword [esp + 0x2c]
inc edi
mov edx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, edx
jl 0x100897b0
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 8]
test eax, eax
je 0x1008982c
push edx
push dword [esp + 0x3c]
mov edx, 0x1e
mov ecx, edi
push 0
push dword [esp + 0x60]
call fcn.1003ebe0
mov dword [esp + 0x24], eax
add esp, 0x10
mov eax, dword [esp + 8]
test eax, eax
js 0x100898d6
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x1008985e
push dword [esp + 0x44]
mov edx, dword [esp + 0x14]
mov ecx, edi
push edx
push dword [esp + 0x40]
mov edx, 0x63
call fcn.1003e6a0
add esp, 0xc
jmp 0x10089894
mov edx, dword [esp + 0x38]
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*4], 0x63
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x10]
mov edx, 0x7e
mov ecx, edi
push dword [esp + 0x3c]
push dword [esp + 0x4c]
push dword [esp + 0x60]
call fcn.1003ebe0
add esp, 0x10
cmp dword [esp + 8], 0
je 0x100898d6
mov eax, dword [edi + 0x88]
test eax, eax
jle 0x100898d6
mov edx, dword [esp + 0x90]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
cmp word [esp + 0x64], 1
mov ecx, esi
mov edx, dword [esp + 0x38]
jne 0x100898eb
call fcn.1005b1c0
jmp 0x1008990a
push dword [esp + 0x10]
call fcn.100584b0
mov eax, dword [esp + 0x14]
add esp, 4
cmp eax, dword [esi + 0x1c]
jle 0x1008990a
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esi + 0x20], eax
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x10089936
push 0
push dword [esp + 0x34]
mov edx, 0xe
mov ecx, edi
push dword [esp + 0x84]
call fcn.1003e6a0
add esp, 0xc
jmp 0x1008996c
mov edx, dword [esp + 0x7c]
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4], 0xe
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x1008999d
mov eax, dword [edi]
mov edx, dword [edi + 0x88]
cmp byte [eax + 0x45], 0
je 0x10089989
mov eax, 0x102c70c4
jmp 0x1008999a
test ecx, ecx
lea eax, [edx - 1]
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x94]
mov eax, dword [esp + 0x28]
cmp byte [edx + 0x32], 0
mov ecx, dword [edx + 0x330]
cmovne eax, dword [esp + 0xa8]
mov dword [esp + 0x28], eax
test dword [ecx + 0x24], 0x200
je 0x100899f6
cmp dword [esp + 0x5c], 0
je 0x100899d7
mov eax, dword [esp + 0x24]
cmp dword [ecx + 0x20], eax
jne 0x100899f6
mov eax, dword [esp + 0x68]
test byte [eax + 0x24], 0x20
je 0x100899ed
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x100899f6
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x24], eax
jmp 0x100899fe
mov dword [esp + 0x24], 0
mov ecx, edx
call fcn.10092190
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
inc eax
mov dword [esp + 0x5c], eax
cmp eax, dword [ecx + 0xc]
jl 0x10089621
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x24]
mov dword [esi + 0x38], eax
test eax, eax
je 0x10089a35
mov eax, dword [esp + 0x20]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x10089a4f
mov ecx, dword [esp + 0x60]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.100547e0
mov ecx, dword [esp + 0x98]
mov edx, dword [edi + 0x88]
test ecx, ecx
jns 0x10089a63
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x45], 0
je 0x10089a72
mov eax, 0x102c70c4
jmp 0x10089a7b
mov eax, dword [edi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
mov edx, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x10089aa5
push 0
push edx
push 0
mov edx, 0xd
mov ecx, edi
call fcn.1003e6a0
add esp, 0xc
jmp 0x10089ad7
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0xd
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 0x48]
test ecx, ecx
je 0x10089af6
mov eax, dword [esp + 0x30]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [edi + 0x88]
mov dword [ecx], eax
mov eax, dword [esp + 0x34]
cmp byte [eax + 0x2e], 1
jbe 0x10089b4f
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x10089b4f
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x10089b46
cmp dword [ecx + 0x1c8], 0
je 0x10089b20
call fcn.1001fef0
jmp 0x10089b4f
cmp edx, dword [ecx + 0x120]
jb 0x10089b46
cmp edx, dword [ecx + 0x124]
jae 0x10089b46
mov eax, dword [ecx + 0x11c]
mov dword [edx], eax
dec dword [ecx + 0x108]
mov dword [ecx + 0x11c], edx
jmp 0x10089b4f
push edx
call fcn.1001fe80
add esp, 4
cmp dword [esp + 0x28], 0
jne 0x100884d8
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.10086d80
jmp 0x100884d8
test byte [esp + 0x98], 0x20
je 0x10089b7d
mov byte [edx + 0x2d], 0xa6
jmp 0x100884d8
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x20]
mov al, byte [ecx + 0x102a863c]
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x40]
mov dword [edx + 0x30], eax
movzx edx, byte [ecx + 0x102a5e30]
mov ecx, edi
push eax
call fcn.1003e830
mov ecx, dword [esp + 0x14]
add esp, 8
inc eax
mov dword [ecx + 0x34], eax
mov eax, ecx
mov byte [eax + 0x2f], 1
jmp 0x100884dc
mov eax, dword [esp + 0xc]
mov edx, dword [edi + 0xc]
xor ecx, ecx
mov esi, dword [edi + 0x14]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], edx
test edx, edx
jle 0x10089def
jmp 0x10089be6
mov eax, dword [esp + 0xc]
movzx edx, word [esi + 0xa]
xor edi, edi
test dl, 6
jne 0x10089dc6
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x48]
mov eax, dword [esi + 0x2c]
mov esi, dword [esp + 0xc]
and eax, dword [esi + 0x4c]
or ecx, eax
mov esi, dword [esp + 0x20]
je 0x10089c1a
mov eax, dword [esp + 0x34]
mov byte [eax + 0x32], 1
jmp 0x10089dc2
mov eax, dword [esp + 0xc]
mov ecx, dword [esi]
mov dword [esp + 0x98], ecx
cmp dword [eax], edi
je 0x10089c35
test byte [ecx + 4], 1
je 0x10089dc2
cmp dword [esp + 0x14], 1
jne 0x10089cb0
mov eax, dword [eax + 4]
xorps xmm0, xmm0
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xa8], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0xb0], edi
movlpd qword [esp + 0xb8], xmm0
movlpd qword [esp + 0xc0], xmm0
mov dword [esp + 0xb4], 0x1005ad10
mov dword [esp + 0xc8], eax
test ecx, ecx
je 0x10089c98
mov edx, ecx
lea ecx, [esp + 0xb0]
call fcn.10051100
cmp byte [esp + 0xc4], 0
je 0x10089cfa
mov ecx, 2
mov dword [esp + 0x10], ecx
jmp 0x10089dc6
cmp dword [esp + 0x14], 3
jl 0x10089cfe
test edx, 0x200
je 0x10089d65
mov edx, dword [eax + 0x24]
mov eax, edx
mov ecx, dword [esp + 0x50]
and edx, 1
shr eax, 1
add edx, 0x15
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 0x88]
cmp dword [eax + 0x30], edi
jg 0x10089d24
push 0
push 0
push dword [esp + 0x28]
call fcn.1003e6a0
add esp, 0xc
mov edi, eax
jmp 0x10089d65
mov eax, dword [esp + 0xc]
movzx edx, word [esi + 0xa]
test edx, 0x1000
je 0x10089cb7
mov ecx, dword [esp + 0x10]
test ecx, ecx
jne 0x10089dc6
mov ecx, 3
mov dword [esp + 0x10], ecx
jmp 0x10089dc6
lea eax, [edi + 1]
mov dword [ecx + 0x88], eax
lea ecx, [edi + edi*4]
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x58]
mov byte [eax + ecx*4], dl
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
lea eax, [eax + ecx*4]
xor ecx, ecx
mov dword [eax + 0x10], 0
mov word [eax + 2], cx
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], ecx
mov byte [eax + 1], 0
push 0x10
push dword [esp + 0x78]
push dword [esp + 0xa0]
push dword [esp + 0x78]
call fcn.1005a510
add esp, 0x10
test edi, edi
je 0x10089dbd
mov edx, dword [esp + 0x50]
mov eax, dword [edx]
mov ecx, dword [edx + 0x88]
mov dword [esp + 0x98], ecx
cmp byte [eax + 0x45], 0
je 0x10089da2
mov eax, 0x102c70c4
jmp 0x10089dba
lea eax, [ecx - 1]
test edi, edi
cmovns eax, edi
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x58]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x98]
mov dword [eax + 8], ecx
or word [esi + 0xa], 4
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
add esi, 0x30
dec edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], edx
test edx, edx
jg 0x10089be2
mov edi, dword [esp + 0x80]
mov edx, dword [edi + 0xc]
mov esi, dword [edi + 0x14]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x14], ecx
test ecx, ecx
jg 0x10089bc0
test edx, edx
jle 0x10089f30
lea edi, [esi + 0xc]
mov dword [esp + 8], edi
nop word [eax + eax]
test byte [edi - 2], 6
jne 0x10089f1c
movzx eax, word [edi]
mov esi, dword [esp + 0x84]
test al, 0x82
setne cl
bt ax, si
setb al
test al, cl
je 0x10089f1c
mov ecx, dword [esp + 0x3c]
cmp dword [edi + 8], ecx
jne 0x10089f1c
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
jne 0x10089f1c
mov eax, dword [edi - 0xc]
xor esi, esi
mov edx, dword [esp + 0x80]
push esi
push 0x83
push dword [edi + 0x10]
mov dword [esp + 0xa4], eax
push ecx
lea ecx, [esp + 0xf8]
call fcn.1008c4c0
mov edx, eax
add esp, 0x10
test edx, edx
je 0x10089eb8
mov edi, dword [edx + 0x20]
mov ecx, edi
mov eax, dword [edx + 0x24]
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x10089ea6
or edi, dword [edx + 0x24]
jne 0x10089ea1
test byte [edx + 0xc], 0x82
jne 0x10089eba
test esi, esi
cmove esi, edx
lea ecx, [esp + 0xe8]
call fcn.1008c230
mov edx, eax
test edx, edx
jne 0x10089e84
mov edx, esi
test edx, edx
je 0x10089f14
test byte [edx + 0xa], 4
jne 0x10089f14
mov eax, dword [edx]
push 0x10
push dword [esp + 0x78]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xb8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0xc8], xmm0
movups xmm0, xmmword [eax + 0x20]
mov eax, dword [esp + 0xa0]
movups xmmword [esp + 0xd8], xmm0
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc4], eax
lea eax, [esp + 0xb8]
push eax
push dword [esp + 0x78]
call fcn.1005a510
add esp, 0x10
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 8]
dec edx
add edi, 0x30
mov dword [esp + 0x1c], edx
mov dword [esp + 8], edi
test edx, edx
jg 0x10089e10
mov edi, dword [esp + 0xc]
mov esi, dword [edi]
test esi, esi
je 0x1008a052
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x88]
mov dword [ecx + 0x1c], eax
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x10089f73
push 0
push esi
push 1
mov edx, 0x38
mov ecx, edi
call fcn.1003e6a0
add esp, 0xc
jmp 0x10089fa5
lea eax, [ecx + 1]
mov dword [edi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x58]
mov dword [eax + ecx*4], 0x38
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x6c]
xor edi, edi
cmp byte [edx + 0x19], 0
jbe 0x10089fdf
lea esi, [edx + 0xa0]
cmp byte [esi - 6], 0
je 0x10089fd3
mov al, byte [edx + 0x13]
cmp al, 8
jae 0x10089fd3
movzx ecx, al
mov eax, dword [esi]
mov dword [edx + ecx*4 + 0x15c], eax
inc byte [edx + 0x13]
movzx eax, byte [edx + 0x19]
inc edi
add esi, 0x14
cmp edi, eax
jl 0x10089fb7
mov edi, dword [esp + 0x80]
xor eax, eax
mov byte [edx + 0x19], 0
mov dword [esp + 0x14], eax
mov esi, dword [edi + 0x14]
cmp dword [edi + 0xc], eax
jle 0x1008a04e
mov ecx, edi
nop word [eax + eax]
test byte [esi + 0xa], 6
mov edi, dword [esp + 0xc]
jne 0x1008a03f
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x1008a034
push 0x10
push dword [esp + 0x78]
push dword [esi]
push edx
call fcn.1005a510
mov edx, dword [esp + 0x7c]
add esp, 0x10
or word [esi + 0xa], 4
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x14]
inc eax
add esi, 0x30
mov dword [esp + 0x14], eax
cmp eax, dword [ecx + 0xc]
jl 0x1008a000
jmp 0x1008a052
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
mov ecx, dword [esp + 0x14c]
pop edi
pop esi
xor ecx, esp
call fcn.101e95a5
mov esp, ebp
pop ebp
ret