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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x114
mov eax, dword [0x10119540]
xor eax, esp
mov dword [esp + 0x110], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ecx + 0xc]
lea edx, [ecx + 0x70]
add esi, dword [ecx + 4]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x50], eax
mov eax, dword [ebp + 0x14]
mov ebx, eax
push edi
mov edi, dword [ebp + 0x18]
push dword [ebp + 0x1c]
mov dword [esp + 0x50], eax
add eax, edi
mov dword [esp + 0x3c], eax
add eax, 0xfffffff8
push ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x6c], eax
call fcn.10109cc0
mov dword [esp + 0x94], eax
mov ecx, 0xfff
mov eax, dword [esp + 0x48]
xorps xmm0, xmm0
push edi
movaps xmmword [esp + 0xf4], xmm0
movups xmmword [esp + 0xd8], xmm0
mov eax, dword [eax + 0xcc]
cmp eax, ecx
push 0
cmovb ecx, eax
mov dword [esp + 0xa4], 0
xor eax, eax
mov dword [esp + 0xac], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xd4], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
cmp dword [ecx + 0xc8], 3
setne al
add eax, 3
mov dword [esp + 0x58], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x98], eax
mov eax, dword [edx + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 0xd4]
test eax, eax
mov ecx, 0x1000f6b0
cmovne ecx, eax
mov eax, dword [ecx + 0x10]
movups xmm0, xmmword [ecx]
mov dword [esp + 0xc8], eax
lea eax, [esp + 0xb8]
push eax
movups xmmword [esp + 0xbc], xmm0
call fcn.101094a0
push 0
push edi
mov edi, dword [esp + 0x18]
push ebx
push edi
call fcn.10109580
xor ecx, ecx
cmp ebx, esi
sete cl
add ecx, ebx
mov dword [esp + 0x30], ecx
cmp ecx, dword [esp + 0x64]
jae 0x10107ce3
nop
push dword [esp + 0x50]
mov esi, ecx
mov eax, 0
sub esi, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x30], esi
sete al
push eax
push dword [esp + 0x5c]
lea eax, [esp + 0x9c]
push dword [esp + 0x44]
push ecx
push eax
push dword [esp + 0x60]
push ebx
call dword [esp + 0xb4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x38]
sub eax, ecx
sub ecx, dword [esp + 0x4c]
push eax
push ecx
lea eax, [esp + 0x30]
push eax
push ebx
lea eax, [esp + 0xc0]
push eax
call fcn.10109390
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x5c], ebx
test ebx, ebx
jne 0x10106e77
mov ecx, dword [esp + 0x30]
inc ecx
mov dword [esp + 0x30], ecx
jmp 0x10107cd5
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x54]
mov eax, dword [edx]
mov dword [ecx + 0x10], eax
mov eax, dword [edx + 4]
mov dword [ecx + 0x14], eax
mov eax, dword [edx + 8]
mov dword [ecx + 0x18], eax
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], esi
cmp dword [edi + 0x38], 1
jne 0x10106eb9
lea eax, [esi + 1]
mov ecx, 0x1f
bsr eax, eax
mov esi, 0x1f
sub ecx, eax
sub esi, ecx
shl esi, 8
jmp 0x10106f25
cmp esi, 0x20000
jne 0x10106ed6
push 0
push edi
push 0x1ffff
call fcn.101092c0
lea esi, [eax + 0x100]
jmp 0x10106f25
cmp esi, 0x3f
jbe 0x10106ef1
bsr eax, esi
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
sub edx, ecx
add edx, 0x13
jmp 0x10106efb
lfence
movzx edx, byte [esi + 0x1000f6c8]
mov eax, dword [edi + 4]
mov ecx, 0x1f
movzx esi, byte [edx + 0x1000f554]
shl esi, 8
add esi, dword [edi + 0x2c]
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
shl eax, 8
sub esi, eax
mov eax, dword [esp + 0x14]
mov dword [eax], esi
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + ebx*8 - 4]
mov edx, dword [eax + ebx*8 - 8]
cmp ecx, dword [esp + 0xa4]
jbe 0x10106f6e
mov eax, dword [esp + 0x2c]
movaps xmm2, xmmword [esp + 0xf0]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xd8], edx
movups xmm1, xmmword [esp + 0xd4]
jmp 0x101079a0
cmp dword [edi + 0x38], 1
mov ecx, 0x1f
mov edx, ecx
jne 0x10106f92
mov eax, 1
bsr eax, eax
sub ecx, eax
sub edx, ecx
shl edx, 8
add edx, esi
mov dword [esp + 0x40], edx
jmp 0x10106fad
mov eax, dword [edi + 4]
mov eax, dword [eax]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, dword [edi + 0x2c]
sub edx, ecx
shl edx, 8
sub eax, edx
add eax, esi
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
lea eax, [esi + 0x1c]
lea ecx, [edx - 1]
nop dword [eax + eax]
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x10106fc0
xor eax, eax
mov ecx, edx
mov dword [esp + 0x18], eax
test ebx, ebx
je 0x1010713a
mov edi, dword [esp + 0x24]
mov dword [esp + 0x3c], ecx
nop word [eax + eax]
mov edx, dword [edi + eax*8]
mov eax, dword [edi + eax*8 + 4]
mov dword [esp + 0x44], edx
mov dword [esp + 0x60], eax
cmp ecx, eax
ja 0x10107129
lea ebx, [ecx*8]
sub ebx, ecx
lea edi, [ecx - 3]
add esi, 4
lea ebx, [esi + ebx*4]
mov esi, dword [esp + 0x2c]
nop dword [eax]
bsr eax, edx
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
mov eax, dword [esp + 0x10]
sub edx, ecx
mov ecx, 0x1f
cmp dword [eax + 0x38], 1
jne 0x10107055
lea eax, [edi + 1]
bsr eax, eax
sub ecx, eax
sub edx, ecx
add edx, 0x2f
shl edx, 8
jmp 0x101070f1
mov eax, dword [eax + 0xc]
mov esi, edx
shl esi, 8
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x10]
shl eax, 8
add esi, dword [ecx + 0x34]
sub esi, eax
cmp edx, 0x14
jb 0x10107089
shl edx, 9
add esi, 0xffffda00
add esi, edx
cmp edi, 0x7f
jbe 0x101070a4
bsr eax, edi
mov ecx, 0x1f
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
lea ecx, [eax + 0x24]
jmp 0x101070ae
lfence
movzx ecx, byte [edi + 0x1000f710]
mov eax, dword [esp + 0x10]
mov edx, 0x1f
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 8]
mov eax, dword [eax + ecx*4]
mov ecx, 0x1f
inc eax
bsr eax, eax
sub ecx, eax
mov eax, dword [esp + 0x28]
sub edx, ecx
mov ecx, dword [esp + 0x10]
shl edx, 8
movzx eax, byte [eax + 0x1000f5c4]
shl eax, 8
add eax, dword [ecx + 0x30]
sub eax, edx
lea edx, [eax + 0x33]
add edx, esi
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x40]
inc edi
mov ecx, dword [esp + 0x3c]
add eax, edx
mov edx, dword [esp + 0x44]
mov dword [ebx + 4], ecx
inc ecx
mov dword [ebx], edx
mov dword [ebx + 8], esi
mov dword [ebx - 4], eax
add ebx, 0x1c
mov dword [esp + 0x3c], ecx
cmp ecx, dword [esp + 0x60]
jbe 0x10107020
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
inc eax
mov dword [esp + 0x18], eax
cmp eax, ebx
jb 0x10106ff0
lea edi, [ecx - 1]
mov edx, 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edx
cmp edi, edx
jb 0x10107931
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x98], eax
nop dword [eax]
mov ecx, dword [esp + 0x30]
lea eax, [edx*8]
sub eax, edx
add ecx, edx
mov dword [esp + 0x18], ecx
cmp dword [esi + eax*4 - 0x14], 0
jne 0x101071a1
mov edi, dword [esi + eax*4 - 0x10]
inc edi
jmp 0x101071a6
mov edi, 1
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], edi
cmp dword [eax + 0x40], 2
jne 0x101071bb
mov ebx, 0x800
jmp 0x10107216
cmp dword [eax + 0x38], 1
jne 0x101071c8
mov ebx, 0x600
jmp 0x10107216
mov ebx, dword [eax + 0x28]
xor edx, edx
mov edi, dword [eax]
lea esi, [ebx - 0x100]
nop word [eax + eax]
movzx eax, byte [edx + ecx - 1]
mov ecx, 0x1f
mov eax, dword [edi + eax*4]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x18]
shl eax, 8
cmp eax, esi
cmova eax, esi
inc edx
sub ebx, eax
cmp edx, 1
jb 0x101071e0
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x38], 1
jne 0x10107239
lea eax, [edi + 1]
mov ecx, 0x1f
bsr eax, eax
mov esi, 0x1f
sub ecx, eax
sub esi, ecx
mov ecx, dword [esp + 0x10]
shl esi, 8
jmp 0x101072b1
cmp edi, 0x20000
jne 0x1010725a
push 0
push eax
push 0x1ffff
call fcn.101092c0
mov ecx, dword [esp + 0x10]
lea esi, [eax + 0x100]
jmp 0x101072b1
cmp edi, 0x3f
jbe 0x10107279
bsr eax, edi
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
mov eax, dword [esp + 0x10]
sub edx, ecx
add edx, 0x13
jmp 0x10107283
lfence
movzx edx, byte [edi + 0x1000f6c8]
mov eax, dword [eax + 4]
mov ecx, 0x1f
movzx esi, byte [edx + 0x1000f554]
shl esi, 8
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x10]
shl eax, 8
add esi, dword [ecx + 0x2c]
sub esi, eax
cmp dword [ecx + 0x38], 1
lea eax, [edi - 1]
jne 0x101072d0
bsr eax, edi
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
sub edx, ecx
shl edx, 8
jmp 0x10107346
cmp eax, 0x20000
jne 0x101072ef
push 0
push dword [esp + 0x14]
push 0x1ffff
call fcn.101092c0
lea edx, [eax + 0x100]
jmp 0x10107346
cmp eax, 0x3f
jbe 0x1010730a
bsr eax, eax
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
sub edx, ecx
add edx, 0x13
jmp 0x10107314
lfence
movzx edx, byte [eax + 0x1000f6c8]
mov eax, dword [esp + 0x10]
mov ecx, 0x1f
mov eax, dword [eax + 4]
mov eax, dword [eax + edx*4]
movzx edx, byte [edx + 0x1000f554]
inc eax
bsr eax, eax
shl edx, 8
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x10]
shl eax, 8
add edx, dword [ecx + 0x2c]
sub edx, eax
mov ecx, dword [esp + 0x20]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + eax*4 - 0x1c]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, ebx
add ecx, esi
lea eax, [edx*8]
sub eax, edx
mov edx, dword [esp + 0x14]
mov ebx, dword [edx + eax*4]
cmp ecx, ebx
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x20]
jg 0x101073c0
lea eax, [ebx*8]
sub eax, ebx
mov dword [edx + eax*4 + 8], 0
lea eax, [ebx*8]
sub eax, ebx
mov dword [edx + eax*4 + 4], 0
lea eax, [ebx*8]
sub eax, ebx
mov dword [edx + eax*4 + 0xc], edi
lea eax, [ebx*8]
sub eax, ebx
mov edi, ecx
mov dword [edx + eax*4], ecx
jmp 0x101073c4
mov edi, dword [esp + 0x44]
lea eax, [ebx*8]
sub eax, ebx
mov esi, dword [edx + eax*4 + 8]
lea eax, [ebx*8]
sub eax, ebx
lea ecx, [edx + eax*4]
lea eax, [ebx*8]
sub eax, ebx
lea edx, [edx + eax*4]
test esi, esi
je 0x10107496
mov ecx, ebx
xor ebx, ebx
sub ecx, esi
cmp dword [edx + 0xc], ebx
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
sete bl
lea eax, [edx*8]
sub eax, edx
mov edx, dword [esi + eax*4 + 4]
lea eax, [ecx*8]
sub eax, ecx
movq xmm0, qword [esi + eax*4 + 0x10]
mov ecx, dword [esi + eax*4 + 0x18]
movq qword [esp + 0x70], xmm0
mov dword [esp + 0x78], ecx
cmp edx, 3
jbe 0x10107449
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], eax
lea eax, [edx - 3]
mov dword [esp + 0x70], eax
jmp 0x10107477
lea eax, [edx - 1]
add eax, ebx
je 0x10107477
mov esi, dword [esp + 0x70]
cmp eax, 3
jne 0x1010745e
lea edx, [esi - 1]
jmp 0x10107467
mov edx, dword [esp + eax*4 + 0x70]
cmp eax, 2
jb 0x1010746b
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x70], edx
mov ebx, dword [esp + 0x20]
movq xmm0, qword [esp + 0x70]
lea eax, [ebx*8]
sub eax, ebx
movq qword [esi + eax*4 + 0x10], xmm0
mov dword [esi + eax*4 + 0x18], ecx
jmp 0x101074aa
movq xmm0, qword [ecx - 0xc]
mov eax, dword [ecx - 4]
mov esi, dword [esp + 0x14]
movq qword [edx + 0x10], xmm0
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x18], eax
ja 0x101078a7
cmp ebx, dword [esp + 0x1c]
je 0x1010792d
lea eax, [ebx + 1]
lea ecx, [eax*8]
sub ecx, eax
lea eax, [edi + 0x80]
cmp dword [esi + ecx*4], eax
jle 0x101078a7
lea eax, [ebx*8]
sub eax, ebx
xor ebx, ebx
mov eax, dword [esi + eax*4 + 8]
test eax, eax
mov esi, dword [esp + 0x20]
setne bl
test eax, eax
jne 0x10107510
mov ecx, dword [esp + 0x14]
lea eax, [esi*8]
sub eax, esi
mov eax, dword [ecx + eax*4 + 0xc]
mov dword [esp + 0x2c], eax
jmp 0x10107518
mov dword [esp + 0x2c], 0
mov edx, dword [esp + 0x10]
mov ecx, 0x1f
cmp dword [edx + 0x38], 1
jne 0x1010753d
mov eax, 1
mov edx, 0x1f
bsr eax, eax
sub ecx, eax
sub edx, ecx
shl edx, 8
jmp 0x10107557
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x2c]
mov eax, dword [eax]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
shl eax, 8
sub edx, eax
push dword [esp + 0x50]
lea eax, [edx + edi]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x70], eax
lea eax, [esi*8]
sub eax, esi
add eax, 4
push ebx
mov ebx, dword [esp + 0x20]
lea eax, [edi + eax*4]
push eax
push dword [esp + 0x44]
lea eax, [esp + 0xa0]
push ebx
push eax
push dword [esp + 0x60]
mov eax, dword [esp + 0x40]
push eax
call dword [esp + 0xb4]
mov edx, eax
mov esi, ebx
sub esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x18], edx
test eax, eax
je 0x1010766a
cmp dword [esp + 0xb4], eax
jae 0x1010766a
mov ecx, dword [esp + 0x3c]
cmp esi, ecx
jb 0x1010761e
jbe 0x101075dc
mov eax, esi
sub eax, ecx
push eax
lea eax, [esp + 0xb4]
push eax
call fcn.10109420
mov eax, dword [esp + 0x38]
sub eax, ebx
push eax
push esi
lea eax, [esp + 0xb8]
push eax
call fcn.101094a0
mov ecx, dword [esp + 0xc8]
mov ebx, dword [esp + 0xc4]
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x98], eax
jmp 0x10107625
mov ebx, dword [esp + 0xa0]
mov eax, esi
sub eax, ebx
sub ecx, eax
sub ecx, ebx
cmp esi, ebx
mov ebx, dword [esp + 0x24]
jb 0x1010766e
cmp esi, dword [esp + 0x3c]
jae 0x1010766e
cmp ecx, 3
jb 0x1010766e
test edx, edx
je 0x10107652
cmp ecx, dword [ebx + edx*8 - 4]
jbe 0x10107676
cmp edx, 0x1000
jae 0x10107676
mov eax, dword [esp + 0xcc]
add eax, 3
mov dword [ebx + edx*8 + 4], ecx
mov dword [ebx + edx*8], eax
inc edx
mov dword [esp + 0x18], edx
jmp 0x1010766e
mov ebx, dword [esp + 0x24]
test edx, edx
je 0x101078a7
mov ecx, dword [ebx + edx*8 - 4]
cmp ecx, dword [esp + 0xa4]
ja 0x101078c9
mov edx, dword [esp + 0x20]
lea eax, [ecx + edx]
cmp eax, 0x1000
jae 0x101078c5
xor esi, esi
mov dword [esp + 0x60], esi
cmp dword [esp + 0x18], esi
jbe 0x101078a7
lea eax, [ebx - 4]
mov dword [esp + 0x44], eax
mov ecx, dword [eax + 4]
mov ebx, dword [eax + 8]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0xa8], ebx
test esi, esi
je 0x101076ca
mov eax, dword [eax]
inc eax
jmp 0x101076ce
mov eax, dword [esp + 0x50]
mov dword [esp + 0xac], eax
cmp ebx, eax
jb 0x1010788d
lea eax, [ebx + 0x1000f70d]
mov dword [esp + 0x28], eax
lea esi, [ebx + edx]
lea eax, [esi*8]
sub eax, esi
lea edi, [edi + eax*4]
mov eax, 0xfffffffe
sub eax, edx
mov dword [esp + 0x40], edi
mov dword [esp + 0xd0], eax
mov eax, 0xfffffffd
sub eax, edx
mov dword [esp + 0x68], eax
bsr eax, ecx
mov ecx, 0x1f
mov edx, 0x1f
sub ecx, eax
mov eax, dword [esp + 0x10]
sub edx, ecx
mov ecx, 0x1f
cmp dword [eax + 0x38], 1
jne 0x1010774e
mov eax, dword [esp + 0xd0]
add eax, esi
bsr eax, eax
sub ecx, eax
sub edx, ecx
add edx, 0x2f
shl edx, 8
jmp 0x101077ef
mov eax, dword [eax + 0xc]
mov edi, edx
shl edi, 8
mov eax, dword [eax + edx*4]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x10]
shl eax, 8
add edi, dword [ecx + 0x34]
sub edi, eax
cmp edx, 0x14
jb 0x10107782
shl edx, 9
add edi, 0xffffda00
add edi, edx
mov eax, dword [esp + 0x68]
add eax, esi
cmp eax, 0x7f
jbe 0x101077a3
bsr eax, eax
mov ecx, 0x1f
mov ebx, 0x1f
sub ecx, eax
sub ebx, ecx
add ebx, 0x24
jmp 0x101077ad
lfence
mov eax, dword [esp + 0x28]
movzx ebx, byte [eax]
mov eax, dword [esp + 0x10]
mov ecx, 0x1f
mov edx, 0x1f
mov eax, dword [eax + 8]
mov eax, dword [eax + ebx*4]
inc eax
bsr eax, eax
sub ecx, eax
movzx eax, byte [ebx + 0x1000f5c4]
mov ebx, dword [esp + 0xa8]
sub edx, ecx
mov ecx, dword [esp + 0x10]
shl eax, 8
shl edx, 8
add eax, dword [ecx + 0x30]
sub eax, edx
lea edx, [edi + 0x33]
mov edi, dword [esp + 0x40]
add edx, eax
add edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x1c]
cmp esi, eax
ja 0x10107805
cmp edx, dword [edi]
jge 0x10107881
jmp 0x10107830
lea ecx, [eax + 1]
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax*4]
mov ecx, esi
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x1c], esi
mov dword [eax], 0x40000000
lea eax, [eax + 0x1c]
sub ecx, 1
jne 0x10107822
mov ecx, dword [esp + 0x14]
lea eax, [esi*8]
mov edi, dword [esp + 0x14]
sub eax, esi
dec dword [esp + 0x28]
dec esi
mov dword [ecx + eax*4 + 8], ebx
dec ebx
mov ecx, dword [esp + 0x5c]
mov dword [edi + eax*4 + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [edi + eax*4 + 0xc], ecx
mov ecx, dword [esp + 0x5c]
mov dword [edi + eax*4], edx
mov edi, dword [esp + 0x40]
sub edi, 0x1c
mov dword [esp + 0xa8], ebx
mov dword [esp + 0x40], edi
cmp ebx, dword [esp + 0xac]
jae 0x10107713
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x44]
inc esi
add eax, 8
mov dword [esp + 0x60], esi
mov dword [esp + 0x44], eax
cmp esi, dword [esp + 0x18]
jb 0x101076b0
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
inc edx
mov dword [esp + 0x20], edx
cmp edx, edi
ja 0x10107931
mov esi, dword [esp + 0x14]
jmp 0x10107180
mov edx, dword [esp + 0x18]
mov edx, dword [ebx + edx*8 - 8]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xdc], ecx
lea eax, [ebx*8]
mov dword [esp + 0xd8], edx
sub eax, ebx
cmp dword [edi + eax*4 + 8], 0
jne 0x10107909
lea eax, [ebx*8]
sub eax, ebx
mov eax, dword [edi + eax*4 + 0xc]
jmp 0x1010790b
xor eax, eax
movups xmm1, xmmword [esp + 0xd4]
sub ebx, eax
xor esi, esi
movaps xmm2, xmmword [esp + 0xf0]
cmp ebx, 0x1000
cmovbe esi, ebx
jmp 0x101079a2
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
lea eax, [edi*8]
sub eax, edi
movups xmm1, xmmword [ecx + eax*4]
movq xmm2, qword [ecx + eax*4 + 0x10]
mov eax, dword [ecx + eax*4 + 0x18]
movaps xmm0, xmm1
psrldq xmm0, 8
movd ecx, xmm0
movaps xmm0, xmm1
psrldq xmm0, 0xc
movd edx, xmm0
mov dword [esp + 0x9c], eax
movups xmmword [esp + 0xd4], xmm1
mov dword [esp + 0x2c], edx
movaps xmmword [esp + 0xf0], xmm2
lea eax, [ecx + edx]
cmp edi, eax
jbe 0x10107999
sub edi, ecx
sub edi, edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x1c], edi
mov esi, edi
jmp 0x101079a6
mov edx, dword [esp + 0xd8]
xor esi, esi
mov dword [esp + 0x1c], esi
mov ebx, dword [esp + 0x14]
lea eax, [esi*8]
sub eax, esi
movq xmm0, qword [ebx + eax*4 + 0x10]
lea eax, [ebx + eax*4]
test ecx, ecx
je 0x10107a6d
mov ecx, dword [eax + 0x18]
xor ebx, ebx
cmp dword [esp + 0x2c], ebx
movq qword [esp + 0x80], xmm0
sete bl
mov dword [esp + 0x88], ecx
cmp edx, 3
jbe 0x10107a1a
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x84], eax
lea eax, [edx - 3]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x54]
movq xmm0, qword [esp + 0x80]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
jmp 0x10107a7b
lea eax, [ebx - 1]
add eax, edx
je 0x10107a57
mov esi, dword [esp + 0x80]
cmp eax, 3
jne 0x10107a32
lea edx, [esi - 1]
jmp 0x10107a3e
mov edx, dword [esp + eax*4 + 0x80]
cmp eax, 2
jb 0x10107a45
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x80], edx
mov eax, dword [esp + 0x54]
movq xmm0, qword [esp + 0x80]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
jmp 0x10107a7b
mov ecx, dword [esp + 0x54]
movq qword [ecx], xmm0
mov eax, dword [eax + 0x18]
mov dword [ecx + 8], eax
mov edx, dword [esp + 0x14]
lea ecx, [esi + 1]
lea eax, [ecx*8]
mov dword [esp + 0x18], ecx
sub eax, ecx
mov ebx, ecx
cmp dword [esp + 0x1c], 0
lea esi, [edx + eax*4]
mov eax, dword [esp + 0x9c]
movups xmmword [esi], xmm1
movq qword [esi + 0x10], xmm2
mov dword [esi + 0x18], eax
jbe 0x10107b24
mov edi, dword [esp + 0x1c]
lea eax, [edi*8]
dec ebx
sub eax, edi
lea esi, [esi - 0x1c]
movups xmm1, xmmword [edx + eax*4]
lea edx, [edx + eax*4]
movq xmm0, qword [edx + 0x10]
movq qword [esp + 0x110], xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
movd ecx, xmm0
movups xmm0, xmmword [edx]
psrldq xmm1, 0xc
movd eax, xmm1
movups xmmword [esi], xmm0
movq xmm0, qword [edx + 0x10]
add ecx, eax
movq qword [esi + 0x10], xmm0
mov eax, dword [edx + 0x18]
mov dword [esi + 0x18], eax
cmp edi, ecx
jbe 0x10107b10
mov edx, dword [esp + 0x14]
sub edi, ecx
jne 0x10107ab5
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
cmp ebx, ecx
ja 0x10107c6d
mov edx, dword [esp + 0x14]
lea edi, [ebx*8]
sub ecx, ebx
sub edi, ebx
add edi, 2
inc ecx
mov dword [esp + 0x18], ecx
lea edi, [edx + edi*4]
nop word [eax + eax]
mov esi, dword [edi + 4]
mov ebx, dword [edi]
mov eax, dword [edi - 4]
mov dword [esp + 0x6c], eax
lea edx, [ebx + esi]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x34]
lea ecx, [esi + edx]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x18]
test ebx, ebx
je 0x10107c59
push ebx
push eax
push edx
push esi
push dword [esp + 0x20]
call fcn.10109e60
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x58]
add ecx, 0xffffffe0
mov eax, dword [edx + 0xc]
cmp dword [esp + 0x30], ecx
ja 0x10107bdd
mov ecx, dword [esp + 0x34]
movups xmm0, xmmword [ecx]
movups xmmword [eax], xmm0
cmp esi, 0x10
jbe 0x10107bf0
mov ecx, dword [edx + 0xc]
lea eax, [esi - 0x10]
add ecx, 0x10
lea edx, [ecx + eax]
mov eax, dword [esp + 0x34]
movups xmm0, xmmword [eax + 0x10]
lea eax, [esi - 0x10]
movups xmmword [ecx], xmm0
cmp eax, 0x10
jle 0x10107bec
lea eax, [ecx + 0x10]
mov ecx, dword [esp + 0x34]
add ecx, 0x20
movups xmm0, xmmword [ecx]
lea ecx, [ecx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, edx
jb 0x10107bc3
jmp 0x10107bec
push ecx
push dword [esp + 0x34]
push dword [esp + 0x3c]
push eax
call fcn.100bbea0
mov edx, dword [esp + 0x58]
add dword [edx + 0xc], esi
cmp esi, 0xffff
jbe 0x10107c0d
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 3
mov dword [edx + 0x24], 1
mov dword [edx + 0x28], eax
mov eax, dword [edx + 4]
add ebx, 0xfffffffd
mov ecx, dword [esp + 0x6c]
mov word [eax + 4], si
mov eax, dword [edx + 4]
mov dword [eax], ecx
cmp ebx, 0xffff
jbe 0x10107c3a
mov eax, dword [edx + 4]
sub eax, dword [edx]
sar eax, 3
mov dword [edx + 0x24], 2
mov dword [edx + 0x28], eax
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x18]
mov word [eax + 6], bx
add dword [edx + 4], 8
mov edx, dword [esp + 0x34]
add edx, dword [esp + 0x68]
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], edx
add edi, 0x1c
sub ecx, 1
mov dword [esp + 0x18], ecx
jne 0x10107b40
mov edi, dword [esp + 0x10]
cmp dword [edi + 0x40], 2
je 0x10107c8e
mov eax, dword [edi + 0x18]
mov ecx, 0x1f
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
shl eax, 8
mov dword [edi + 0x28], eax
mov eax, dword [edi + 0x1c]
mov ecx, 0x1f
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, 0x1f
shl eax, 8
mov dword [edi + 0x2c], eax
mov eax, dword [edi + 0x20]
inc eax
bsr eax, eax
sub ecx, eax
mov eax, 0x1f
sub eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 8
mov dword [edi + 0x30], eax
mov eax, dword [edi + 0x24]
inc eax
bsr eax, eax
shl eax, 8
mov dword [edi + 0x34], eax
mov ebx, dword [esp + 0x34]
cmp ecx, dword [esp + 0x64]
jb 0x10106e00
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x11c]
sub eax, ebx
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100913c0
mov esp, ebp
pop ebp
ret 0x18