Function at 0x1008e8d0
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x148
mov eax, dword [0x10141004]
xor eax, esp
mov dword [esp + 0x144], eax
mov eax, ecx
mov dword [esp + 0x6c], 0
mov dword [esp + 8], eax
push esi
mov esi, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x68], eax
push edi
mov eax, dword [esi + 0x48]
mov edi, edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x2c], eax
movzx eax, byte [esi + 0x34]
mov dword [esp + 0x60], edx
lea ecx, [edx + 0x50]
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], ecx
lea ecx, [eax + eax*8]
mov dword [esp + 0x44], esi
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x1ec]
lea eax, [eax + ecx*8]
add eax, 8
mov dword [esp + 0x8c], eax
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x40], eax
xor eax, eax
test edx, edx
jle 0x1008e97b
mov ecx, dword [esp + 0x60]
add ecx, 0x1f0
nop dword [eax]
mov edi, dword [esp + 0x40]
cmp dword [ecx], edi
mov edi, dword [esp + 0x84]
je 0x1008ea8b
inc eax
add ecx, 4
cmp eax, edx
jl 0x1008e960
xorps xmm0, xmm0
movlpd qword [esp + 0x90], xmm0
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
not ecx
not edx
and ecx, dword [ebp + 0x14]
and edx, dword [ebp + 0x18]
mov dword [esi + 0x50], ecx
mov ecx, dword [esp + 0x60]
mov dword [esi + 0x54], edx
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ebp + 0xc]
call fcn.10015460
mov ecx, dword [esp + 0x10]
and eax, 1
mov dword [esp + 0x54], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0xc], eax
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
cmp byte [esi + 0x34], 0
mov dword [esp + 0x98], eax
mov dword [esi + 0x18], eax
jbe 0x1008ea12
mov eax, dword [esp + 0x8c]
test byte [eax + 0x24], 8
je 0x1008ea12
mov eax, dword [ecx + 0x2c]
mov edx, 0x46
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, edi
push eax
push 0
mov dword [esi], eax
call fcn.100ebf20
add esp, 8
mov eax, dword [ebp + 0xc]
mov ecx, eax
test eax, eax
jle 0x1008ea3d
mov edx, dword [esp + 0x60]
imul eax, eax, 0x58
add edx, 0x2f0
add eax, edx
nop word [eax + eax]
cmp dword [eax], 0
jne 0x1008ea3d
dec ecx
sub eax, 0x58
test ecx, ecx
jg 0x1008ea30
imul eax, ecx, 0x58
mov ecx, dword [esp + 0x60]
mov eax, dword [eax + ecx + 0x2fc]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x8c]
test byte [eax + 0x28], 0x10
je 0x1008eb46
mov edx, dword [eax + 0x1c]
mov ecx, dword [edi + 0x74]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], eax
cmp dword [edi + 0x78], ecx
jg 0x1008eaa5
push eax
push 0
push edx
mov edx, 0xd
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
jmp 0x1008ead4
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x1008e995
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4], 0xd
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x74]
cmp dword [edi + 0x78], edx
jg 0x1008eb03
push 0
push dword [esp + 0x38]
mov edx, 0xe
mov ecx, edi
push dword [esp + 0x1c]
call fcn.100ec0c0
mov edx, eax
mov byte [esi + 0x35], 0xb
add esp, 0xc
mov dword [esi + 0x3c], edx
jmp 0x1008f0f8
mov esi, dword [esp + 0x14]
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x34]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x44]
mov dword [eax + ecx*4], 0xe
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [esi + 0x3c], edx
mov byte [esi + 0x35], 0xb
jmp 0x1008f0f8
mov eax, dword [esp + 0x2c]
mov edx, dword [eax + 0x24]
test edx, 0x400
je 0x1008f05b
movzx eax, word [eax + 0x28]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
lea edx, [eax + 2]
cmp edx, 1
jne 0x1008eb95
mov al, byte [ecx + 0x13]
test al, al
jne 0x1008eb80
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x24], eax
jmp 0x1008ebc1
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov eax, dword [ecx + eax*4 + 0x94]
mov dword [esp + 0x24], eax
jmp 0x1008ebc1
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x24], eax
cmp edx, dword [ecx + 0x1c]
jg 0x1008ebab
add eax, edx
sub dword [ecx + 0x1c], edx
mov dword [ecx + 0x20], eax
jmp 0x1008ebc1
mov eax, dword [ecx + 0x2c]
lea edi, [eax + 1]
add eax, edx
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x84]
mov dword [ecx + 0x2c], eax
mov eax, dword [esi + 0xc]
xor esi, esi
mov dword [esp + 0x58], eax
cmp dword [esp + 0x18], esi
jle 0x1008ec2b
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x1008ec19
mov eax, dword [esp + 0x24]
add eax, 2
add eax, esi
test byte [edx + 0xc], 1
je 0x1008ec09
push eax
push dword [esp + 0x58]
push esi
push edi
call fcn.10091900
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x58], eax
jmp 0x1008ec19
mov edx, dword [edx]
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.10091280
add esp, 8
mov ecx, dword [esp + 0x10]
inc esi
cmp esi, dword [esp + 0x18]
jl 0x1008ebd4
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x74]
mov edx, dword [eax + 0x18]
cmp dword [edi + 0x78], ecx
jg 0x1008ec52
push 0
push dword [esp + 0x28]
mov ecx, edi
push edx
mov edx, 0x46
call fcn.100ec0c0
add esp, 0xc
jmp 0x1008ec81
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [esp + 0x24]
mov ecx, dword [edi + 0x74]
inc esi
cmp dword [edi + 0x78], ecx
jg 0x1008eca6
push 0
push esi
push dword [esp + 0x20]
mov edx, 0x46
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
jmp 0x1008ecd5
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], edx
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 + 0x2c]
or esi, 0xffffffff
mov edx, dword [edi + 0x74]
mov ecx, 0xfffffff9
cmp byte [eax + 0x1c], 0
mov eax, dword [eax + 0x20]
cmovne esi, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], esi
cmp dword [edi + 0x78], edx
jg 0x1008ed18
push dword [esp + 0x24]
lea edx, [ecx + 0x10]
mov ecx, edi
push dword [esp + 0x5c]
push dword [esp + 0x48]
call fcn.100ec0c0
add esp, 0xc
mov edx, eax
jmp 0x1008ed4f
mov esi, dword [esp + 0x40]
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x58]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x14]
mov dword [eax + ecx*4], 9
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi]
cmp byte [ecx + 0x53], 0
je 0x1008ed6d
cmp esi, 0xfffffff4
je 0x1008edc6
mov eax, dword [esp + 0x1c]
mov edx, esi
push eax
call fcn.100eb160
add esp, 4
jmp 0x1008edc6
test edx, edx
jns 0x1008ed75
mov edx, dword [edi + 0x74]
dec edx
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
lea edx, [eax + ecx*4]
mov eax, dword [esp + 0x14]
test eax, eax
jns 0x1008edb6
cmp byte [edx + 1], 0
jne 0x1008edb6
cmp eax, 0xfffffffd
jne 0x1008ed9e
mov eax, dword [esp + 0x1c]
mov dword [edx + 0x10], eax
mov byte [edx + 1], 0xfd
jmp 0x1008edc6
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x1008edc6
mov dword [edx + 0x10], ecx
mov byte [edx + 1], al
cmp eax, 0xfffffff4
jne 0x1008edc6
inc dword [ecx + 0xc]
jmp 0x1008edc6
push eax
mov eax, dword [esp + 0x20]
mov ecx, edi
push eax
call fcn.100eaf10
add esp, 8
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x6c]
mov byte [edx + 0x1c], 0
cmp byte [eax + 0x53], 0
je 0x1008eddf
mov dword [edx + 0x20], 0
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
mov dword [esi + 0x38], eax
mov eax, 0x3e
cmp byte [ecx + 0x2e], 0
mov ecx, 0xb3
cmovne eax, ecx
mov byte [esi + 0x35], al
mov eax, dword [edi + 0x74]
mov dword [esi + 0x3c], eax
test dword [edx + 0x24], 0x800
je 0x1008ee1a
mov eax, dword [esi + 0x40]
mov dword [esp + 0x30], eax
jmp 0x1008ee22
mov dword [esp + 0x30], 0
mov ecx, dword [esp + 0x18]
sub ecx, 1
mov dword [esp + 0x3c], ecx
js 0x1008f0f8
mov eax, dword [edx + 0x30]
mov edx, dword [eax + ecx*4]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x4c], edx
mov si, word [edx + 0xc]
and si, 1
lea eax, [eax - 1]
cmove eax, dword [esp + 0x30]
mov dword [esp + 0x30], eax
cmp ecx, 0x10
jge 0x1008ee7b
mov eax, dword [esp + 0x2c]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x1008ee77
mov ecx, dword [esp + 0x44]
call fcn.10092280
jmp 0x1008f041
mov ecx, dword [esp + 0x3c]
test si, si
je 0x1008f045
mov eax, dword [edx]
mov ecx, dword [eax + 0xc]
mov al, byte [ecx]
cmp al, 0xaf
jne 0x1008ee92
mov al, byte [ecx + 2]
cmp al, 0xb0
jne 0x1008ee9b
mov eax, dword [ecx + 0x14]
jmp 0x1008eea5
cmp al, 0x89
jne 0x1008eeb0
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jne 0x1008f041
mov eax, dword [esp + 0x6c]
cmp byte [eax + 0x53], 0
jne 0x1008ef57
mov eax, dword [esp + 0x30]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x44]
mov ecx, dword [eax + ecx*4 + 4]
test ecx, ecx
jns 0x1008eed8
mov ecx, dword [edi + 0x74]
dec ecx
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x1008eee7
mov eax, 0x101442cc
jmp 0x1008eef0
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov edx, dword [eax + 8]
movzx eax, byte [eax]
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 0x74]
mov dword [esp + 0x28], eax
cmp dword [edi + 0x78], ecx
jg 0x1008ef21
mov ecx, dword [esp + 0x14]
push esi
push edx
push ecx
mov edx, eax
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
jmp 0x1008ef57
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x28]
mov byte [eax + 1], 0
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x14]
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x10]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.10111510
mov esi, eax
add esp, 8
test esi, esi
je 0x1008f041
push 0x34
push 0
push esi
call fcn.10002790
add esp, 0xc
mov byte [esi], 0x35
or eax, 0xffffffff
mov ecx, esi
mov word [esi + 0x22], ax
call fcn.100d4c40
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x1008efb1
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.1010dfc0
add esp, 0xc
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x6c]
push 0
push 0x35
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.10111510
mov ecx, eax
add esp, 8
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x1008f002
push 0x34
push 0
push ecx
call fcn.10002790
mov ecx, dword [esp + 0x34]
add esp, 0xc
or eax, 0xffffffff
mov word [ecx + 0x22], ax
lea eax, [ecx + 0x34]
mov byte [ecx], 0xaf
mov dword [ecx + 8], eax
mov byte [eax], 0
mov dword [ecx + 0x18], 1
mov dword [esi + 0x10], ecx
test ecx, ecx
je 0x1008f02f
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
add edx, 2
add eax, edx
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x44]
push 0x10
push dword [eax + 0x18]
push esi
push dword [esp + 0x1c]
call fcn.100cd820
add esp, 0x10
mov ecx, dword [esp + 0x6c]
mov edx, esi
mov dword [esi + 0xc], 0
call fcn.100d4300
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x2c]
sub ecx, 1
mov dword [esp + 0x3c], ecx
jns 0x1008ee33
jmp 0x1008f0f8
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x1008f1b0
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
mov eax, dword [esp + 0x10]
inc dword [eax + 0x2c]
mov ecx, dword [eax + 0x2c]
push ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x58]
push ecx
push 0
push esi
mov ecx, eax
call fcn.10091900
mov edx, dword [esp + 0x38]
add esp, 0x10
mov dword [esp + 0x58], eax
cmp eax, edx
je 0x1008f0d0
test edx, edx
je 0x1008f0d0
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 0x13]
mov byte [esp + 0x53], al
cmp al, 8
mov eax, dword [esp + 0x58]
jae 0x1008f0d0
movzx eax, byte [esp + 0x53]
mov dword [ecx + eax*4 + 0x94], edx
inc byte [ecx + 0x13]
mov eax, dword [esp + 0x58]
mov ecx, dword [edi + 0x74]
mov edx, dword [esi + 0x10]
cmp dword [edi + 0x78], ecx
jg 0x1008f175
push eax
push edx
push dword [esp + 0x48]
mov edx, 0x20
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
mov byte [esi + 0x35], 0xb3
xor eax, eax
mov esi, dword [esp + 0x88]
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x4c], eax
nop dword [eax]
mov eax, dword [esi + 0xc]
xor ecx, ecx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], eax
test eax, eax
jle 0x10090974
nop dword [eax]
movzx eax, word [edx + 0xa]
xor esi, esi
mov dword [esp + 0x90], eax
test al, 6
jne 0x10090955
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x44]
mov ecx, dword [edx + 0x28]
and ecx, dword [eax + 0x50]
mov eax, dword [edx + 0x2c]
and eax, dword [edi + 0x54]
or ecx, eax
mov edi, dword [esp + 0x84]
je 0x100907ce
mov eax, dword [esp + 0x60]
or dword [eax + 0x30], 2
jmp 0x10090951
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x40]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x84]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x1008f0f4
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x1008f43c
xor ecx, ecx
mov dword [esp + 0x30], 0xb3
mov dword [esp + 0x80], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x58], ecx
test dl, 0x20
je 0x1008f205
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x14], 1
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
mov dword [esp + 0x58], ecx
test dl, 0x10
je 0x1008f21e
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + edx*4]
mov dword [esp + 0x1c], edx
jmp 0x1008f220
xor edx, edx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x1008f232
mov dword [esp + 0x1c], ecx
mov ecx, edx
mov dword [esp + 0x58], ecx
test ecx, ecx
je 0x1008f30d
mov edx, dword [ecx]
mov dword [esp + 0x18], 0x1917181a
mov dword [esp + 0x14], edx
mov ecx, dword [edx + 0x10]
call fcn.100d5500
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x1008f2a0
mov al, byte [ecx + 0x13]
test al, al
jne 0x1008f267
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
jmp 0x1008f276
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov eax, dword [ecx + eax*4 + 0x94]
mov edx, dword [edx + 0x10]
push 1
push eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x78], eax
call fcn.10091280
mov ecx, dword [esp + 0x1c]
add esp, 8
movzx eax, byte [ecx]
inc eax
and eax, 2
or eax, 1
mov cl, byte [esp + eax + 0x18]
jmp 0x1008f2d2
mov edx, dword [edx + 0x10]
lea eax, [esp + 0x4c]
push eax
call fcn.100ce440
mov edx, dword [esp + 0x5c]
add esp, 4
mov ecx, esi
mov dword [esp + 0x70], eax
call fcn.10092280
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 0x1e]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x58], eax
push dword [esp + 0x70]
movzx edx, cl
mov ecx, edi
push dword [esp + 0x38]
push dword [esp + 0x48]
call fcn.100ec050
mov edx, dword [esp + 0x64]
add esp, 0xc
mov ecx, dword [esp + 0x10]
test edx, edx
je 0x1008f331
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x1008f331
movzx eax, al
mov dword [ecx + eax*4 + 0x94], edx
inc byte [ecx + 0x13]
jmp 0x1008f331
push dword [esp + 0x28]
xor edx, edx
mov ecx, edi
push dword [esp + 0x44]
test eax, eax
sete dl
lea edx, [edx*4 + 0x22]
call fcn.100ebf20
mov ecx, dword [esp + 0x18]
add esp, 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1008f3c2
mov eax, dword [eax]
inc dword [ecx + 0x2c]
mov edx, dword [ecx + 0x2c]
push 1
mov dword [esp + 0x84], edx
push edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x30], eax
call fcn.10091280
mov edx, dword [esp + 0x30]
add esp, 8
mov eax, dword [edx + 0x10]
mov ecx, eax
mov dword [esp + 0x28], eax
call fcn.100d5500
test eax, eax
jne 0x1008f394
mov al, byte [edx]
cmp al, 0x38
je 0x1008f37e
cmp al, 0x36
jne 0x1008f394
xor edx, edx
cmp dword [esp + 0x54], edx
sete dl
lea edx, [edx*2 + 0x37]
mov dword [esp + 0x30], edx
jmp 0x1008f3aa
mov ecx, dword [esp + 0x54]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x28]
call fcn.100d5500
test eax, eax
jne 0x1008f3c2
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.10092280
cmp dword [esp + 0x54], 0
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x40]
sete al
add al, 4
mov dword [esi + 0x38], edx
cmp dword [esp + 0x30], 0xb3
mov byte [esi + 0x35], al
mov dword [esi + 0x3c], ecx
je 0x1008f0f8
mov eax, dword [esp + 0x10]
mov ecx, edi
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push edx
mov edx, 0x85
call fcn.100ebf20
mov edx, dword [esp + 0x38]
mov ecx, edi
push esi
push dword [esp + 0x40]
push dword [esp + 0x90]
call fcn.100ec050
mov eax, dword [edi + 0x74]
add esp, 0x14
test eax, eax
jle 0x1008f0f8
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x1008f0f8
test edx, 0x200
je 0x1008fdf0
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x78], 0
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x7c], eax
movzx eax, word [ecx + 0x1a]
mov dword [esp + 0x34], eax
movzx eax, word [ecx + 0x1c]
xor ecx, ecx
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x70], eax
mov byte [esp + 0x23], al
mov byte [esp + 0x53], al
mov dword [esp + 0x3c], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x18], ecx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x74], eax
mov eax, dword [esi + 8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x7c]
movzx eax, ax
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
test dl, 0x20
je 0x1008f4da
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
inc dword [esp + 0x1c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
movzx eax, word [ecx + 0x1a]
mov ecx, eax
mov dword [esp + 0x18], eax
test dl, 0x10
je 0x1008f590
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x78], eax
movzx eax, word [edx + 0x1c]
cmp ecx, eax
cmovbe ecx, eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], ecx
mov ecx, 0x100
test word [eax + 0xa], cx
je 0x1008f55b
mov ecx, dword [esp + 0x10]
mov edx, 0x46
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, edi
push eax
push 1
mov dword [esi + 0x2c], eax
call fcn.100ebf20
mov eax, dword [edi + 0x74]
xor ecx, ecx
shl dword [esi + 0x2c], 1
add esp, 8
mov edx, dword [esp + 0x38]
mov dword [esi + 0x30], eax
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
sete cl
xor ecx, dword [esp + 0x54]
or dword [esi + 0x2c], ecx
jmp 0x1008f55f
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x48], 0
jne 0x1008f590
mov ecx, dword [esp + 0x74]
mov eax, dword [ecx + 4]
movsx edx, word [eax + edx*2]
test edx, edx
js 0x1008f586
mov eax, dword [ecx + 0xc]
mov ecx, edx
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x1008f58b
cmp edx, 0xfffffffe
jne 0x1008f590
mov byte [esp + 0x23], 1
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x24]
test al, 0x30
jne 0x1008f5e4
test eax, 0x80000
je 0x1008f5e4
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], 1
mov byte [esp + 0x23], 1
inc dword [eax + 0x2c]
cmp dword [esi], 0
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x3c], ecx
mov dword [esi + 0x24], ecx
je 0x1008f5db
push ecx
push 0
mov edx, 0x46
mov ecx, edi
call fcn.100ebf20
mov eax, dword [esp + 0x18]
add esp, 8
dec dword [eax + 0x38]
mov eax, dword [eax + 0x38]
mov dword [esi + 0x28], eax
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x7c]
cmp ax, word [ecx + 0x34]
jae 0x1008f63a
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
mov edx, dword [esp + 0x38]
cmp byte [edx + eax], cl
sete cl
cmp dword [esp + 0x54], ecx
jne 0x1008f63a
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x78], ecx
mov cl, byte [esp + 0x23]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x34]
mov byte [esp + 0x53], cl
movzx ecx, dx
movzx eax, al
mov byte [esp + 0x23], 0
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
cmp dword [ebp + 0xc], 0
jle 0x1008f660
mov eax, dword [esp + 0x2c]
test dword [eax + 0x24], 0x100000
je 0x1008f660
push dword [esp + 0x24]
mov edx, 0x86
mov ecx, edi
call fcn.100ebf90
add esp, 4
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x80]
push eax
push dword [esp + 0x1c]
mov edx, esi
push dword [esp + 0x5c]
call fcn.100914d0
mov ecx, dword [esp + 0x8c]
add esp, 0xc
mov dword [esp + 0x68], eax
test ecx, ecx
je 0x1008f6a9
cmp word [esp + 0x30], 0
je 0x1008f6a9
mov edx, dword [esp + 0x38]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x6c]
call fcn.10111330
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x1008f6ba
mov ecx, dword [esi + 0x28]
mov dword [esp + 0x18], ecx
jmp 0x1008f6c1
mov eax, dword [esi + 0x10]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x1008f6d7
test byte [eax + 0xc], 0x28
mov dword [esp + 0x1c], 0
je 0x1008f6df
mov dword [esp + 0x1c], 1
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x1008f6f5
test byte [ecx + 0xc], 0x28
mov dword [esp + 0x58], 0
je 0x1008f6fd
mov dword [esp + 0x58], 1
test eax, eax
jne 0x1008f755
cmp word [esp + 0x7c], ax
ja 0x1008f755
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x64], ecx
cmp byte [esp + 0x23], 0
je 0x1008f9f3
mov eax, dword [esp + 0x68]
mov edx, 0x49
add eax, ecx
mov dword [esp + 0x1c], 0
push eax
push 0
mov ecx, edi
call fcn.100ebf20
mov eax, dword [esp + 0x6c]
add esp, 8
inc eax
mov dword [esp + 0x7c], 1
mov dword [esp + 0x64], eax
jmp 0x1008f860
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], 1
mov dword [esp + 0x64], ecx
test eax, eax
je 0x1008f714
mov eax, dword [eax]
mov edx, dword [esp + 0x34]
add ecx, dword [esp + 0x68]
movzx edx, dx
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x2c], ecx
mov edx, eax
push ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
call fcn.10091280
mov ecx, dword [esp + 0x50]
mov eax, 0x100
mov edi, dword [esp + 0x8c]
add esp, 8
test word [ecx + 0xa], ax
je 0x1008f7db
mov eax, dword [edi]
mov edx, dword [edi + 0x74]
dec edx
cmp byte [eax + 0x53], 0
je 0x1008f7ba
mov edx, 0x101442cc
jmp 0x1008f7c7
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
lea edx, [eax + ecx*4]
mov ecx, dword [esp + 0x48]
mov eax, dword [esi + 0x2c]
shr eax, 1
mov dword [edx + 0xc], eax
mov al, byte [esi + 0x2c]
and al, 1
movzx eax, al
mov word [edx + 2], ax
test byte [ecx + 0xa], 0x80
jne 0x1008f805
mov ecx, dword [esp + 0x14]
call fcn.100d2880
test eax, eax
je 0x1008f805
push dword [esp + 0x18]
mov edx, 0x32
mov ecx, edi
push dword [esp + 0x2c]
call fcn.100ebf20
add esp, 8
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x1008f82a
mov eax, dword [esp + 0x38]
add eax, ecx
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x38]
movzx edx, ax
call fcn.10092150
add esp, 4
mov ecx, dword [esp + 0x34]
movzx eax, cx
mov ecx, dword [esp + 0x14]
add dword [esp + 0x64], eax
call fcn.100d5500
test eax, eax
jne 0x1008f84f
mov edx, dword [esp + 0x48]
mov ecx, esi
call fcn.10092280
jmp 0x1008f857
mov dword [esp + 0x1c], 1
mov byte [esp + 0x23], 0
mov eax, dword [esp + 0x64]
movzx ecx, byte [esp + 0x23]
push dword [esp + 0x80]
mov edx, dword [esp + 0x6c]
sub eax, ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
push eax
call fcn.10092230
mov eax, dword [esp + 0x34]
add esp, 8
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x1008f89a
cmp dword [esp + 0x64], eax
je 0x1008f989
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1008f8b4
push eax
push 1
mov edx, 0x46
mov ecx, edi
call fcn.100ebf20
add esp, 8
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x7c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x54]
movzx eax, byte [ecx + eax*2 + 0x1013c600]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
test dword [ecx + 0x24], 0x100000
je 0x1008f917
cmp eax, 0x19
jne 0x1008f917
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 8]
movsx ecx, word [eax]
mov eax, 0x66666667
add ecx, 9
imul ecx
mov ecx, edi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, 0x7a
push eax
call fcn.100ebf90
mov dword [esp + 0x50], eax
add esp, 4
mov eax, dword [esp + 0x28]
push dword [esp + 0x64]
mov edx, eax
mov ecx, edi
push dword [esp + 0x6c]
push dword [esp + 0x20]
push dword [esp + 0x30]
call fcn.100eb830
mov ecx, dword [esp + 0x4c]
add esp, 0x10
test ecx, ecx
je 0x1008f98d
mov eax, dword [edi + 0x74]
mov edx, 0xb
add eax, 2
mov ecx, edi
push eax
push 0
call fcn.100ebf20
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x5c]
push eax
push dword [esp + 0x74]
mov eax, 1
cmp eax, dword [esp + 0x74]
push dword [esp + 0x28]
sbb eax, eax
push dword [esp + 0x38]
and eax, 4
movzx edx, byte [eax + ecx + 0x1013c602]
mov ecx, edi
call fcn.100eb830
add esp, 0x18
mov ecx, dword [esp + 0x3c]
cmp dword [esp + 0x78], 0
mov eax, dword [esp + 0x38]
mov edx, eax
mov dword [esp + 0x48], edx
je 0x1008fae4
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x30]
movzx ecx, dx
mov edx, dword [esp + 0x38]
mov eax, dword [eax]
add edx, dword [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x10]
push edx
mov edx, eax
mov dword [esp + 0x1c], eax
call fcn.10091280
mov edx, dword [esp + 0x80]
mov eax, 0x100
add esp, 8
test word [edx + 0xa], ax
je 0x1008fa46
mov eax, dword [edi]
mov ecx, dword [edi + 0x74]
dec ecx
cmp byte [eax + 0x53], 0
je 0x1008fa29
mov ecx, 0x101442cc
jmp 0x1008fa32
test edx, edx
je 0x1008f85c
mov eax, dword [esp + 0x68]
mov edx, 0x49
add eax, ecx
mov ecx, edi
push eax
push 0
call fcn.100ebf20
mov eax, dword [esp + 0x6c]
add esp, 8
inc eax
mov dword [esp + 0x7c], 1
mov dword [esp + 0x64], eax
jmp 0x1008f860
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [esi + 0x2c]
shr eax, 1
mov dword [ecx + 0xc], eax
mov al, byte [esi + 0x2c]
and al, 1
movzx eax, al
mov word [ecx + 2], ax
test byte [edx + 0xa], 0x80
jne 0x1008fa75
mov ecx, dword [esp + 0x14]
call fcn.100d2880
test eax, eax
je 0x1008fa75
mov eax, dword [esp + 0x38]
mov edx, 0x32
push dword [esp + 0x18]
add eax, dword [esp + 0x6c]
mov ecx, edi
push eax
call fcn.100ebf20
add esp, 8
mov eax, dword [esp + 0x70]
test eax, eax
je 0x1008fab5
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x34]
movzx edx, ax
call fcn.10092150
mov eax, dword [esp + 0x74]
add esp, 4
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
push eax
movzx eax, dx
mov edx, dword [esp + 0x6c]
push eax
lea edx, [ecx + edx]
mov ecx, dword [esp + 0x18]
call fcn.10092230
add esp, 8
mov ecx, dword [esp + 0x30]
movzx eax, cx
mov ecx, dword [esp + 0x14]
add dword [esp + 0x48], eax
call fcn.100d5500
test eax, eax
jne 0x1008fada
mov edx, dword [esp + 0x78]
mov ecx, esi
call fcn.10092280
jmp 0x1008fb13
mov dword [esp + 0x58], 1
jmp 0x1008fb13
cmp byte [esp + 0x53], 0
je 0x1008fb13
test ecx, ecx
jne 0x1008fb0e
add eax, dword [esp + 0x68]
lea edx, [ecx + 0x49]
push eax
push ecx
mov ecx, edi
call fcn.100ebf20
mov edx, dword [esp + 0x50]
add esp, 8
mov dword [esp + 0x58], 0
inc edx
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x80]
test eax, eax
je 0x1008fb29
mov ecx, dword [esp + 0x6c]
mov edx, eax
call fcn.10111980
mov eax, dword [esp + 0x70]
test eax, eax
je 0x1008fb3c
mov ecx, dword [esp + 0x6c]
mov edx, eax
call fcn.10111980
mov eax, dword [edi + 0x74]
mov dword [esi + 0x3c], eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x1008fbbf
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1008fb6d
mov eax, dword [edi + 0x74]
mov edx, 0x14
add eax, 3
push eax
push ecx
mov ecx, edi
call fcn.100ebf20
mov eax, dword [esp + 0x50]
add esp, 8
mov ecx, dword [esp + 0x54]
push eax
push dword [esp + 0x6c]
mov eax, dword [esp + 0x60]
push dword [esp + 0x20]
push dword [esp + 0x30]
movzx edx, byte [eax + ecx*2 + 0x10135368]
mov ecx, edi
call fcn.100eb830
mov ecx, dword [esp + 0x5c]
add esp, 0x10
test ecx, ecx
je 0x1008fbbf
mov edx, dword [edi + 0x74]
jns 0x1008fba4
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x1008fbb3
mov eax, 0x101442cc
jmp 0x1008fbbc
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1008fc08
mov eax, dword [edi + 0x74]
mov edx, 0x12
add eax, 2
push eax
push ecx
mov ecx, edi
call fcn.100ebf20
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
add eax, ecx
push eax
push dword [esp + 0x74]
mov eax, dword [esp + 0x64]
push dword [esp + 0x28]
push dword [esp + 0x38]
movzx edx, byte [ecx + eax*2 + 0x10135368]
mov ecx, edi
call fcn.100eb830
add esp, 0x18
mov eax, dword [esp + 0x2c]
test dword [eax + 0x24], 0x40000
je 0x1008fc32
mov eax, dword [esp + 0x38]
mov edx, 0x7b
push eax
push eax
push dword [esp + 0x2c]
mov ecx, edi
call fcn.100ec050
mov eax, dword [esp + 0x38]
add esp, 0xc
test byte [eax + 0x24], 0x40
je 0x1008fc57
mov ecx, dword [esp + 0x60]
test byte [ecx + 0x28], 0x20
jne 0x1008fc57
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x70], 1
jmp 0x1008fd5e
mov eax, dword [esp + 0x74]
mov dword [esp + 0x70], 0
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x1c], 0x80
jne 0x1008fc87
push dword [esp + 0x24]
mov ecx, dword [esp + 0x64]
mov edx, eax
push dword [esp + 0x44]
call fcn.10091320
add esp, 8
jmp 0x1008fd52
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
cmp edx, eax
je 0x1008fd5a
call fcn.100c25f0
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], eax
movzx edx, word [eax + 0x32]
call fcn.100cc740
mov dword [esp + 0x4c], eax
xor esi, esi
mov eax, dword [esp + 0x58]
xor ecx, ecx
mov dword [esp + 0x14], esi
cmp cx, word [eax + 0x32]
jae 0x1008fd2b
mov edx, dword [esp + 0x74]
xor ecx, ecx
movzx edx, word [edx + 0x34]
test edx, edx
jle 0x1008fcf5
mov eax, dword [eax + 4]
movzx esi, word [eax + esi*2]
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 4]
nop
cmp si, word [eax]
je 0x1008fda8
inc ecx
add eax, 2
cmp ecx, edx
jl 0x1008fce0
mov esi, dword [esp + 0x14]
or ecx, 0xffffffff
mov eax, dword [esp + 0x4c]
mov edx, 0x5c
add eax, esi
push eax
movsx eax, cx
mov ecx, edi
push eax
push dword [esp + 0x2c]
call fcn.100ec050
mov eax, dword [esp + 0x64]
inc esi
add esp, 0xc
mov dword [esp + 0x14], esi
movzx eax, word [eax + 0x32]
cmp esi, eax
mov eax, dword [esp + 0x58]
jl 0x1008fcc3
movzx eax, word [eax + 0x32]
mov edx, 0x1e
push eax
push dword [esp + 0x50]
mov ecx, edi
push dword [esp + 0xa0]
push dword [esp + 0x4c]
call fcn.100eb830
mov esi, dword [esp + 0x54]
add esp, 0x10
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
cmp dword [esi], 0
jne 0x1008fd95
test byte [ecx + 0x28], 0x20
jne 0x1008fd77
push ecx
mov ecx, dword [esp + 0x78]
push eax
call fcn.10090f20
add esp, 8
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x1008fd95
push dword [esp + 0x88]
mov edx, dword [esp + 0x44]
call fcn.10090c30
add esp, 4
mov ecx, dword [esp + 0x2c]
test dword [ecx + 0x24], 0x1000
je 0x1008fdb4
mov byte [esi + 0x35], 0xb3
jmp 0x1008fdc1
mov esi, dword [esp + 0x14]
movzx ecx, cx
jmp 0x1008fcf8
cmp dword [esp + 0x54], 0
sete al
add al, 4
mov byte [esi + 0x35], al
mov eax, dword [esp + 0x24]
mov dword [esi + 0x38], eax
mov al, byte [ecx + 0x26]
and al, 1
mov byte [esi + 0x36], al
test byte [ecx + 0x24], 0xf
jne 0x1008fdda
mov byte [esi + 0x37], 1
cmp dword [esp + 0x70], 0
je 0x100907c5
xor eax, eax
mov dword [esp + 0x74], eax
jmp 0x1008f0fa
test edx, 0x2000
je 0x1009077d
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x80], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x3c], 0
mov eax, dword [ecx + 0x28]
inc dword [ecx + 0x2c]
dec dword [ecx + 0x38]
mov dword [esp + 0x54], eax
inc eax
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x38]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x24], 0
mov dword [esp + 0x38], 0
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x48], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x34]
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x60]
mov byte [esi + 0x35], 0x42
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x1008ffa9
mov ecx, dword [esp + 0x6c]
movzx eax, al
sub eax, dword [ebp + 0xc]
dec eax
mov dword [esp + 0x4c], eax
push 0
lea eax, [eax + eax*8]
lea eax, [eax*8 + 0x50]
push eax
call fcn.10111600
mov ecx, eax
add esp, 8
mov dword [esp + 0x7c], ecx
test ecx, ecx
jne 0x1008fece
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x144]
xor ecx, esp
call fcn.100011bc
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x4c]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x8c]
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
movq xmm0, qword [eax + 0x40]
mov eax, dword [esp + 0x60]
movq qword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
cmp edx, 1
jl 0x1008ff6f
lea edi, [esi + 0x8c]
add ecx, 0x50
mov esi, eax
movzx eax, byte [edi]
lea edi, [edi + 0x58]
lea ecx, [ecx + 0x48]
lea eax, [eax + eax*8]
movups xmm0, xmmword [esi + eax*8 + 8]
movups xmmword [ecx - 0x48], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x18]
movups xmmword [ecx - 0x38], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x28]
movups xmmword [ecx - 0x28], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x38]
movups xmmword [ecx - 0x18], xmm0
movq xmm0, qword [esi + eax*8 + 0x48]
movq qword [ecx - 8], xmm0
sub edx, 1
jne 0x1008ff24
mov edi, dword [esp + 0x84]
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
test byte [eax + 0x28], 0x10
jne 0x1009000f
test byte [edx + 0x1c], 0x80
jne 0x1008ffb6
inc dword [ecx + 0x2c]
mov edx, 0x49
mov eax, dword [ecx + 0x2c]
mov ecx, edi
push eax
push 0
mov dword [esp + 0x24], eax
call fcn.100ebf20
add esp, 8
jmp 0x10090001
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 4]
mov dword [esp + 0x7c], eax
jmp 0x1008ff77
mov esi, dword [edx + 8]
test esi, esi
je 0x1008ffd0
nop dword [eax]
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x1008ffd0
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x1008ffc0
mov edx, dword [ecx + 0x28]
mov dword [esp + 0x1c], edx
lea eax, [edx + 1]
mov dword [ecx + 0x28], eax
mov ecx, edi
movzx eax, word [esi + 0x32]
push eax
push edx
mov edx, 0x73
call fcn.100ebf20
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, esi
call fcn.100eae00
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
inc dword [eax + 0x2c]
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x3c], eax
mov edx, dword [edi + 0x74]
mov dword [esp + 0x2c], edx
cmp dword [edi + 0x78], edx
jg 0x10090038
push 0
push dword [esp + 0x38]
mov edx, 0x46
mov ecx, edi
push 0
call fcn.100ec0c0
add esp, 0xc
mov dword [esp + 0x2c], eax
jmp 0x1009006b
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov edx, dword [esp + 0x34]
mov dword [eax + ecx*4], 0x46
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 edx, dword [esp + 0x88]
mov eax, dword [edx + 0xc]
cmp eax, 1
jle 0x10090198
test eax, eax
jle 0x10090198
xor ecx, ecx
xor esi, esi
mov dword [esp + 0x4c], ecx
nop
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx]
add eax, ecx
cmp eax, dword [esp + 0x28]
je 0x100900e4
test byte [eax + 0xa], 6
jne 0x100900e4
mov edi, 0x1fff
test word [eax + 0xc], di
mov edi, dword [esp + 0x10]
je 0x100900e4
test edx, edx
je 0x100900c9
mov ecx, dword [esp + 0x6c]
push 0
push 0
call fcn.100d3e30
add esp, 8
jmp 0x100900cb
xor eax, eax
mov edx, dword [esp + 0x38]
mov ecx, edi
push eax
call fcn.100d45f0
mov ecx, dword [esp + 0x50]
add esp, 4
mov dword [esp + 0x38], eax
jmp 0x100900e8
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x88]
inc esi
add ecx, 0x30
mov dword [esp + 0x4c], ecx
cmp esi, dword [edx + 0xc]
jl 0x10090090
mov edi, dword [esp + 0x84]
mov esi, dword [esp + 0x44]
test eax, eax
je 0x10090198
mov eax, dword [esp + 0x10]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.10111510
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
je 0x10090181
push 0x34
push 0
push eax
call fcn.10002790
mov ecx, dword [esp + 0x20]
or eax, 0xffffffff
add esp, 0xc
mov word [ecx + 0x22], ax
mov eax, dword [esp + 0x38]
mov dword [ecx + 0x10], eax
mov byte [ecx], 0x2c
mov eax, dword [eax + 4]
and eax, 0x200104
or dword [ecx + 4], eax
call fcn.100d4c40
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x84]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x18], edx
jle 0x10090190
push edx
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.1010dfc0
add esp, 0xc
jmp 0x10090190
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
mov ecx, dword [eax]
call fcn.100d4300
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], eax
push str.MULTI_INDEX_OR
push 1
push dword [esp + 0x18]
call fcn.100eba30
mov edx, dword [esp + 0x7c]
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x30], ecx
cmp dword [edx + 0xc], ecx
jle 0x100905ce
mov dword [esp + 0x9c], 1
mov esi, 0x400
nop
lea eax, [ecx + ecx*2]
shl eax, 4
add eax, dword [edx + 0x14]
mov edx, dword [esp + 0x40]
cmp dword [eax + 0x14], edx
je 0x100901ec
test word [eax + 0xc], si
je 0x100905b6
mov edx, dword [eax]
xor eax, eax
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x78], eax
test edx, edx
je 0x1009020e
push eax
push eax
mov ecx, esi
call fcn.100d3e30
mov ecx, dword [esp + 0x38]
add esp, 8
jmp 0x10090210
xor eax, eax
cmp byte [esi + 0x53], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x90], eax
je 0x10090230
test eax, eax
je 0x100905b1
mov ecx, esi
jmp 0x100905a6
mov edx, dword [esp + 0x38]
test edx, edx
je 0x1009023f
mov dword [edx + 0xc], eax
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0x10]
lea eax, [ecx + 1]
push eax
push str.INDEX__d
push 1
push esi
call fcn.100eba30
push dword [esp + 0x64]
mov edx, dword [esp + 0x90]
mov ecx, esi
push 0x20
push 0
push 0
push dword [esp + 0x34]
call fcn.10084c50
add esp, 0x24
mov dword [esp + 0x68], eax
test eax, eax
je 0x10090597
mov edx, dword [esp + 0x7c]
lea ecx, [eax + 0x2f0]
push 0
push ecx
mov ecx, esi
call fcn.100922f0
mov eax, dword [esp + 0x68]
add esp, 8
test byte [eax + 0x28], 0x10
jne 0x10090450
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], ecx
test byte [eax + 0x1c], 0x80
jne 0x10090305
mov edx, dword [esp + 0x3c]
mov ecx, edi
push edx
push 0xffffffffffffffff
push dword [esp + 0x48]
mov edx, eax
call fcn.100cfac0
add esp, 0xc
mov edx, 0x2e
mov ecx, edi
push dword [esp + 0x14]
push dword [esp + 0x40]
push 0
push dword [esp + 0x28]
call fcn.100eb830
add esp, 0x10
mov dword [esp + 0x78], eax
jmp 0x10090450
mov ecx, eax
call fcn.100c25f0
mov ecx, esi
mov dword [esp + 0x4c], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x58], edx
call fcn.100cc740
xor esi, esi
mov dword [esp + 0x18], eax
test edx, edx
je 0x1009035f
nop dword [eax]
mov edx, dword [esp + 0x48]
lea ecx, [esi + eax]
mov eax, dword [esp + 0x4c]
push ecx
mov ecx, edi
mov eax, dword [eax + 4]
movsx eax, word [eax + esi*2]
push eax
push dword [esp + 0x48]
call fcn.100cfac0
mov edx, dword [esp + 0x64]
inc esi
mov eax, dword [esp + 0x24]
add esp, 0xc
cmp esi, edx
jl 0x10090330
mov esi, dword [esp + 0x14]
test esi, esi
je 0x10090384
push edx
push eax
push 0
push dword [esp + 0x28]
mov edx, 0x1f
mov ecx, edi
call fcn.100eb830
add esp, 0x10
mov dword [esp + 0x78], eax
test esi, esi
js 0x10090416
mov ecx, dword [edi + 0x74]
mov esi, dword [esp + 0x58]
mov edx, dword [esp + 0x18]
cmp dword [edi + 0x78], ecx
jg 0x100903b1
push dword [esp + 0x3c]
mov ecx, edi
push esi
push edx
mov edx, 0x5f
call fcn.100ec0c0
add esp, 0xc
jmp 0x100903dc
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x3c]
mov dword [eax + ecx*4], 0x5f
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push esi
push dword [esp + 0x1c]
mov edx, 0x88
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x28]
call fcn.100eb830
add esp, 0x10
cmp dword [esp + 0x14], 0
je 0x10090416
mov eax, dword [edi + 0x74]
test eax, eax
jle 0x10090416
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x10]
cmp eax, 1
jne 0x10090441
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x10090450
mov al, byte [esi + 0x13]
cmp al, 8
jae 0x10090450
movzx eax, al
mov dword [esi + eax*4 + 0x94], ecx
inc byte [esi + 0x13]
jmp 0x10090450
cmp eax, dword [esi + 0x1c]
jle 0x10090450
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 0x20], eax
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x10090473
push 0
push dword [esp + 0x68]
mov edx, 0xc
mov ecx, edi
push dword [esp + 0x3c]
call fcn.100ec0c0
add esp, 0xc
jmp 0x100904a6
mov edx, dword [esp + 0x34]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x64]
mov dword [eax + ecx*4], 0xc
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 + 0x78]
test ecx, ecx
je 0x100904d1
mov edx, dword [edi + 0x74]
jns 0x100904b6
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x100904c5
mov eax, 0x101442cc
jmp 0x100904ce
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x24]
mov edx, dword [eax + 0x30]
test dl, 2
cmovne ecx, dword [esp + 0x9c]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x338]
test dword [ecx + 0x24], 0x200
je 0x1009053e
cmp dword [esp + 0x30], 0
je 0x10090511
mov esi, dword [esp + 0x80]
cmp dword [ecx + 0x20], esi
mov esi, dword [esp + 0x10]
jne 0x1009053e
mov edi, dword [esp + 0x48]
test byte [edi + 0x1c], 0x80
mov edi, dword [esp + 0x84]
je 0x10090532
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x68]
je 0x1009053e
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x80], ecx
jmp 0x10090549
mov dword [esp + 0x80], 0
test dl, 1
je 0x10090556
mov ecx, dword [esp + 0x60]
or dword [ecx + 0x30], 1
mov ecx, eax
call fcn.10084140
mov ecx, dword [esi + 0xd4]
test ecx, ecx
jne 0x1009056b
xor eax, eax
jmp 0x10090591
mov edx, dword [esi + 8]
test ecx, ecx
jns 0x10090576
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x53], 0
je 0x10090585
mov eax, 0x101442cc
jmp 0x1009058e
mov eax, dword [edx + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xd4], eax
mov eax, dword [esp + 0x90]
test eax, eax
je 0x100905ad
mov ecx, dword [esp + 0x6c]
mov edx, eax
call fcn.100d4300
mov ecx, dword [esp + 0x30]
mov esi, 0x400
mov eax, dword [esp + 0x70]
inc ecx
mov dword [esp + 0x30], ecx
mov edx, eax
cmp ecx, dword [eax + 0xc]
jl 0x100901d0
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0xd4]
test edx, edx
jne 0x100905e0
xor eax, eax
jmp 0x10090618
mov eax, dword [ecx + 8]
mov dword [esp + 0x90], eax
test edx, edx
jns 0x100905f2
mov edx, dword [eax + 0x74]
dec edx
mov eax, dword [eax]
cmp byte [eax + 0x53], 0
je 0x10090601
mov eax, 0x101442cc
jmp 0x10090615
mov eax, dword [esp + 0x90]
lea ecx, [edx + edx*4]
mov eax, dword [eax + 0x70]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 8]
mov dword [ecx + 0xd4], eax
mov eax, dword [esp + 0x80]
mov dword [esi + 0x40], eax
test eax, eax
je 0x10090633
mov eax, dword [esp + 0x54]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x38]
test eax, eax
je 0x1009064d
mov ecx, dword [esp + 0x6c]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.100d4300
mov ecx, dword [esp + 0x2c]
mov edx, dword [edi + 0x74]
test ecx, ecx
jns 0x1009065b
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x1009066a
mov eax, 0x101442cc
jmp 0x10090673
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, dword [edi + 0x74]
mov edx, dword [esi + 0xc]
cmp dword [edi + 0x78], ecx
jg 0x10090697
push 0
push edx
push 0
mov edx, 0xb
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
jmp 0x100906ca
mov esi, dword [esp + 0x44]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0xb
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 ecx, dword [edi + 0xc]
mov edx, dword [esp + 0x64]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x100906e8
push edx
mov edx, edi
call fcn.100eb740
add esp, 4
jmp 0x100906f1
mov ecx, dword [ecx + 0x40]
mov eax, dword [edi + 0x74]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x60]
cmp byte [eax + 0x2c], 1
jbe 0x10090762
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x10090762
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x10090759
cmp dword [edx + 0x220], 0
je 0x10090721
mov edx, ecx
mov ecx, dword [esp + 0x6c]
call fcn.101119d0
jmp 0x10090762
cmp ecx, dword [edx + 0x174]
jae 0x10090759
cmp ecx, dword [edx + 0x16c]
jb 0x10090741
mov eax, dword [edx + 0x168]
mov dword [ecx], eax
mov dword [edx + 0x168], ecx
jmp 0x10090762
cmp ecx, dword [edx + 0x170]
jb 0x10090759
mov eax, dword [edx + 0x160]
mov dword [ecx], eax
mov dword [edx + 0x160], ecx
jmp 0x10090762
push ecx
call sym.SQLite.Interop.dll_SIfc350ae509dc2b53
add esp, 4
cmp dword [esp + 0x24], 0
jne 0x1008f0f8
mov edx, dword [esp + 0x28]
mov ecx, esi
call fcn.10092280
jmp 0x1008f0f8
mov eax, dword [esp + 0x8c]
test byte [eax + 0x28], 0x20
jne 0x1008f0f4
mov ecx, dword [esp + 0x54]
push dword [esp + 0x28]
mov al, byte [ecx + 0x1013c558]
movzx edx, byte [ecx + 0x1013cb54]
mov ecx, edi
mov byte [esi + 0x35], al
mov eax, dword [esp + 0x44]
push eax
mov dword [esi + 0x38], eax
call fcn.100ebf20
add esp, 8
mov byte [esi + 0x37], 1
inc eax
mov dword [esi + 0x3c], eax
jmp 0x1008f0f8
mov eax, dword [esp + 0x74]
jmp 0x1008f0fa
mov eax, dword [esp + 0x8c]
mov ecx, dword [edx]
mov dword [esp + 0x9c], ecx
test byte [eax + 0x24], 8
je 0x100907ee
test byte [ecx + 4], 1
je 0x10090951
mov eax, dword [esp + 0x4c]
cmp eax, 1
jne 0x10090862
mov eax, dword [esp + 0x44]
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movq qword [esp + 0xb0], xmm0
mov dword [esp + 0xa4], 0x100cce10
mov eax, dword [eax + 4]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x58], eax
lea eax, [esp + 0x58]
mov dword [esp + 0xb8], eax
test ecx, ecx
je 0x1009084a
mov edx, ecx
lea ecx, [esp + 0xa0]
call fcn.100d8830
mov edx, dword [esp + 0x14]
cmp word [esp + 0xb4], si
je 0x10090867
mov ecx, 2
mov dword [esp + 0x18], ecx
jmp 0x10090955
cmp eax, 3
jge 0x1009088c
movzx eax, word [edx + 0xa]
test eax, 0x1000
je 0x10090893
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x10090955
mov ecx, 3
mov dword [esp + 0x18], ecx
jmp 0x10090955
mov eax, dword [esp + 0x90]
test eax, 0x200
je 0x10090905
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x10090905
mov esi, dword [edi + 0x74]
mov edx, eax
and eax, 1
shr edx, 1
lea eax, [eax*2 + 0x12]
mov dword [esp + 0x90], eax
cmp dword [edi + 0x78], esi
jg 0x100908d7
push 0
push 0
push edx
mov edx, eax
mov ecx, edi
call fcn.100ec0c0
add esp, 0xc
mov esi, eax
jmp 0x10090905
lea eax, [esi + 1]
mov dword [edi + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x90]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
push 0x10
push dword [esp + 0x9c]
push dword [esp + 0xa4]
push dword [esp + 0x1c]
call fcn.100cd820
add esp, 0x10
test esi, esi
je 0x10090948
mov edx, dword [edi + 0x74]
jns 0x1009092d
lea esi, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x1009093c
mov eax, 0x101442cc
jmp 0x10090945
mov eax, dword [edi + 0x70]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x14]
or word [edx + 0xa], 4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
add edx, 0x30
dec eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], eax
test eax, eax
jg 0x1008f130
mov esi, dword [esp + 0x88]
mov dword [esp + 0x4c], ecx
test ecx, ecx
jg 0x1008f110
mov edx, dword [esi + 0x14]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x34], edx
mov dword [esp + 0x1c], esi
test esi, esi
jle 0x10090b50
test byte [edx + 0xa], 6
jne 0x10090b35
movzx eax, word [edx + 0xc]
mov edi, 0xb
test al, 0x82
setne cl
bt ax, di
mov edi, dword [esp + 0x10]
setb al
test al, cl
je 0x10090b35
mov eax, dword [esp + 0x40]
cmp dword [edx + 0x14], eax
jne 0x10090b35
mov eax, dword [esp + 0x8c]
test byte [eax + 0x24], 8
jne 0x10090b35
mov eax, dword [edx]
mov ecx, dword [edx + 0x18]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x90], eax
xor eax, eax
mov dword [esp + 0xe8], edx
mov dword [esp + 0xec], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x58], eax
mov dword [esp + 0xf4], eax
mov word [esp + 0xf8], 0x100
mov dword [esp + 0xf0], eax
mov dword [esp + 0xfc], 0x83
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], edx
mov byte [esp + 0xfa], 1
cmp ecx, 0xfffffffe
je 0x10090aa2
mov word [esp + 0x130], cx
lea ecx, [esp + 0xe8]
call fcn.1008ba00
mov esi, eax
test esi, esi
je 0x10090a9e
mov edx, dword [esi + 0x20]
mov ecx, edx
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 0x14]
and eax, dword [ebp + 0x18]
or ecx, eax
jne 0x10090a8c
or edx, dword [esi + 0x24]
jne 0x10090a7f
test byte [esi + 0xc], 0x82
jne 0x10090aa4
mov eax, dword [esp + 0x58]
test eax, eax
cmove eax, esi
mov dword [esp + 0x58], eax
lea ecx, [esp + 0xe8]
call fcn.1008ba00
mov esi, eax
test esi, esi
jne 0x10090a62
mov eax, dword [esp + 0x58]
mov esi, eax
test esi, esi
je 0x10090b2d
test byte [esi + 0xa], 4
jne 0x10090b2d
test byte [esi + 0xc], 1
je 0x10090ace
mov eax, dword [esi]
test dword [eax + 4], 0x800
je 0x10090ace
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x10090b2d
mov eax, dword [esi]
push 0x10
push dword [esp + 0x9c]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xa8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0xb8], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0xc8], xmm0
mov eax, dword [eax + 0x30]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x98]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push edi
call fcn.100cd820
add esp, 0x10
or word [esi + 0xa], 4
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x34]
dec esi
add edx, 0x30
mov dword [esp + 0x1c], esi
mov dword [esp + 0x34], edx
test esi, esi
jg 0x10090996
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x44]
mov esi, dword [edx]
test esi, esi
je 0x10090c0c
mov eax, dword [edi + 0x74]
mov dword [edx + 0x1c], eax
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x10090b86
push 0
push esi
push 1
mov edx, 0x46
mov ecx, edi
call fcn.100ec0c0
mov edx, dword [esp + 0x50]
add esp, 0xc
jmp 0x10090bb5
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
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 eax, dword [esp + 0x88]
xor edi, edi
mov esi, dword [eax + 0x14]
cmp dword [eax + 0xc], edi
jle 0x10090c0c
test byte [esi + 0xa], 6
jne 0x10090bf8
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x50]
and eax, dword [edx + 0x54]
or ecx, eax
jne 0x10090bf8
push 0x10
push dword [esp + 0x9c]
push dword [esi]
push dword [esp + 0x1c]
call fcn.100cd820
add esp, 0x10
or word [esi + 0xa], 4
mov edx, dword [esp + 0x88]
inc edi
add esi, 0x30
cmp edi, dword [edx + 0xc]
mov edx, dword [esp + 0x44]
jl 0x10090bc6
mov ecx, dword [esp + 0x44]
pop edi
pop esi
mov eax, dword [ecx + 0x50]
mov edx, dword [ecx + 0x54]
mov ecx, dword [esp + 0x144]
xor ecx, esp
call fcn.100011bc
mov esp, ebp
pop ebp
ret