Function at 0x4ce410
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov dword [esp + 0x14], edx
mov edi, ecx
mov ecx, dword [esp + 0x58]
mov esi, dword [edi + 8]
test esi, esi
jne 0x4ce447
mov ebx, ecx
cmp dword [edi + 0x74], 0
jne 0x4ce43c
mov eax, dword [edi]
test byte [eax + 0x50], 8
jne 0x4ce43c
mov byte [edi + 0x17], 1
mov ecx, edi
call fcn.004346f0
mov esi, eax
mov ecx, ebx
mov edx, dword [esp + 0x4c]
mov eax, edi
mov edi, dword [edi + 0x28]
mov ebx, dword [eax + 0x38]
lea ebp, [ebx - 1]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ebp
mov dword [eax + 0x38], ebp
test ecx, ecx
jns 0x4ce4bc
movzx eax, byte [edx + 0x18]
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jle 0x4ce4a2
lea edx, [ecx + 1]
mov dword [esi + 0x6c], edx
mov edx, dword [esi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x30
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x10]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ce4b8
mov ecx, esi
mov edx, 0x30
push 0
push dword [esp + 0x14]
push eax
call fcn.004747e0
add esp, 0xc
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], edi
mov ebx, dword [edx + 0x14]
test ebx, ebx
mov dword [esp + 4], esi
jle 0x4ce74e
mov edi, edx
mov eax, dword [esp + 0x54]
inc eax
mov dword [esp + 0x1c], eax
xor ebp, ebp
pcmpeqd xmm7, xmm7
jmp 0x4ce52b
lea edx, [ecx + 1]
mov dword [esi + 0x6c], edx
mov edx, dword [esi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x32
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x10]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
inc ebp
mov ebx, dword [edi + 0x14]
cmp ebp, ebx
jge 0x4ce74e
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ebp*4]
test ax, ax
js 0x4ce71e
mov ecx, dword [edi]
mov edx, dword [ecx + 0x1c]
and edx, 0x20
je 0x4ce71e
movsx ebx, ax
xor esi, esi
mov edx, dword [ecx + 4]
mov dword [esp], edx
test ax, ax
mov edx, ebx
mov dword [esp + 8], ebx
je 0x4ce6f3
mov edi, eax
shl edi, 0x10
mov edx, 0
cmp edi, 0x110000
jb 0x4ce6ca
mov edx, eax
and edx, 0xf
mov esi, 0x10
cmove edx, esi
mov esi, ebx
sub esi, edx
mov edx, dword [esp]
lea edi, [edx + 0xbe]
pxor xmm0, xmm0
mov edx, esi
pxor xmm1, xmm1
nop dword [eax]
movzx ebx, word [edi - 0x60]
movd xmm2, ebx
movzx ebx, word [edi - 0x6c]
movd xmm4, ebx
punpcklwd xmm4, xmm2
movzx ebx, word [edi - 0x78]
movd xmm2, ebx
movzx ebx, word [edi - 0x84]
movd xmm3, ebx
punpcklwd xmm3, xmm2
punpckldq xmm3, xmm4
movzx ebx, word [edi - 0x90]
movd xmm2, ebx
movzx ebx, word [edi - 0x9c]
movd xmm4, ebx
punpcklwd xmm4, xmm2
movzx ebx, word [edi - 0xa8]
movd xmm5, ebx
movzx ebx, word [edi - 0xb4]
movd xmm2, ebx
punpcklwd xmm2, xmm5
punpckldq xmm2, xmm4
punpcklqdq xmm2, xmm3
movzx ebx, word [edi]
movd xmm3, ebx
movzx ebx, word [edi - 0xc]
movd xmm5, ebx
punpcklwd xmm5, xmm3
movzx ebx, word [edi - 0x18]
movd xmm3, ebx
movzx ebx, word [edi - 0x24]
movd xmm4, ebx
punpcklwd xmm4, xmm3
punpckldq xmm4, xmm5
movzx ebx, word [edi - 0x30]
movd xmm3, ebx
movzx ebx, word [edi - 0x3c]
movd xmm5, ebx
punpcklwd xmm5, xmm3
movzx ebx, word [edi - 0x48]
movd xmm6, ebx
movzx ebx, word [edi - 0x54]
movd xmm3, ebx
punpcklwd xmm3, xmm6
punpckldq xmm3, xmm5
punpcklqdq xmm3, xmm4
movdqa xmm4, xmmword [0x5296a0]
pxor xmm2, xmm7
psrlw xmm2, 5
pand xmm2, xmm4
paddw xmm0, xmm2
pxor xmm3, xmm7
psrlw xmm3, 5
pand xmm3, xmm4
paddw xmm1, xmm3
add edi, 0xc0
add edx, 0xfffffff0
jne 0x4ce5a0
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd edx, xmm0
mov ebx, dword [esp + 8]
mov edi, ebx
sub edi, esi
lea esi, [esi + esi*2]
mov ebx, dword [esp]
lea esi, [ebx + esi*4]
add esi, 0xa
nop word [eax + eax]
movzx ebx, word [esi]
bt ebx, 5
sbb dx, 0xffff
add esi, 0xc
dec edi
jne 0x4ce6e0
jmp 0x4ce6f5
xor edx, edx
mov esi, dword [esp + 8]
lea esi, [esi + esi*2]
mov edi, dword [esp]
test byte [edi + esi*4 + 0xa], 0x20
jne 0x4ce710
mov eax, edx
jmp 0x4ce716
sub eax, edx
add ax, word [ecx + 0x24]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x4c]
cwde
add eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x4ce4f0
mov ecx, esi
mov edx, 0x32
push 0
push dword [esp + 0x14]
push eax
call fcn.004747e0
pcmpeqd xmm7, xmm7
add esp, 0xc
jmp 0x4ce51f
dec dword [esp + 0x18]
cmp dword [esp + 0x5c], 0
je 0x4ce7b3
mov eax, dword [esp + 0x4c]
movzx eax, byte [eax + 0x18]
test al, al
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
jne 0x4ce811
mov ebp, dword [esp + 0xc]
mov eax, dword [ebp]
test byte [eax + 0x22], 8
jne 0x4ce792
cmp dword [ebp + 0x74], 0
jne 0x4ce792
cmp byte [ebp + 0x14], 0
je 0x4cf43c
cmp dword [esp + 0x58], 0
jle 0x4ce80f
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov byte [eax + 0x15], 1
mov eax, dword [esp + 0x4c]
movzx eax, byte [eax + 0x18]
jmp 0x4ce811
cmp dword [esp + 0x48], 0
je 0x4ce7eb
cmp ebx, 1
mov edx, dword [esp + 0xc]
jne 0x4ce8db
movzx eax, byte [edx + 0x13]
test al, al
je 0x4ceaf6
dec al
mov byte [edx + 0x13], al
movzx eax, al
mov eax, dword [edx + eax*4 + 0x98]
mov dword [esp + 0x1c], eax
jmp 0x4ceb03
mov ecx, dword [esp + 0xc]
movzx eax, byte [ecx + 0x13]
test al, al
je 0x4ce90d
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov edi, dword [ecx + eax*4 + 0x98]
jmp 0x4ce914
xor eax, eax
movzx eax, al
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jle 0x4ce84d
lea edx, [ecx + 1]
mov dword [esi + 0x6c], edx
mov edx, dword [esi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x9e
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x58]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ce863
mov ecx, esi
mov edx, 0x9e
push 0
push dword [esp + 0x5c]
push eax
call fcn.004747e0
add esp, 0xc
mov ecx, dword [esi + 0xc]
neg ebx
mov eax, dword [ecx + 0x38]
add eax, dword [ecx + 0x3c]
js 0x4ce87b
mov eax, dword [esi + 0x6c]
mov ecx, dword [ecx + 0x40]
mov dword [ecx + ebx*4], eax
jmp 0x4ce886
mov edx, esi
push ebx
call fcn.0049d4a0
add esp, 4
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x4ce8c2
lea ecx, [eax + 1]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 0x7a
mov dword [ecx + eax*4 + 4], edi
mov dword [ecx + eax*4 + 8], 0
mov dword [ecx + eax*4 + 0xc], 0
mov dword [ecx + eax*4 + 0x10], 0
add esp, 0x30
jmp 0x4ce8d6
mov ecx, esi
mov edx, 0x7a
push 0
push 0
push edi
call fcn.004747e0
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edx + 0x1c]
sub eax, ebx
jge 0x4ce8f6
mov eax, dword [edx + 0x2c]
lea ecx, [eax + 1]
mov dword [esp + 0x1c], ecx
add eax, ebx
mov dword [edx + 0x2c], eax
jmp 0x4ceb03
mov esi, dword [edx + 0x20]
mov ecx, esi
mov dword [esp + 0x1c], esi
lea ecx, [esi + ebx]
mov dword [edx + 0x20], ecx
mov dword [edx + 0x1c], eax
jmp 0x4ceb03
mov edi, dword [ecx + 0x2c]
inc edi
mov dword [ecx + 0x2c], edi
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x50]
mov eax, dword [eax]
test ax, ax
js 0x4cf4cb
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0x1c]
and edx, 0x20
je 0x4cf4cb
movsx ebx, ax
xor edx, edx
mov esi, dword [ecx + 4]
mov dword [esp], esi
test ax, ax
mov esi, ebx
mov dword [esp + 8], ebx
je 0x4cf4aa
mov ebp, eax
shl ebp, 0x10
mov esi, 0
cmp ebp, 0x110000
jb 0x4ceac6
mov edx, eax
and edx, 0xf
mov esi, 0x10
cmovne esi, edx
mov edx, ebx
sub edx, esi
mov esi, dword [esp]
add esi, 0xbe
pxor xmm0, xmm0
movdqa xmm3, xmmword [0x5296a0]
mov ebp, edx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movzx ebx, word [esi - 0x60]
movd xmm4, ebx
movzx ebx, word [esi - 0x6c]
movd xmm6, ebx
punpcklwd xmm6, xmm4
movzx ebx, word [esi - 0x78]
movd xmm4, ebx
movzx ebx, word [esi - 0x84]
movd xmm5, ebx
punpcklwd xmm5, xmm4
punpckldq xmm5, xmm6
movzx ebx, word [esi - 0x90]
movd xmm4, ebx
movzx ebx, word [esi - 0x9c]
movd xmm6, ebx
punpcklwd xmm6, xmm4
movzx ebx, word [esi - 0xa8]
movd xmm7, ebx
movzx ebx, word [esi - 0xb4]
movd xmm4, ebx
punpcklwd xmm4, xmm7
punpckldq xmm4, xmm6
punpcklqdq xmm4, xmm5
movzx ebx, word [esi]
movd xmm5, ebx
movzx ebx, word [esi - 0xc]
movd xmm7, ebx
punpcklwd xmm7, xmm5
movzx ebx, word [esi - 0x18]
movd xmm5, ebx
movzx ebx, word [esi - 0x24]
movd xmm6, ebx
punpcklwd xmm6, xmm5
punpckldq xmm6, xmm7
movzx ebx, word [esi - 0x30]
movd xmm5, ebx
movzx ebx, word [esi - 0x3c]
movd xmm7, ebx
punpcklwd xmm7, xmm5
movzx ebx, word [esi - 0x48]
movd xmm2, ebx
movzx ebx, word [esi - 0x54]
movd xmm5, ebx
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm7
punpcklqdq xmm5, xmm6
pcmpeqd xmm2, xmm2
pxor xmm4, xmm2
psrlw xmm4, 5
pand xmm4, xmm3
paddw xmm0, xmm4
pxor xmm5, xmm2
psrlw xmm5, 5
pand xmm5, xmm3
paddw xmm1, xmm5
add esi, 0xc0
add ebp, 0xfffffff0
jne 0x4ce9a0
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd esi, xmm0
mov ebx, dword [esp + 8]
mov ebp, ebx
sub ebp, edx
lea edx, [edx + edx*2]
mov ebx, dword [esp]
lea edx, [ebx + edx*4]
add edx, 0xa
nop word cs:[eax + eax]
movzx ebx, word [edx]
bt ebx, 5
sbb si, 0xffff
add edx, 0xc
dec ebp
jne 0x4ceae0
jmp 0x4cf4ac
mov ecx, dword [edx + 0x2c]
inc ecx
mov eax, ecx
mov dword [esp + 0x1c], ecx
mov dword [edx + 0x2c], ecx
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x2c]
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jle 0x4ceb47
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov edx, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x70
mov esi, dword [esp + 0x18]
mov dword [edx + ecx*4 + 4], esi
mov dword [edx + ecx*4 + 8], eax
mov eax, dword [esp + 0x14]
mov dword [edx + ecx*4 + 0xc], eax
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4ceb5f
mov ecx, edi
mov edx, 0x70
push dword [esp + 0x14]
push eax
push dword [esp + 0x20]
call fcn.004747e0
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 8]
mov edx, dword [esp + 0x48]
call fcn.00493ff0
test eax, eax
je 0x4ceba6
mov ecx, dword [esi]
cmp byte [ecx + 0x57], 0
je 0x4ceb94
cmp dword [ecx + 0x210], 0
jne 0x4ceba6
dec dword [eax]
jne 0x4ceba6
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.0043f4f0
jmp 0x4ceba6
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf8
mov dword [ecx + edx*4 - 4], eax
test ebx, ebx
jle 0x4cee22
mov eax, dword [esp + 0x54]
inc eax
mov dword [esp + 0x14], eax
xor ebp, ebp
pcmpeqd xmm7, xmm7
jmp 0x4cebf4
lea edx, [ecx + 1]
mov dword [edi + 0x6c], edx
mov edx, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x50
mov dword [edx + ecx*4 + 4], eax
mov dword [edx + ecx*4 + 8], esi
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
inc ebp
cmp ebp, ebx
je 0x4cee22
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ebp*4]
test ax, ax
js 0x4cedee
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0x1c]
and edx, 0x20
je 0x4cedee
movsx edx, ax
mov dword [esp], edx
xor edi, edi
mov dword [esp + 0x24], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 8], ecx
test ax, ax
je 0x4cedc3
mov esi, eax
shl esi, 0x10
mov edx, 0
cmp esi, 0x110000
jb 0x4ced96
mov edx, eax
and edx, 0xf
mov ecx, 0x10
cmove edx, ecx
mov edi, dword [esp]
sub edi, edx
mov ecx, dword [esp + 8]
lea edx, [ecx + 0xbe]
pxor xmm0, xmm0
mov esi, edi
pxor xmm1, xmm1
nop
movzx ecx, word [edx - 0x60]
movd xmm2, ecx
movzx ecx, word [edx - 0x6c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [edx - 0x78]
movd xmm2, ecx
movzx ecx, word [edx - 0x84]
movd xmm3, ecx
punpcklwd xmm3, xmm2
punpckldq xmm3, xmm4
movzx ecx, word [edx - 0x90]
movd xmm2, ecx
movzx ecx, word [edx - 0x9c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [edx - 0xa8]
movd xmm5, ecx
movzx ecx, word [edx - 0xb4]
movd xmm2, ecx
punpcklwd xmm2, xmm5
punpckldq xmm2, xmm4
punpcklqdq xmm2, xmm3
movzx ecx, word [edx]
movd xmm3, ecx
movzx ecx, word [edx - 0xc]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [edx - 0x18]
movd xmm3, ecx
movzx ecx, word [edx - 0x24]
movd xmm4, ecx
punpcklwd xmm4, xmm3
punpckldq xmm4, xmm5
movzx ecx, word [edx - 0x30]
movd xmm3, ecx
movzx ecx, word [edx - 0x3c]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [edx - 0x48]
movd xmm6, ecx
movzx ecx, word [edx - 0x54]
movd xmm3, ecx
punpcklwd xmm3, xmm6
punpckldq xmm3, xmm5
punpcklqdq xmm3, xmm4
movdqa xmm4, xmmword [0x5296a0]
pxor xmm2, xmm7
psrlw xmm2, 5
pand xmm2, xmm4
paddw xmm0, xmm2
pxor xmm3, xmm7
psrlw xmm3, 5
pand xmm3, xmm4
paddw xmm1, xmm3
add edx, 0xc0
add esi, 0xfffffff0
jne 0x4cec70
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd edx, xmm0
mov esi, dword [esp]
sub esi, edi
lea ecx, [edi + edi*2]
mov edi, dword [esp + 8]
lea edi, [edi + ecx*4]
add edi, 0xa
nop dword [eax + eax]
movzx ecx, word [edi]
bt ecx, 5
sbb dx, 0xffff
add edi, 0xc
dec esi
jne 0x4cedb0
jmp 0x4cedc5
xor edx, edx
mov ecx, dword [esp]
lea ecx, [ecx + ecx*2]
mov esi, dword [esp + 8]
test byte [esi + ecx*4 + 0xa], 0x20
jne 0x4cede0
mov eax, edx
jmp 0x4cedea
sub eax, edx
mov ecx, dword [esp + 0x24]
add ax, word [ecx + 0x24]
mov edi, dword [esp + 4]
cwde
add eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
lea esi, [ecx + ebp]
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x4cebc0
mov ecx, edi
mov edx, 0x50
push 0
push esi
push eax
call fcn.004747e0
pcmpeqd xmm7, xmm7
add esp, 0xc
jmp 0x4cebeb
cmp dword [esp + 0x58], 1
jne 0x4cf34e
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x44]
cmp dword [eax], ecx
jne 0x4cf34e
mov eax, dword [edi + 0x6c]
test ebx, ebx
jle 0x4cf2fd
add eax, ebx
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x54]
inc eax
mov dword [esp + 0x24], eax
xor edi, edi
pcmpeqd xmm7, xmm7
jmp 0x4cee69
inc edi
cmp edi, ebx
je 0x4cf2f6
mov eax, dword [esp + 0x50]
mov esi, dword [eax + edi*4]
test si, si
mov dword [esp], esi
js 0x4cf070
mov eax, dword [esp + 0x4c]
mov eax, dword [eax]
mov edx, dword [eax + 0x1c]
and edx, 0x20
je 0x4cf070
movsx ecx, si
mov dword [esp + 0x14], ecx
xor ebp, ebp
mov dword [esp + 0x20], eax
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
test si, si
je 0x4cf044
shl esi, 0x10
mov edx, 0
cmp esi, 0x110000
jb 0x4cf016
mov edx, dword [esp]
and edx, 0xf
mov eax, 0x10
cmove edx, eax
mov ebp, dword [esp + 0x14]
sub ebp, edx
mov eax, dword [esp + 8]
lea edx, [eax + 0xbe]
pxor xmm0, xmm0
mov esi, ebp
pxor xmm1, xmm1
nop word [eax + eax]
movzx ecx, word [edx - 0x60]
movd xmm2, ecx
movzx ecx, word [edx - 0x6c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [edx - 0x78]
movd xmm2, ecx
movzx ecx, word [edx - 0x84]
movd xmm3, ecx
punpcklwd xmm3, xmm2
punpckldq xmm3, xmm4
movzx ecx, word [edx - 0x90]
movd xmm2, ecx
movzx ecx, word [edx - 0x9c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [edx - 0xa8]
movd xmm5, ecx
movzx ecx, word [edx - 0xb4]
movd xmm2, ecx
punpcklwd xmm2, xmm5
punpckldq xmm2, xmm4
punpcklqdq xmm2, xmm3
movzx ecx, word [edx]
movd xmm3, ecx
movzx ecx, word [edx - 0xc]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [edx - 0x18]
movd xmm3, ecx
movzx ecx, word [edx - 0x24]
movd xmm4, ecx
punpcklwd xmm4, xmm3
punpckldq xmm4, xmm5
movzx ecx, word [edx - 0x30]
movd xmm3, ecx
movzx ecx, word [edx - 0x3c]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [edx - 0x48]
movd xmm6, ecx
movzx ecx, word [edx - 0x54]
movd xmm3, ecx
punpcklwd xmm3, xmm6
punpckldq xmm3, xmm5
punpcklqdq xmm3, xmm4
movdqa xmm4, xmmword [0x5296a0]
pxor xmm2, xmm7
psrlw xmm2, 5
pand xmm2, xmm4
paddw xmm0, xmm2
pxor xmm3, xmm7
psrlw xmm3, 5
pand xmm3, xmm4
paddw xmm1, xmm3
add edx, 0xc0
add esi, 0xfffffff0
jne 0x4ceef0
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd edx, xmm0
mov eax, dword [esp + 0x14]
mov esi, eax
sub esi, ebp
lea ecx, [ebp*2]
add ecx, ebp
mov ebp, dword [esp + 8]
lea ebp, [ebp + ecx*4 + 0xa]
nop
movzx ecx, word [ebp]
bt ecx, 5
sbb dx, 0xffff
add ebp, 0xc
dec esi
jne 0x4cf030
jmp 0x4cf04a
xor edx, edx
mov eax, dword [esp + 0x14]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 8]
test byte [eax + ecx*4 + 0xa], 0x20
jne 0x4cf060
mov dword [esp], edx
jmp 0x4cf070
mov eax, dword [esp]
sub eax, edx
mov ecx, dword [esp + 0x20]
add ax, word [ecx + 0x24]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 4]
movsx ecx, word [ecx + edi*2]
mov esi, ecx
test ecx, ecx
js 0x4cf261
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x1c]
mov esi, ecx
and edx, 0x20
je 0x4cf261
xor edx, edx
mov dword [esp + 0x14], eax
mov eax, dword [eax + 4]
test cx, cx
mov dword [esp + 8], eax
je 0x4cf243
mov esi, 0
cmp cx, 0x11
jb 0x4cf21b
mov esi, ecx
and esi, 0xf
mov eax, 0x10
cmove esi, eax
mov eax, dword [esp + 8]
mov edx, ecx
sub edx, esi
lea ebp, [eax + 0xbe]
pxor xmm0, xmm0
mov dword [esp + 0x20], edx
mov esi, edx
pxor xmm1, xmm1
nop dword [eax + eax]
movzx edx, word [ebp - 0x60]
movd xmm2, edx
movzx edx, word [ebp - 0x6c]
movd xmm4, edx
punpcklwd xmm4, xmm2
movzx edx, word [ebp - 0x78]
movd xmm2, edx
movzx edx, word [ebp - 0x84]
movd xmm3, edx
punpcklwd xmm3, xmm2
punpckldq xmm3, xmm4
movzx edx, word [ebp - 0x90]
movd xmm2, edx
movzx edx, word [ebp - 0x9c]
movd xmm4, edx
punpcklwd xmm4, xmm2
movzx edx, word [ebp - 0xa8]
movd xmm5, edx
movzx edx, word [ebp - 0xb4]
movd xmm2, edx
punpcklwd xmm2, xmm5
punpckldq xmm2, xmm4
punpcklqdq xmm2, xmm3
movzx edx, word [ebp]
movd xmm3, edx
movzx edx, word [ebp - 0xc]
movd xmm5, edx
punpcklwd xmm5, xmm3
movzx edx, word [ebp - 0x18]
movd xmm3, edx
movzx edx, word [ebp - 0x24]
movd xmm4, edx
punpcklwd xmm4, xmm3
punpckldq xmm4, xmm5
movzx edx, word [ebp - 0x30]
movd xmm3, edx
movzx edx, word [ebp - 0x3c]
movd xmm5, edx
punpcklwd xmm5, xmm3
movzx edx, word [ebp - 0x48]
movd xmm6, edx
movzx edx, word [ebp - 0x54]
movd xmm3, edx
punpcklwd xmm3, xmm6
punpckldq xmm3, xmm5
punpcklqdq xmm3, xmm4
movdqa xmm4, xmmword [0x5296a0]
pxor xmm2, xmm7
psrlw xmm2, 5
pand xmm2, xmm4
paddw xmm0, xmm2
pxor xmm3, xmm7
psrlw xmm3, 5
pand xmm3, xmm4
paddw xmm1, xmm3
add ebp, 0xc0
add esi, 0xfffffff0
jne 0x4cf0f0
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd esi, xmm0
mov edx, dword [esp + 0x20]
mov ebp, ecx
sub ebp, edx
lea edx, [edx + edx*2]
lea edx, [eax + edx*4]
add edx, 0xa
nop dword [eax + eax]
movzx eax, word [edx]
bt eax, 5
sbb si, 0xffff
add edx, 0xc
dec ebp
jne 0x4cf230
jmp 0x4cf245
xor esi, esi
lea eax, [ecx + ecx*2]
mov edx, dword [esp + 8]
test byte [edx + eax*4 + 0xa], 0x20
je 0x4cf261
mov eax, ecx
sub eax, esi
mov edx, dword [esp + 0x14]
add ax, word [edx + 0x24]
mov esi, eax
movsx eax, word [esp]
mov edx, dword [esp + 0x24]
add eax, edx
movsx esi, si
add esi, edx
mov edx, dword [esp + 0x44]
cmp cx, word [edx + 0x20]
cmove esi, dword [esp + 0x54]
mov ebp, dword [esp + 4]
mov ecx, dword [ebp + 0x6c]
cmp dword [ebp + 0x70], ecx
jle 0x4cf2c0
lea edx, [ecx + 1]
mov dword [ebp + 0x6c], edx
mov edx, dword [ebp + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x34
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x28]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], esi
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4cf2d9
mov ecx, ebp
mov edx, 0x34
push esi
push dword [esp + 0x2c]
push eax
call fcn.004747e0
pcmpeqd xmm7, xmm7
add esp, 0xc
mov eax, dword [ebp + 0x6c]
test eax, eax
jle 0x4cee60
mov ecx, dword [ebp + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 0x10
jmp 0x4cee60
mov edi, dword [esp + 4]
mov eax, dword [edi + 0x6c]
cmp dword [edi + 0x70], eax
jle 0x4cf337
lea ecx, [eax + 1]
mov dword [edi + 0x6c], ecx
mov ecx, dword [edi + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 8
mov dword [ecx + eax*4 + 4], 0
mov edx, dword [esp + 0x10]
mov dword [ecx + eax*4 + 8], edx
mov dword [ecx + eax*4 + 0xc], 0
mov dword [ecx + eax*4 + 0x10], 0
jmp 0x4cf34e
mov ecx, edi
mov edx, 8
push 0
push dword [esp + 0x14]
push 0
call fcn.004747e0
add esp, 0xc
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
mov edx, dword [esp + 0x48]
call fcn.004c55b0
mov ecx, edi
mov edx, 0x60
push ebx
push eax
push 0
push ebx
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.00493a50
add esp, 0x14
mov eax, dword [edi + 0x6c]
cmp dword [edi + 0x70], eax
jle 0x4cf3af
lea ecx, [eax + 1]
mov dword [edi + 0x6c], ecx
mov ecx, dword [edi + 0x68]
lea edx, [eax + eax*4]
mov dword [ecx + edx*4], 0x1c
mov esi, dword [esp + 0x18]
mov dword [ecx + edx*4 + 4], esi
mov esi, dword [esp + 0x10]
mov dword [ecx + edx*4 + 8], esi
mov dword [ecx + edx*4 + 0xc], ebp
mov dword [ecx + edx*4 + 0x10], 0
jmp 0x4cf3c7
mov ecx, edi
mov edx, 0x1c
push ebp
push dword [esp + 0x14]
push dword [esp + 0x20]
call fcn.004747e0
add esp, 0xc
mov ecx, dword [edi]
cmp byte [ecx + 0x57], 0
je 0x4cf406
cmp ebx, 1
jne 0x4cf41a
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x4ce759
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 0x13]
cmp eax, 7
ja 0x4ce759
mov ecx, eax
inc cl
mov edx, dword [esp + 0xc]
mov byte [edx + 0x13], cl
lea eax, [edx + eax*4]
add eax, 0x98
jmp 0x4cf435
mov ecx, dword [edi + 0x68]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 + 1], 0xfd
mov dword [ecx + eax*4 + 0x10], ebx
cmp ebx, 1
je 0x4cf3d4
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x1c], ebx
mov esi, dword [esp + 0x1c]
jge 0x4ce759
mov eax, dword [esp + 0xc]
mov dword [eax + 0x1c], ebx
add eax, 0x20
mov dword [eax], esi
jmp 0x4ce759
mov ecx, dword [ebp + 8]
xor edx, edx
test ecx, ecx
jne 0x4cf45b
test byte [eax + 0x50], 8
jne 0x4cf44f
mov byte [ebp + 0x17], 1
mov ecx, ebp
call fcn.004346f0
mov ecx, eax
mov edx, dword [ebp + 0x74]
test edx, edx
cmovne ebp, edx
mov byte [ebp + 0x15], 1
sub esp, 0x14
movdqa xmm0, xmmword [0x5296b0]
movdqu xmmword [esp], xmm0
mov dword [esp + 0x10], 0xffffffff
mov ebp, ecx
mov edx, 0x46
call fcn.00493a50
add esp, 0x14
mov eax, dword [ebp + 0x6c]
test eax, eax
jle 0x4ce863
mov ecx, ebp
mov ecx, dword [ebp + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 4
jmp 0x4ce863
xor esi, esi
mov edx, dword [esp + 8]
lea edx, [edx + edx*2]
mov ebx, dword [esp]
test byte [ebx + edx*4 + 0xa], 0x20
jne 0x4cf4c1
mov eax, esi
jmp 0x4cf4c7
sub eax, esi
add ax, word [ecx + 0x24]
mov ebx, dword [esp + 0x18]
cwde
mov ecx, dword [esp + 0x54]
add eax, ecx
inc eax
mov esi, dword [esp + 4]
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jle 0x4cf50c
lea edx, [ecx + 1]
mov dword [esi + 0x6c], edx
mov edx, dword [esi + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x51
mov dword [edx + ecx*4 + 4], eax
mov dword [edx + ecx*4 + 8], edi
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
jmp 0x4cf51f
mov ecx, esi
mov edx, 0x51
push 0
push edi
push eax
call fcn.004747e0
add esp, 0xc
mov ebp, dword [esi + 0x6c]
cmp dword [esi + 0x70], ebp
jle 0x4cf55e
lea eax, [ebp + 1]
mov dword [esi + 0x6c], eax
mov eax, dword [esi + 0x68]
lea ecx, [ebp*4]
add ecx, ebp
mov dword [eax + ecx*4], 0xc
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x4cf574
mov ecx, esi
mov edx, 0xc
push 0
push 0
push edi
call fcn.004747e0
add esp, 0xc
mov ebp, eax
mov eax, dword [esp + 0x58]
cmp eax, 1
jne 0x4cf5f6
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x44]
cmp dword [eax], ecx
jne 0x4cf5f6
mov esi, dword [esp + 4]
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x4cf5c6
lea ecx, [eax + 1]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 0x35
mov edx, dword [esp + 0x54]
mov dword [ecx + eax*4 + 4], edx
mov edx, dword [esp + 0x10]
mov dword [ecx + eax*4 + 8], edx
mov dword [ecx + eax*4 + 0xc], edi
mov dword [ecx + eax*4 + 0x10], 0
jmp 0x4cf5de
mov ecx, esi
mov edx, 0x35
push edi
push dword [esp + 0x14]
push dword [esp + 0x5c]
call fcn.004747e0
add esp, 0xc
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x4cf5f6
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 0x90
mov ecx, dword [esp + 0xc]
mov edx, ebx
push 0x70
push dword [esp + 0x48]
push dword [esp + 0x1c]
call fcn.00493c10
add esp, 0xc
mov esi, ebx
mov ebx, dword [esp + 4]
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jle 0x4cf649
lea ecx, [eax + 1]
mov dword [ebx + 0x6c], ecx
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 0x1e
mov dword [ecx + eax*4 + 4], esi
mov dword [ecx + eax*4 + 8], 0
mov dword [ecx + eax*4 + 0xc], edi
mov dword [ecx + eax*4 + 0x10], 0
jmp 0x4cf65c
mov ecx, ebx
mov edx, 0x1e
push edi
push 0
push esi
call fcn.004747e0
add esp, 0xc
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jle 0x4cf699
lea ecx, [eax + 1]
mov dword [ebx + 0x6c], ecx
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 8
mov dword [ecx + eax*4 + 4], 0
mov edx, dword [esp + 0x10]
mov dword [ecx + eax*4 + 8], edx
mov dword [ecx + eax*4 + 0xc], 0
mov dword [ecx + eax*4 + 0x10], 0
jmp 0x4cf6b0
mov ecx, ebx
mov edx, 8
push 0
push dword [esp + 0x14]
push 0
call fcn.004747e0
add esp, 0xc
mov edx, dword [ebx]
mov ecx, dword [ebx + 0x6c]
mov eax, 0x53e0e4
cmp byte [edx + 0x57], 0
mov edx, 0x53e0e4
jne 0x4cf6db
xor edx, edx
cmp ecx, 2
setl dl
add edx, ecx
lea edx, [edx + edx*4]
mov esi, dword [ebx + 0x68]
lea edx, [esi + edx*4]
add edx, 0xffffffd8
mov dword [edx + 8], ecx
mov edx, dword [ebx]
mov ecx, dword [ebx + 0x6c]
cmp byte [edx + 0x57], 0
jne 0x4cf6fe
lea eax, [ecx - 1]
test ebp, ebp
cmovns eax, ebp
lea eax, [eax + eax*4]
shl eax, 2
mov edx, dword [esp + 4]
add eax, dword [edx + 0x68]
mov dword [eax + 8], ecx
test edi, edi
je 0x4ce759
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 0x13]
cmp eax, 7
ja 0x4ce759
mov ecx, eax
inc cl
mov edx, dword [esp + 0xc]
mov byte [edx + 0x13], cl
mov dword [edx + eax*4 + 0x98], edi
jmp 0x4ce759