Function at 0x10088120
Capabilities:
Encrypt data using chaskey

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xa8
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x44], esi
mov ecx, dword [esi + 0x2f00]
mov edx, dword [esi + 0x8ac]
mov eax, dword [esi + 0xa64]
mov dword [edi + 0x68], eax
mov eax, dword [ecx + 0xb0]
add eax, 0x240
mov dword [esp + 0x34], edx
mov dword [edi + 0x90], eax
mov eax, dword [ecx + 0xb4]
add eax, 0x240
mov dword [esp + 0x1c], ecx
mov dword [edi + 0x94], eax
mov eax, dword [ecx + 0xb0]
mov eax, dword [eax + 0x4240]
mov dword [edi + 0x98], eax
mov eax, dword [ecx + 0xb4]
mov eax, dword [eax + 0x4240]
mov dword [edi + 0x9c], eax
mov eax, dword [ecx + 0xc0]
mov dword [edi + 0xa0], eax
mov eax, dword [ecx + 0xc0]
add eax, 0x4000
mov dword [edi + 0x64], 0
mov dword [edi + 0xa4], eax
mov eax, edx
shl eax, 0xe
xor eax, dword [edi + 0x64]
mov dword [edi + 0x60], 0
and eax, 0xc000
xor dword [edi + 0x64], eax
mov dword [edi + 0x60], 0x3fc0404f
test byte [ecx + 0x64], 1
mov eax, dword [ecx + 0x5c]
mov edx, dword [ecx + 0x48]
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], eax
jne 0x1008820d
test edx, 0x10000
je 0x1008820d
lea eax, [ecx + 0x48]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], eax
jmp 0x10088228
mov dword [esp + 0x4c], 0xffffffff
lea eax, [ecx + 0x48]
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], eax
test edx, 0x10000
je 0x10088243
test edx, 0x60000
jne 0x10088243
or eax, 0xffffffff
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], eax
mov eax, dword [esi + 0xa40]
test byte [eax], 0x10
je 0x10088280
mov eax, dword [ecx + 8]
add ecx, 8
shr eax, 0x14
and eax, 0x3f
shl eax, 7
cmp word [eax + 0x10762140], 0
jbe 0x10088280
lea eax, [esi + 0x2ba8]
push eax
push ecx
lea ecx, [esi + 0xa80]
call fcn.10027390
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
test dl, 1
je 0x10088351
lea eax, [esp + 0x4c]
mov ecx, esi
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.1009a150
test al, al
jne 0x10088317
mov edx, dword [esp + 0x40]
mov ecx, dword [edx]
shl ecx, 5
xor ecx, dword [edi + 0x60]
and ecx, 0x1c0
xor ecx, dword [edi + 0x60]
mov dword [edi + 0x60], ecx
mov eax, dword [edx]
shr eax, 3
xor eax, ecx
and eax, 0x600
xor ecx, eax
mov dword [edi + 0x60], ecx
mov eax, dword [edx]
shr eax, 4
movzx eax, al
movd xmm0, eax
mov eax, ecx
shr eax, 6
and eax, 7
pshufd xmm1, xmm0, 0
movups xmmword [edi + 0xb0], xmm1
sub eax, 2
je 0x10088321
sub eax, 4
jne 0x10088317
movaps xmm0, xmmword [0x101a5440]
and ecx, 0xffffff7f
psrld xmm0, 0x1f
or ecx, 0x140
mov dword [edi + 0x60], ecx
paddd xmm0, xmm1
movups xmmword [edi + 0xb0], xmm0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jmp 0x10088355
movaps xmm0, xmmword [0x101a5440]
and ecx, 0xfffffeff
mov eax, dword [esp + 0x28]
or ecx, 0xc0
psrld xmm0, 0x1f
mov dword [edi + 0x60], ecx
psubd xmm1, xmm0
mov dword [esp + 0x30], eax
movups xmmword [edi + 0xb0], xmm1
jmp 0x10088355
mov eax, dword [esp + 0x30]
cmp eax, 0xffffffff
mov eax, dword [edi + 0x60]
setne cl
and eax, 0x1c0
mov byte [esp + 0x1a], cl
cmp eax, 0x40
jne 0x10088398
mov edx, dword [esp + 0x40]
mov edx, dword [edx]
test edx, 0x4000
je 0x10088391
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x58]
mov cl, byte [esp + 0x1a]
and eax, 0x3f000000
cmp eax, 0x1000000
jne 0x10088398
mov byte [esp + 0x26], 0
jmp 0x100883a3
mov eax, dword [esp + 0x14]
mov byte [esp + 0x26], 1
mov edx, dword [eax]
cmp dword [esp + 0x4c], 0xffffffff
setne al
mov byte [esp + 0x27], al
test edx, 0x10000
je 0x100883ca
and edx, 0x60000
mov byte [esp + 0x1b], 1
cmp edx, 0x20000
ja 0x100883cf
mov byte [esp + 0x1b], 0
test cl, cl
jne 0x100883db
test al, al
je 0x10088e94
mov ecx, dword [edi + 0x64]
movzx eax, byte [esp + 0x1a]
and ecx, 0xfffffffe
or ecx, eax
mov al, byte [esp + 0x26]
movzx edx, al
and ecx, 0xfffffffd
add edx, edx
or edx, ecx
cmp byte [esp + 0x1a], 0
mov dword [edi + 0x64], edx
jne 0x10088408
test al, al
je 0x10088fb0
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ecx + 0x5b]
and eax, 0x3f
shl eax, 7
movzx eax, word [eax + 0x10762142]
xor eax, dword [edi + 0x60]
and eax, 3
xor eax, dword [edi + 0x60]
cmp dword [esp + 0x34], 1
mov dword [esp + 0x14], eax
mov dword [edi + 0x60], eax
je 0x1008843f
cmp dword [esp + 0x34], 2
mov dword [esp + 0x28], eax
jne 0x10088473
cmp word [esi + 0x91c], 0xffff
mov dword [esp + 0x28], eax
je 0x1008846f
mov eax, dword [esi + 0xa40]
mov eax, dword [eax]
shl eax, 8
xor eax, dword [esp + 0x14]
and eax, 0x800
xor eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov dword [edi + 0x60], eax
jmp 0x10088473
mov eax, dword [esp + 0x28]
mov ecx, dword [esi + 0xa40]
test byte [ecx], 0x10
mov ecx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll__aligned_malloc]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x1c]
je 0x10088d65
mov ecx, dword [ecx + 0xc]
and eax, 0xffff8fff
and ecx, 0x18
shl ecx, 9
or ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x60], ecx
mov eax, dword [eax + 0xc]
shl eax, 0xd
xor eax, ecx
and eax, 0x8000
xor ecx, eax
mov dword [edi + 0x60], ecx
mov eax, dword [esi + 0xa40]
mov eax, dword [eax]
shl eax, 8
xor eax, ecx
and eax, 0x10000
xor ecx, eax
mov dword [edi + 0x60], ecx
mov eax, dword [esi + 0x920]
shr eax, 3
movzx eax, al
shl eax, 0x11
xor eax, ecx
and eax, 0x20000
xor ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x60], ecx
mov dword [esp + 0x14], ecx
mov eax, dword [eax + 8]
shr eax, 0x14
and eax, 0x3f
shl eax, 7
cmp word [eax + 0x10762140], 0
jbe 0x10088557
or ecx, 0x40000
push 0x20
push 0x400
mov dword [edi + 0x60], ecx
call dword [esp + 0x50]
mov ecx, dword [esp + 0x24]
mov dword [edi + 0x88], eax
mov ecx, dword [ecx + 8]
shr ecx, 0x14
and ecx, 0x3f
shl ecx, 7
movzx ecx, word [ecx + 0x10762140]
shl ecx, 2
push ecx
push dword [esi + 0xa94]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [edi + 0x60]
add esp, 0x14
mov edx, dword [edi + 0x64]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
add eax, 0x20
mov dword [esp + 0x38], eax
mov ecx, dword [eax]
shl ecx, 6
xor ecx, edx
and ecx, 0xc0
xor ecx, edx
mov dword [edi + 0x64], ecx
mov eax, dword [eax]
shl eax, 6
xor eax, ecx
and eax, 0x300
xor eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [edi + 0x64], eax
test ecx, 0x7000
jne 0x100885cd
test ecx, 0x8000
je 0x100885cd
cmp word [esi + 0x91c], 0xffff
jne 0x100885cd
movups xmm0, xmmword [esi + 0x8b0]
pcmpeqd xmm0, xmmword [0x101a5060]
pmovmskb eax, xmm0
cmp eax, 0xffff
jne 0x100885cd
and ecx, 0xffff9fff
or ecx, 0x1000
mov dword [edi + 0x60], ecx
cmp dword [esi + 0x316c], 0
xorps xmm1, xmm1
je 0x1008861f
mov edx, dword [esi + 0x2f00]
mov ecx, dword [edx + 0x10]
test cl, 0x1c
jbe 0x1008861f
mov eax, ecx
and eax, 0x1c0
cmp eax, 0x80
jb 0x1008861f
and ecx, 0x1c0
cmp ecx, 0x140
ja 0x1008861f
movss xmm0, dword [esi + 0x928]
comiss xmm0, xmm1
jbe 0x1008861f
mov eax, dword [esp + 0x40]
mov byte [esp + 0x14], 1
mov dword [esp + 0x40], eax
jmp 0x1008862a
mov edx, dword [esi + 0x2f00]
mov byte [esp + 0x14], 0
mov eax, dword [esi + 0x920]
push dword [esp + 0x14]
movups xmm0, xmmword [esi + 0x8d0]
shufps xmm0, xmmword [esi + 0x900], 0x44
shr eax, 3
and al, 1
movaps xmmword [esp + 0x74], xmm0
mov byte [esp + 0x24], al
lea eax, [esp + 0x74]
push dword [esp + 0x24]
push eax
push ecx
lea eax, [esp + 0x68]
mov ecx, edx
push eax
call fcn.1003b560
mov eax, dword [edi + 0x60]
xorps xmm0, xmm0
shr eax, 0x11
mov ecx, esi
and al, 1
movaps xmmword [esp + 0x80], xmm0
movzx eax, al
push eax
push dword [esp + 0x3c]
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.10099b10
mov ecx, dword [esi + 0x33a4]
lea eax, [esi + 0x2ba8]
push 0
push eax
lea eax, [esp + 0x60]
push eax
call fcn.100b2700
test eax, eax
je 0x10088e94
movaps xmm0, xmmword [esp + 0x80]
mov dword [edi + 0x1f0], eax
movups xmmword [edi + 0x1e0], xmm0
mov dword [edi + 0x210], 0
mov ecx, dword [eax + 0x20]
sub ecx, 3
shl ecx, 0x11
xor ecx, dword [edi + 0x64]
and ecx, 0xe0000
xor ecx, dword [edi + 0x64]
cmp byte [esp + 0x14], 0
mov dword [edi + 0x64], ecx
je 0x10088a57
movss xmm0, dword [esi + 0x924]
xorps xmm1, xmm1
comiss xmm0, xmm1
mov edx, dword [esp + 0x1c]
jbe 0x1008871e
mov eax, dword [edx + 0x10]
shl eax, 9
xor eax, dword [edi + 0x60]
and eax, 0x20000
xor dword [edi + 0x60], eax
mov eax, dword [edi + 0x60]
and ecx, 0xff9fffff
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x10]
and eax, 0x40
add eax, 0x40
shl eax, 0xf
or eax, ecx
mov dword [edi + 0x64], eax
mov ecx, dword [edx + 0x10]
shl ecx, 0x14
xor ecx, eax
and ecx, 0x100000
xor ecx, eax
mov dword [edi + 0x64], ecx
mov edi, 6
mov eax, dword [edx + 0x10]
shr eax, 2
and eax, 7
cmp eax, edi
mov esi, eax
cmova esi, edi
shl esi, 0x10
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x44]
cvttss2si edi, dword [esi + 0x924]
mov esi, dword [edx + 0x14]
shl esi, 0x14
sar esi, 8
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x3c], edi
cmp edi, eax
mov edi, dword [ebp + 8]
jl 0x100887b3
mov eax, dword [esp + 0x3c]
or ecx, 0x100000
and ecx, 0xffbfffff
or ecx, 0x200000
shl eax, 0x10
mov dword [edi + 0x64], ecx
mov dword [esp + 0x14], eax
mov eax, ecx
and eax, 0x600000
cmp eax, 0x400000
mov eax, dword [esp + 0x28]
jne 0x100887ca
dec eax
mov dword [esp + 0x28], eax
test dword [esp + 0x20], 0x10000
je 0x100887dd
or ecx, 0x100000
mov dword [edi + 0x64], ecx
test ecx, 0x100000
je 0x10088853
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x28], eax
cmovl eax, dword [esp + 0x28]
xor esi, esi
test eax, eax
cmovns esi, eax
and ecx, 0x600000
mov dword [esp + 0x20], esi
cmp ecx, 0x200000
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x20]
jne 0x1008881f
add ecx, 0x8000
and ecx, 0xffff0000
mov eax, ecx
sar eax, 0x10
movd xmm0, eax
pshufd xmm0, xmm0, 0
movzx eax, cx
movups xmmword [edi + 0x190], xmm0
movd xmm0, eax
pshufd xmm0, xmm0, 0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0xa0
movups xmmword [edi + 0x1a0], xmm0
jmp 0x1008889b
movd xmm0, eax
mov eax, 0xffff0000
cvtdq2ps xmm0, xmm0
shufps xmm0, xmm0, 0
movups xmmword [edi + 0x160], xmm0
mov ecx, dword [edx + 0x10]
shr ecx, 0x13
and ecx, 3
shl eax, cl
movd xmm0, eax
cvtdq2ps xmm0, xmm0
shufps xmm0, xmm0, 0
movups xmmword [edi + 0x180], xmm0
movd xmm0, dword [esp + 0x14]
cvtdq2ps xmm0, xmm0
shufps xmm0, xmm0, 0
movups xmmword [edi + 0x170], xmm0
mov eax, dword [edx + 0x20]
mov ecx, 1
movups xmm0, xmmword [esi + 0x8d0]
mov dword [esp + 0x50], eax
mov eax, dword [edx + 0x24]
mov edx, dword [edx + 0x10]
movups xmm1, xmmword [esi + 0x900]
shr edx, 2
and edx, 7
mov dword [esp + 0x54], eax
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0xa0], xmm1
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
cmp edx, 6
jbe 0x100888ec
mov dword [esp + 0x14], 6
jmp 0x100888f5
cmp edx, 1
jb 0x10088a41
lea eax, [edi + 0x200]
mov dword [esp + 0x3c], eax
nop
push ecx
lea eax, [esp + 0x64]
mov ecx, esi
push eax
call fcn.1009a410
mov eax, dword [esp + 0x50]
mov ecx, eax
and eax, 0xffffc00f
shr ecx, 1
and ecx, 0x1ff0
movaps xmm0, xmmword [0x101a5230]
or ecx, eax
mov eax, dword [esp + 0x54]
mov esi, eax
mov edx, ecx
and eax, 0xfffffffc
and ecx, 0xffffff
shrd edx, esi, 1
shr esi, 1
and edx, 0xff000000
and esi, 1
or edx, ecx
or esi, eax
mov eax, edx
shr eax, 1
and edx, 0xff003fff
and eax, 0x7fc000
mov dword [esp + 0x2c], esi
or eax, edx
mov dword [esp + 0x50], eax
mov eax, esi
shr eax, 1
and esi, 0xfffff003
and eax, 0x7fc
or eax, esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x54], eax
mulps xmm0, xmmword [esi + 0x8d0]
movups xmmword [esi + 0x8d0], xmm0
movaps xmm0, xmmword [0x101a5230]
mulps xmm0, xmmword [esi + 0x900]
movups xmmword [esi + 0x900], xmm0
mov eax, dword [edi + 0x64]
mov ecx, dword [esi + 0x33a4]
shr eax, 0x11
and eax, 7
add eax, 3
push eax
lea eax, [esi + 0x2ba8]
push eax
lea eax, [esp + 0x68]
push eax
call fcn.100b2700
mov dword [esp + 0x28], eax
test eax, eax
je 0x10088e94
mov ecx, dword [edi + 0x60]
lea eax, [esp + 0x50]
shr ecx, 0x11
xorps xmm0, xmm0
and cl, 1
movaps xmmword [esp + 0x70], xmm0
movzx ecx, cl
push ecx
push eax
lea eax, [esp + 0x68]
mov ecx, esi
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.10099b10
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
movaps xmm0, xmmword [esp + 0x70]
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x20]
inc ecx
movups xmmword [eax], xmm0
mov dword [eax + 0x30], 0
add eax, 0x20
mov dword [esp + 0x20], ecx
mov dword [esp + 0x3c], eax
cmp ecx, dword [esp + 0x14]
jle 0x10088900
movaps xmm0, xmmword [esp + 0x90]
movaps xmm1, xmmword [esp + 0xa0]
inc dword [0x10764748]
movups xmmword [esi + 0x8d0], xmm0
movups xmmword [esi + 0x900], xmm1
jmp 0x10088ac8
test dword [esi + 0x91c], 0x400000
jne 0x10088a6e
cmp dword [esp + 0x34], 3
je 0x10088a6e
xor ecx, ecx
jmp 0x10088a73
mov ecx, 0x10000
mov eax, dword [edi + 0x60]
or ecx, eax
xor ecx, eax
and ecx, 0x10000
xor ecx, eax
mov dword [edi + 0x60], ecx
and ecx, 0x30000
cmp ecx, 0x30000
jne 0x10088ac8
mov ecx, dword [edi + 0x3c]
mov eax, 0x8000
movd xmm0, eax
mov eax, dword [edi + 0x38]
punpckldq xmm0, xmm0
cvtdq2ps xmm2, xmm0
test ecx, ecx
jle 0x10088ac8
add eax, 0x20
movups xmm1, xmmword [eax]
movaps xmm0, xmm1
subps xmm0, xmm2
shufps xmm0, xmm1, 0xe4
movups xmmword [eax], xmm0
add eax, 0x40
sub ecx, 1
jne 0x10088ab0
mov esi, dword [esp + 0x58]
mov edx, 1
mov ecx, esi
mov ax, dx
shr ecx, 0x1a
and ecx, 0xf
shl ax, cl
movzx ecx, ax
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x5c]
shrd esi, eax, 0x1e
mov dword [esp + 0x20], ecx
and esi, 0xf
mov ecx, esi
mov esi, dword [esp + 0x38]
shl dx, cl
movzx eax, dx
mov dword [esp + 0x28], eax
movzx eax, dx
mov edx, dword [esi]
mov dword [esp + 0x14], eax
mov eax, edx
and eax, 3
jmp dword [eax*4 + 0x10089238]
mov edx, dword [esi + 0xa40]
test byte [edx], 0x20
je 0x10088db5
or eax, 0x80000
mov dword [esp + 0x28], eax
mov dword [edi + 0x60], eax
mov eax, dword [esi + 0x2bb0]
and eax, 0xff00ff
movd xmm0, eax
pshufd xmm0, xmm0, 0
movups xmmword [edi + 0x140], xmm0
mov eax, dword [esi + 0x2bb0]
shr eax, 8
and eax, 0xff00ff
movd xmm0, eax
pshufd xmm0, xmm0, 0
movups xmmword [edi + 0x150], xmm0
mov eax, dword [ecx + 0x58]
and eax, 0x3f000000
cmp eax, 0x1000000
je 0x10088ded
mov edx, dword [esp + 0x40]
mov eax, dword [edx]
shl eax, 6
xor eax, dword [esp + 0x28]
and eax, 0x100000
xor eax, dword [esp + 0x28]
mov dword [edi + 0x60], eax
mov eax, dword [edx]
shr eax, 5
xor eax, dword [edi + 0x64]
and eax, 0x400
xor dword [edi + 0x64], eax
mov ecx, esi
call fcn.1009a2f0
test al, al
jne 0x10088e9e
mov eax, dword [esi + 0xa40]
mov ecx, dword [eax]
mov eax, dword [esp + 0x1c]
shl ecx, 0xf
xor ecx, dword [edi + 0x60]
and ecx, 0x200000
xor ecx, dword [edi + 0x60]
mov dword [edi + 0x60], ecx
mov eax, dword [eax + 0x40]
shl eax, 0x16
xor eax, ecx
and eax, 0x3fc00000
xor ecx, eax
mov dword [edi + 0x60], ecx
test byte [esi + 0x2bd0], 1
je 0x10088e3e
or ecx, 0x40000000
mov dword [edi + 0x60], ecx
cmp byte [esi + 0x3244], 0
mov edx, ecx
je 0x10088e6d
mov eax, dword [esi + 0xa40]
test byte [eax], 0x80
je 0x10088e6d
mov eax, dword [esp + 0x34]
cmp eax, 1
je 0x10088e62
cmp eax, 2
jne 0x10088e6d
mov edx, ecx
or edx, 0x80000000
mov dword [edi + 0x60], edx
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ecx + 0x44]
shl eax, 7
movd xmm0, eax
pshufd xmm0, xmm0, 0
pshuflw xmm0, xmm0, 0xa0
pshufhw xmm0, xmm0, 0xa0
movups xmmword [edi + 0xc0], xmm0
jmp 0x10088ea5
xor al, al
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
mov edx, dword [edi + 0x60]
mov ecx, dword [esp + 0x1c]
test edx, 0x100000
jne 0x10088f43
mov eax, edx
and eax, 0xc00000
cmp eax, 0x400000
je 0x10088f43
mov eax, edx
and eax, 0x3000000
cmp eax, 0x1000000
je 0x10088f43
mov eax, edx
and eax, 0xc000000
cmp eax, 0x4000000
je 0x10088f43
mov eax, edx
and eax, 0x30000000
cmp eax, 0x10000000
je 0x10088f43
mov eax, edx
and eax, 0x1c0
cmp eax, 0x40
je 0x10088f07
mov eax, edx
and eax, 0x600
cmp eax, 0x600
je 0x10088f43
mov eax, dword [esp + 0x30]
and edx, 3
jne 0x10088f19
test eax, eax
je 0x10088f47
cmp eax, 0xffffffff
jne 0x10088f43
cmp edx, 1
jne 0x10088f2c
and eax, 0xffffff
je 0x10088f47
cmp eax, 0xffffff
jne 0x10088f43
cmp edx, 2
jne 0x10088f47
mov eax, dword [esp + 0x30]
and eax, 0x80f8f8f8
je 0x10088f47
cmp eax, 0x80f8f8f8
je 0x10088f47
or dword [edi + 0x64], 4
mov edx, dword [esi + 0x2bc8]
shl edx, 0xb
xor edx, dword [edi + 0x64]
and edx, 0x800
xor edx, dword [edi + 0x64]
mov dword [edi + 0x64], edx
mov eax, dword [ecx + 0x50]
shl eax, 0xc
xor eax, edx
and eax, 0x1000
xor edx, eax
mov dword [edi + 0x64], edx
test byte [esi + 0x2bc0], 1
je 0x10088fb4
or edx, 0x2000
push 0x20
push 0x80
mov dword [edi + 0x64], edx
call dword [esp + 0x50]
mov dword [edi + 0x8c], eax
add esp, 8
add esi, 0x2e80
mov ecx, 0x20
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 8]
mov esi, dword [esp + 0x44]
mov edx, dword [edi + 0x64]
mov ecx, dword [esp + 0x1c]
movzx eax, byte [esp + 0x27]
and edx, 0xfffffff7
shl eax, 3
or eax, edx
movzx edx, byte [esp + 0x1b]
shl edx, 4
and eax, 0xffffffef
or edx, eax
cmp byte [esp + 0x27], 0
mov dword [esp + 0x34], edx
mov dword [edi + 0x64], edx
jne 0x10088fec
cmp byte [esp + 0x1b], 0
jne 0x10088fec
mov edx, dword [edi + 0x60]
mov ecx, dword [esp + 0x34]
jmp 0x10089060
movzx eax, byte [ecx + 0x63]
and eax, 0x3f
shl eax, 7
movzx eax, word [eax + 0x10762142]
shl eax, 2
xor eax, dword [edi + 0x60]
and eax, 0xc
xor dword [edi + 0x60], eax
cmp byte [esp + 0x1b], 0
mov ecx, dword [edi + 0x60]
je 0x1008901e
mov eax, dword [esp + 0x40]
mov edx, dword [eax]
shr edx, 0x11
jmp 0x10089023
mov edx, 1
shl edx, 4
xor edx, ecx
and edx, 0x30
xor edx, ecx
xor ecx, ecx
mov dword [edi + 0x60], edx
cvttps2dq xmm0, xmmword [esi + 0x8f0]
psrldq xmm0, 8
movd eax, xmm0
cmp eax, 0x80000000
mov eax, 0x20
cmove ecx, eax
mov eax, dword [esp + 0x34]
and eax, 0xffffffdf
or ecx, eax
mov dword [esp + 0x34], ecx
mov dword [edi + 0x64], ecx
movd xmm0, dword [esp + 0x30]
mov eax, edx
pshufd xmm2, xmm0, 0
and eax, 3
movd xmm0, dword [esp + 0x4c]
pshufd xmm4, xmm0, 0
movups xmmword [edi + 0x120], xmm2
movups xmmword [edi + 0x130], xmm4
cmp eax, 1
jne 0x100890aa
movaps xmm0, xmmword [0x101a5440]
pslld xmm0, 0x18
por xmm0, xmm2
movups xmmword [edi + 0x120], xmm0
mov edx, dword [edi + 0x60]
jmp 0x10089102
cmp eax, 2
jne 0x10089102
movaps xmm3, xmmword [0x101a5110]
movaps xmm1, xmmword [0x101a53d0]
pand xmm3, xmm2
pand xmm1, xmm2
movaps xmm2, xmm3
psrld xmm2, 9
movaps xmm0, xmm1
psrld xmm0, 0x10
psrld xmm1, 6
por xmm2, xmm0
psrld xmm3, 3
movaps xmm0, xmmword [0x101a5440]
por xmm2, xmm1
pslld xmm0, 0x10
por xmm2, xmm3
por xmm2, xmm0
movups xmmword [edi + 0x120], xmm2
mov eax, edx
and al, 0xc
cmp al, 4
jne 0x10089118
movaps xmm0, xmmword [0x101a5440]
pslld xmm0, 0x18
jmp 0x1008912c
and dl, 0xc
cmp dl, 8
jne 0x10089137
movaps xmm0, xmmword [0x101a5440]
pslld xmm0, 0x10
por xmm0, xmm4
movups xmmword [edi + 0x130], xmm0
mov eax, ecx
and eax, 0xc000
cmp eax, 0xc000
jne 0x1008922b
test cl, 0x12
jne 0x1008922b
mov ecx, dword [edi + 0x10]
cmp dword [edi + 0x20], ecx
mov edx, dword [ebp + 8]
cmovge ecx, dword [edi + 0x20]
mov edi, dword [edi + 0x18]
cmp edi, ecx
mov eax, dword [ebp + 8]
mov esi, dword [edx + 0x14]
cmovl ecx, edi
cmp dword [edx + 0x24], esi
mov dword [esp + 0x60], ecx
mov ecx, esi
cmovge ecx, dword [edx + 0x24]
mov edx, dword [edx + 0x1c]
cmp edx, ecx
mov eax, dword [eax + 0x28]
mov dword [esp + 0x48], edi
cmovl ecx, edx
mov edi, dword [ebp + 8]
mov dword [esp + 0x64], ecx
mov ecx, edi
cmp eax, dword [edi + 0x10]
movups xmm0, xmmword [ecx + 0x20]
cmovl eax, dword [edi + 0x10]
cmp dword [esp + 0x48], eax
cmovl eax, dword [esp + 0x48]
mov dword [esp + 0x68], eax
mov eax, dword [ecx + 0x2c]
cmp eax, esi
cmovl eax, esi
cmp edx, eax
cmovl eax, edx
mov dword [esp + 0x6c], eax
pcmpeqd xmm0, xmmword [esp + 0x60]
pmovmskb eax, xmm0
cmp eax, 0xffff
jne 0x1008922b
mov esi, dword [esp + 0x34]
xor edi, edi
mov eax, dword [esp + 0x1c]
or esi, 0x800000
mov dword [ecx + 0x64], esi
mov eax, dword [eax]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x44]
mov edx, dword [eax + 0x660]
mov dword [esp + 0x38], edx
test edx, edx
jle 0x1008922b
mov edx, dword [eax + 0x658]
add edx, 0x10
movzx eax, word [edx]
sub eax, dword [esp + 0x48]
add eax, 0xf
test al, 0x30
jne 0x10089222
inc edi
add edx, 0x20
cmp edi, dword [esp + 0x38]
jl 0x10089200
mov al, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
and esi, 0xff7fffff
mov dword [ecx + 0x64], esi
pop edi
mov al, 1
pop esi
mov esp, ebp
pop ebp
ret 4