Function at 0x4315be
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xe0
mov eax, dword [ebp + 8]
mov esi, dword [0x4b507c]
pxor xmm0, xmm0
lea edi, [eax + 0xf]
xor esi, ebp
cmp edi, 0x1f
mov dword [esp + 0xd8], esi
movdqa xmmword [esp + 0xc0], xmm0
movdqa xmmword [esp + 0xb0], xmm0
jb 0x432b52
mov ebx, 0xf
test eax, eax
mov esi, 0xaa00aa
mov dword [esp + 0x44], ecx
lea edi, [eax + ebx]
cmovns edi, eax
lea eax, [esp + 0xb0]
or ebx, eax
lea eax, [ecx - 0x308]
sar edi, 4
mov dword [esp + 0x68], eax
lea eax, [ecx - 0x2e8]
mov dword [esp + 0x88], ebx
lea ebx, [ecx - 0x310]
mov dword [esp + 0x70], eax
lea eax, [ecx - 0x34]
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x84], eax
xor eax, eax
cmp edi, 1
mov ecx, 2
mov dword [esp + 0x78], edi
sete al
sub ecx, eax
mov dword [esp + 0x64], ecx
shl ecx, 4
mov dword [esp + 0x74], ecx
push ecx
mov dword [esp + 0x80], edx
push edx
lea eax, [esp + 0xb8]
push eax
call fcn.004716e0
movdqa xmm5, xmmword [0x4922f0]
add esp, 0xc
movzx edx, byte [esp + 0xb6]
movzx eax, word [esp + 0xb4]
movzx ecx, byte [esp + 0xb7]
movzx ebx, byte [esp + 0xbe]
mov edi, dword [esp + 0xb0]
movdqa xmm6, xmmword [0x492300]
movdqa xmm7, xmmword [0x492310]
shl edx, 0x10
shl ecx, 0x18
shl ebx, 0x10
or edx, eax
movzx eax, word [esp + 0xbc]
or ecx, edx
or ebx, eax
mov dword [esp + 8], ebx
mov ebx, ecx
shr ebx, 7
xor ebx, edx
mov edx, 0xaa00aa
and ebx, esi
mov esi, ebx
shl esi, 7
or esi, ebx
mov ebx, edi
shr ebx, 7
xor esi, ecx
movzx ecx, byte [esp + 0xbf]
xor ebx, edi
and ebx, edx
mov eax, ebx
shl eax, 7
shl ecx, 0x18
or eax, ebx
mov ebx, dword [esp + 8]
xor eax, edi
or ecx, ebx
mov edi, ecx
shr edi, 7
xor edi, ebx
and edi, edx
mov ebx, edi
shl ebx, 7
or ebx, edi
mov edi, dword [esp + 0xb8]
mov dword [esp + 8], ebx
xor dword [esp + 8], ecx
mov ecx, esi
shr ecx, 0xe
xor ecx, esi
mov ebx, edi
shr ebx, 7
xor ebx, edi
and ebx, edx
mov edx, ebx
shl edx, 7
or edx, ebx
mov ebx, 0xcccc
and ecx, ebx
xor edx, edi
mov edi, ecx
shl edi, 0xe
or edi, ecx
mov ecx, eax
shr ecx, 0xe
xor edi, esi
xor ecx, eax
and ecx, ebx
mov ebx, ecx
shl ebx, 0xe
or ebx, ecx
mov ecx, dword [esp + 8]
xor ebx, eax
mov eax, ecx
shr eax, 0xe
xor eax, ecx
mov ecx, 0xcccc
and eax, ecx
mov esi, eax
shl esi, 0xe
or esi, eax
mov eax, edx
shr eax, 0xe
xor esi, dword [esp + 8]
xor eax, edx
and eax, ecx
mov ecx, eax
shl ecx, 0xe
or ecx, eax
mov eax, edi
shl eax, 4
xor ecx, edx
mov edx, 0xf0f0f0f0
xor eax, ebx
and eax, edx
mov edx, eax
xor eax, ebx
shr edx, 4
xor edx, edi
mov edi, 0xf0f0f0f0
mov dword [esp + 8], edx
mov edx, esi
shl edx, 4
mov ebx, dword [esp + 8]
xor edx, ecx
and edx, edi
mov edi, edx
xor edx, ecx
shr edi, 4
mov ecx, ebx
xor edi, esi
shr ecx, 8
mov esi, 0xff00ff
xor ecx, edi
and ecx, esi
mov esi, ecx
xor ecx, edi
shl esi, 8
mov dword [esp + 0x14], ecx
movzx ecx, byte [esp + 0xc6]
xor esi, ebx
mov ebx, 0xff00ff
mov dword [esp + 0xc], esi
mov esi, eax
shr esi, 8
xor esi, edx
shl ecx, 0x10
and esi, ebx
mov ebx, esi
xor esi, edx
movzx edx, word [esp + 0xcc]
shl ebx, 8
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0xc0]
xor ebx, eax
movzx eax, word [esp + 0xc4]
mov dword [esp + 0x1c], ebx
mov ebx, 0xaa00aa
or ecx, eax
movzx eax, byte [esp + 0xce]
shl eax, 0x10
or eax, edx
movzx edx, byte [esp + 0xc7]
shl edx, 0x18
or edx, ecx
mov edi, edx
shr edi, 7
xor edi, ecx
and edi, ebx
mov ecx, edi
shl ecx, 7
or ecx, edi
mov edi, esi
xor ecx, edx
shr edi, 7
mov dword [esp + 0x10], ecx
movzx ecx, byte [esp + 0xcf]
xor edi, esi
and edi, ebx
mov ebx, edi
shl ebx, 7
shl ecx, 0x18
or ebx, edi
or ecx, eax
xor ebx, esi
mov esi, dword [esp + 0xc8]
mov edx, ecx
shr edx, 7
xor edx, eax
mov eax, 0xaa00aa
and edx, eax
mov edi, edx
shl edi, 7
or edi, edx
mov edx, esi
shr edx, 7
xor edi, ecx
xor edx, esi
mov dword [esp + 8], edi
and edx, eax
mov eax, edx
shl eax, 7
or eax, edx
mov edx, dword [esp + 0x10]
xor eax, esi
mov esi, 0xcccc
mov ecx, edx
shr ecx, 0xe
xor ecx, edx
and ecx, esi
mov esi, ebx
mov edi, ecx
shr esi, 0xe
shl edi, 0xe
xor esi, ebx
or edi, ecx
mov ecx, 0xcccc
xor edi, edx
mov edx, dword [esp + 8]
and esi, ecx
mov ecx, esi
shl ecx, 0xe
or ecx, esi
mov esi, edx
xor ecx, ebx
shr esi, 0xe
xor esi, edx
mov edx, 0xcccc
and esi, edx
mov ebx, esi
shl ebx, 0xe
or ebx, esi
mov esi, eax
shr esi, 0xe
xor ebx, dword [esp + 8]
xor esi, eax
and esi, edx
mov edx, esi
shl edx, 0xe
or edx, esi
mov esi, 0xf0f0f0f0
xor edx, eax
mov eax, edi
shl eax, 4
xor eax, ecx
and eax, esi
mov esi, eax
xor eax, ecx
mov ecx, ebx
shr esi, 4
shl ecx, 4
xor esi, edi
xor ecx, edx
mov edi, 0xf0f0f0f0
and ecx, edi
mov edi, ecx
xor ecx, edx
mov edx, 0xff00ff
shr edi, 4
xor edi, ebx
mov ebx, esi
shr ebx, 8
xor ebx, edi
and ebx, edx
mov edx, ebx
xor ebx, edi
mov edi, 0xffff
shl edx, 8
xor edx, esi
mov esi, 0xff00ff
mov dword [esp + 0x10], edx
mov edx, eax
shr edx, 8
xor edx, ecx
and edx, esi
mov esi, edx
xor edx, ecx
mov ecx, dword [esp + 0x1c]
shl esi, 8
xor esi, eax
mov eax, ecx
and eax, edi
mov edi, esi
shl edi, 0x10
or edi, eax
mov eax, ecx
mov ecx, 0xffff0000
and esi, ecx
shr eax, 0x10
mov ecx, 0xffff
mov dword [esp + 8], edi
or esi, eax
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0xc]
mov eax, esi
shr esi, 0x10
and eax, ecx
mov ecx, dword [esp + 0x10]
mov edi, ecx
shl edi, 0x10
or edi, eax
mov eax, 0xffff0000
and ecx, eax
or ecx, esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
mov ecx, 0xffff
mov eax, esi
shr esi, 0x10
and eax, ecx
mov ecx, edx
shl ecx, 0x10
or ecx, eax
mov eax, 0xffff0000
and edx, eax
mov dword [esp + 0xc], ecx
mov ecx, 0xffff
or edx, esi
mov esi, dword [esp + 0x14]
mov eax, esi
and eax, ecx
mov ecx, ebx
shl ecx, 0x10
or ecx, eax
mov eax, esi
mov esi, dword [esp + 8]
mov dword [esp + 0x24], ecx
mov ecx, 0xffff0000
shr eax, 0x10
and ebx, ecx
or ebx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x14]
mov eax, dword [eax - 0x38]
mov ecx, eax
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x44]
shl ecx, 5
mov dword [esp + 0x5c], ecx
xor esi, dword [eax + ecx - 0x308]
mov eax, dword [esp + 0x44]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xc]
xor esi, dword [eax + ecx - 0x304]
mov eax, dword [esp + 0x44]
xor edx, dword [eax + ecx - 0x2fc]
mov eax, dword [esp + 0x44]
mov dword [esp + 0xc], esi
mov esi, edi
mov edi, dword [esp + 0x10]
xor esi, dword [eax + ecx - 0x2f8]
mov eax, dword [esp + 0x44]
xor edi, dword [eax + ecx - 0x2f0]
mov eax, dword [esp + 0x44]
xor ebx, dword [eax + ecx - 0x2ec]
mov ecx, edi
mov dword [esp + 0x10], edi
mov edi, esi
xor ecx, esi
xor edi, edx
mov eax, ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x18], edi
xor eax, dword [esp + 8]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x30], eax
xor eax, dword [esp + 0xc]
xor ecx, ebx
xor esi, ebx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
xor eax, edi
mov edi, eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
xor edi, ebx
xor ebx, dword [esp + 0x10]
xor ecx, dword [eax + esi - 0x300]
mov eax, dword [esp + 8]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x24]
xor ecx, edi
xor edi, edx
xor eax, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x18]
xor ebx, dword [ecx + esi - 0x2f4]
mov ecx, dword [esp + 0x3c]
xor edx, edi
mov dword [esp + 8], edx
xor ecx, ebx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x14]
mov esi, ecx
mov dword [esp + 0x2c], ecx
xor esi, edx
mov dword [esp + 0x34], esi
mov edx, ebx
xor ebx, edi
xor edx, eax
mov dword [esp + 0x60], ebx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x1c]
xor edx, edi
mov edi, dword [esp + 0x4c]
mov ebx, edx
and edx, dword [esp + 0x18]
xor ebx, ecx
mov ecx, ebx
mov dword [esp + 0x40], ebx
xor ecx, edi
mov dword [esp + 0x28], ecx
xor ecx, esi
mov esi, edi
mov edi, dword [esp + 0x34]
mov ebx, ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x38]
and esi, dword [esp + 0x50]
and ebx, dword [esp + 0x60]
and ecx, dword [esp + 0x14]
xor ebx, edx
xor ecx, edx
mov edx, dword [esp + 0x28]
xor eax, ecx
and edx, dword [esp + 0x20]
xor esi, edx
xor eax, edx
mov edx, dword [esp + 0x40]
xor esi, ebx
xor esi, dword [esp + 0x1c]
and edx, dword [esp + 0x3c]
xor eax, edx
mov edx, dword [esp + 0xc]
xor edx, dword [esp + 8]
and edi, edx
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x30]
xor edi, dword [esp + 0x24]
xor edx, edi
xor edi, dword [esp + 0x18]
xor edx, ebx
mov ebx, edx
mov edx, dword [esp + 8]
xor edi, ecx
mov ecx, dword [esp + 0x58]
and edx, dword [esp + 0x54]
and ecx, dword [esp + 0x2c]
xor ebx, edx
xor edi, ecx
mov ecx, esi
and esi, ebx
xor ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, esi
xor ecx, edi
mov edx, ecx
and edx, dword [esp + 0x10]
xor edx, eax
xor eax, esi
mov dword [esp + 0x24], edx
mov edx, ebx
xor edx, edi
and eax, edx
mov edx, eax
xor eax, esi
and eax, edi
xor edx, edi
xor ebx, eax
xor eax, ecx
mov ecx, dword [esp + 0x24]
and dword [esp + 0x40], edx
and eax, dword [esp + 0x24]
mov esi, ebx
and dword [esp + 0x28], ebx
and ebx, dword [esp + 0x20]
xor esi, edx
and dword [esp + 0x4c], esi
mov edi, ecx
and dword [esp + 0x2c], ecx
xor eax, dword [esp + 0x10]
mov dword [esp + 0x30], ebx
xor edi, edx
and edx, dword [esp + 0x3c]
and dword [esp + 0x18], edi
mov ebx, eax
mov dword [esp + 0x10], eax
xor eax, esi
and esi, dword [esp + 0x50]
mov dword [esp + 0x20], eax
mov eax, ebx
mov ebx, dword [esp + 0x34]
xor eax, ecx
and ecx, dword [esp + 0x58]
and ebx, eax
and eax, dword [esp + 0xc]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x34], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
and dword [esp + 8], eax
and eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov ecx, eax
xor ecx, edi
and edi, dword [esp + 0x1c]
and dword [esp + 0x48], ecx
and ecx, dword [esp + 0x60]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x38]
and ecx, eax
and eax, dword [esp + 0x14]
xor edi, ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc]
xor eax, dword [esp + 0x3c]
xor edi, eax
mov dword [esp + 0xc], eax
xor edi, dword [esp + 0x10]
mov ecx, edi
xor edi, ebx
mov ebx, dword [esp + 8]
mov eax, edi
xor ecx, dword [esp + 0x28]
xor eax, ebx
xor ebx, dword [esp + 0x2c]
xor ebx, ecx
mov dword [esp + 8], ebx
mov ebx, ecx
mov ecx, dword [esp + 0x40]
xor esi, ecx
xor ebx, ecx
mov ecx, dword [esp + 0x24]
xor esi, edx
xor edx, dword [esp + 0x20]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x4c]
movd xmm0, dword [esp + 0x14]
xor ecx, esi
xor edx, dword [esp + 0x30]
xor ecx, eax
xor eax, dword [esp + 0x38]
xor ecx, ebx
xor dword [esp + 0x10], ecx
movd xmm2, dword [esp + 0x10]
xor dword [esp + 0x18], edx
xor edx, ecx
mov ecx, dword [esp + 0x2c]
xor eax, dword [esp + 0x48]
xor edx, dword [esp + 0xc]
punpckldq xmm2, xmm0
movd xmm0, dword [esp + 0x18]
xor esi, ecx
mov dword [esp + 0x1c], eax
xor edi, ecx
mov eax, dword [esp + 8]
xor esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
movd xmm3, edx
movd xmm1, edi
mov edx, dword [esp + 0x5c]
punpckldq xmm1, xmm3
punpcklqdq xmm1, xmm2
xor eax, ebx
xor esi, dword [esp + 0x34]
movd xmm4, ecx
punpckldq xmm4, xmm0
movd xmm0, eax
mov eax, dword [esp + 0x44]
xor esi, dword [esp + 0x3c]
mov eax, dword [eax + edx - 0x328]
xor esi, ecx
xor esi, dword [esp + 0x28]
movd xmm2, esi
mov esi, dword [esp + 0xa0]
punpckldq xmm2, xmm0
punpcklqdq xmm2, xmm4
movdqa xmm4, xmm1
movdqa xmm0, xmm2
psrld xmm4, 8
psrld xmm0, 8
pxor xmm4, xmm1
mov ecx, esi
pxor xmm0, xmm2
pand xmm4, xmm5
dec ecx
pand xmm0, xmm5
movdqa xmm5, xmmword [0x492320]
movdqa xmm3, xmm0
pslld xmm3, 8
por xmm3, xmm0
movdqa xmm0, xmm4
pslld xmm0, 8
pxor xmm3, xmm2
por xmm0, xmm4
movdqa xmm2, xmm3
pxor xmm0, xmm1
movdqa xmm1, xmm3
pand xmm3, xmm5
pslld xmm2, 4
psrld xmm1, 0xc
pand xmm2, xmm7
pand xmm1, xmm6
por xmm3, xmm1
movdqa xmm1, xmm0
psrld xmm1, 0xc
por xmm3, xmm2
pand xmm1, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm5
pslld xmm6, 4
por xmm0, xmm1
pand xmm6, xmm7
por xmm0, xmm6
je 0x43284b
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x6c]
shl esi, 3
pshufd xmm1, xmm0, 0x1b
pshufd xmm2, xmm3, 0x1b
lea ecx, [ecx + esi*4]
movq xmm3, qword [ecx]
pshufd xmm0, xmm1, 0x4e
movd edx, xmm2
mov dword [esp + 0x5c], ecx
mov ecx, 0xf1111111
mov edi, 0xf1111111
mov esi, 0x77777777
xor edx, eax
mov dword [esp + 0x10], edx
pxor xmm0, xmm3
pshufd xmm3, xmm0, 0xe5
movdqa xmm7, xmm0
movdqa xmmword [esp + 0xa0], xmm0
movd eax, xmm3
pshufd xmm3, xmm2, 0xe5
mov ebx, eax
mov dword [esp + 8], eax
xor ebx, edx
mov edx, eax
and eax, ecx
mov ecx, edx
mov edx, 0x77777777
mov dword [esp + 0x14], ebx
shr ecx, 1
and ecx, edx
mov edx, 0xf3333333
lea eax, [ecx + eax*8]
mov ecx, ebx
shr ecx, 1
mov dword [esp + 0xc], eax
mov eax, ebx
and eax, edi
and ecx, esi
mov edi, 0x33333333
mov esi, 0xf3333333
lea eax, [ecx + eax*8]
movd ecx, xmm0
mov dword [esp + 0x2c], eax
mov eax, ecx
and eax, edx
mov edx, ecx
shr edx, 2
and edx, edi
mov edi, 0x33333333
lea eax, [edx + eax*4]
mov dword [esp + 0x20], eax
mov eax, ebx
shr ebx, 2
and eax, esi
mov esi, dword [esp + 0x5c]
and ebx, edi
movd edi, xmm3
pshufd xmm3, xmm2, 0x4e
pshufd xmm2, xmm2, 0xe7
movd edx, xmm2
lea eax, [ebx + eax*4]
mov ebx, dword [esp + 8]
mov dword [esp + 0x40], eax
movd eax, xmm3
movdqa xmm3, xmm0
xor edx, dword [esi - 0xc]
xor edi, dword [esi - 0x14]
xor eax, dword [esi - 0x10]
movq xmm2, qword [esi - 8]
xor dword [esp + 0xc], ebx
mov esi, edx
mov esi, dword [esp + 0x14]
xor ebx, eax
mov dword [esp + 0x24], eax
mov eax, ecx
xor ecx, edi
mov dword [esp + 0x34], edx
pxor xmm2, xmm1
mov dword [esp + 0x1c], edi
mov edi, 0x77777777
xor edx, ecx
movd xmm4, ebx
pshufd xmm1, xmm2, 0xe5
xor dword [esp + 0x20], eax
punpckldq xmm3, xmm2
pshufd xmm5, xmm3, 0x4e
movd xmm3, dword [esp + 0x34]
xor edx, esi
xor dword [esp + 0x2c], esi
xor dword [esp + 0x40], esi
xor edx, ebx
xor ebx, eax
mov dword [esp + 0x30], ebx
mov ebx, eax
movd eax, xmm1
mov dword [esp + 0x28], edx
mov edx, 0xf1111111
punpckldq xmm3, xmm2
xor ebx, eax
mov dword [esp + 0x38], eax
pxor xmm3, xmm5
xor esi, ebx
pshufd xmm5, xmm3, 0xe5
mov eax, esi
and eax, edx
mov edx, esi
shr edx, 1
and edx, edi
mov edi, 0x77777777
lea eax, [edx + eax*8]
movd edx, xmm5
movd xmm5, ebx
xor eax, esi
movss xmm7, xmm5
movdqa xmm5, xmm2
mov dword [esp + 8], eax
movd eax, xmm3
punpckldq xmm5, xmm0
movdqa xmm0, xmmword [0x492340]
xor edx, eax
mov dword [esp + 0x48], eax
mov eax, 0xf1111111
pxor xmm5, xmm7
xor edx, dword [esp + 0x30]
pshufd xmm7, xmm5, 0xe5
pxor xmm3, xmm5
movdqa xmm5, xmmword [0x492360]
mov esi, edx
and esi, eax
mov eax, edx
shr eax, 1
and eax, edi
mov edi, 0x33333333
lea eax, [eax + esi*8]
mov esi, 0xf3333333
mov dword [esp + 0x18], eax
mov eax, ecx
xor dword [esp + 0x18], edx
xor edx, ecx
and eax, esi
mov esi, ecx
shr esi, 2
and esi, edi
lea eax, [esi + eax*4]
xor eax, ecx
xor ecx, dword [esp + 0x10]
mov dword [esp + 0x9c], eax
mov eax, 0xf1111111
xor ebx, ecx
xor ecx, dword [esp + 0x24]
mov esi, ebx
mov edi, ebx
and esi, eax
shr edi, 1
mov eax, 0x77777777
and edi, eax
mov eax, 0xf1111111
lea esi, [edi + esi*8]
mov edi, ecx
xor esi, ebx
shr edi, 1
mov ebx, 0x77777777
mov dword [esp + 0x4c], esi
mov esi, ecx
and edi, ebx
and esi, 0xf1111111
lea edi, [edi + esi*8]
mov esi, edx
xor edi, ecx
mov ecx, edx
shr esi, 1
and ecx, eax
and esi, ebx
mov eax, 0xf3333333
mov dword [esp + 0x14], edi
lea ebx, [esi + ecx*8]
mov esi, 0x33333333
xor ebx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x58], ebx
mov ecx, edx
shr edx, 2
and ecx, eax
and edx, esi
lea eax, [edx + ecx*4]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x90], eax
mov eax, 0xf3333333
mov ecx, edx
shr edx, 2
and ecx, eax
and edx, esi
lea eax, [edx + ecx*4]
mov ecx, edi
shr edi, 2
mov edx, ebx
and ecx, 0xf3333333
and edi, esi
shr edx, 2
mov dword [esp + 0x94], eax
lea eax, [edi + ecx*4]
mov ecx, ebx
and edx, esi
mov ebx, 0x77777777
mov edi, 0xf1111111
and ecx, 0xf3333333
mov dword [esp + 0x98], eax
lea eax, [edx + ecx*4]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x60], eax
mov ecx, edx
shr edx, 2
and edx, esi
and ecx, 0xf3333333
mov esi, dword [esp + 0x48]
lea eax, [edx + ecx*4]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
mov ecx, edx
shr edx, 1
xor eax, dword [esp + 0x38]
and ecx, 0xf1111111
and edx, ebx
lea ecx, [edx + ecx*8]
mov edx, esi
shr esi, 1
and esi, ebx
and edx, edi
mov ebx, 0x77777777
xor ecx, dword [esp + 0x1c]
lea edx, [esi + edx*8]
movd xmm6, eax
movd eax, xmm2
mov esi, eax
mov dword [esp + 0x3c], eax
punpckldq xmm4, xmm6
and esi, edi
mov edi, eax
mov eax, dword [esp + 0xc]
movdqa xmm6, xmm4
shr edi, 1
pslld xmm6, 3
and edi, ebx
mov ebx, 0xf3333333
lea esi, [edi + esi*8]
mov edi, eax
shr eax, 2
xor esi, dword [esp + 0x3c]
and edi, ebx
mov ebx, 0x33333333
and eax, ebx
mov ebx, 0xf3333333
lea eax, [eax + edi*4]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x2c]
mov edi, eax
shr eax, 2
and edi, ebx
mov ebx, 0x33333333
and eax, ebx
lea eax, [eax + edi*4]
mov edi, ecx
shr ecx, 2
mov dword [esp + 0xc], eax
mov eax, 0xf3333333
and ecx, ebx
mov ebx, 0x33333333
and edi, eax
lea eax, [ecx + edi*4]
mov edi, 0xf3333333
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x48]
xor edx, eax
mov ecx, edx
shr edx, 2
and ecx, edi
and edx, ebx
lea ecx, [edx + ecx*4]
mov dword [esp + 0x28], ecx
mov ecx, esi
shr esi, 2
and ecx, edi
and esi, ebx
mov edi, dword [esp + 0x30]
lea ecx, [esi + ecx*4]
mov dword [esp + 0x2c], ecx
movd ecx, xmm7
movdqa xmm7, xmmword [0x492330]
mov esi, ecx
mov edx, ecx
shr esi, 2
and edx, 0xf3333333
and esi, ebx
mov ebx, 0x33333333
lea edx, [esi + edx*4]
mov esi, 0xf3333333
pand xmm6, xmm7
movdqa xmm7, xmm4
xor edx, ecx
mov ecx, edi
psrld xmm7, 1
and ecx, esi
mov esi, edi
pand xmm7, xmm0
movdqa xmm0, xmmword [0x492350]
shr esi, 2
por xmm7, xmm6
movdqa xmm6, xmmword [0x492360]
and esi, ebx
pxor xmm7, xmm4
lea esi, [esi + ecx*4]
mov ecx, eax
pshufd xmm4, xmm7, 0xe5
xor esi, edi
mov edi, 0xf3333333
and ecx, edi
mov edi, eax
shr edi, 2
and edi, ebx
mov ebx, 0xf1111111
lea edi, [edi + ecx*4]
xor edi, eax
mov eax, dword [esp + 0x20]
mov ecx, eax
shr eax, 1
and ecx, ebx
mov ebx, 0x77777777
and eax, ebx
lea eax, [eax + ecx*8]
mov ecx, edx
shr edx, 1
and ecx, 0xf1111111
and edx, ebx
mov dword [esp + 0x48], eax
lea eax, [edx + ecx*8]
mov ecx, 0xf1111111
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
mov edx, eax
shr eax, 1
and eax, ebx
mov ebx, dword [esp + 0x9c]
and edx, ecx
mov ecx, 0x77777777
lea eax, [eax + edx*8]
mov edx, 0xf1111111
mov dword [esp + 0x40], eax
mov eax, ebx
shr ebx, 1
and eax, edx
and ebx, ecx
lea eax, [ebx + eax*8]
mov dword [esp + 0x20], eax
mov eax, esi
shr esi, 1
and eax, edx
and esi, ecx
mov edx, 0xf1111111
lea ebx, [esi + eax*8]
mov eax, edi
shr edi, 1
and eax, edx
and edi, ecx
lea edi, [edi + eax*8]
mov eax, dword [esp + 8]
xor eax, dword [esp + 0x10]
xor eax, dword [esp + 0x8c]
xor eax, dword [esp + 0x90]
xor eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc]
xor eax, dword [esp + 0x1c]
xor eax, dword [esp + 0x30]
xor eax, dword [esp + 0x94]
xor eax, dword [esp + 0x4c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 0x24]
xor eax, dword [esp + 0x40]
xor eax, dword [esp + 0x98]
mov dword [esp + 0x14], eax
movd eax, xmm4
movdqa xmm4, xmm7
pslld xmm7, 2
pand xmm7, xmm0
movdqa xmm0, xmmword [esp + 0xa0]
psrld xmm4, 2
xor eax, dword [esp + 0x34]
pand xmm4, xmm6
por xmm4, xmm7
movdqa xmm7, xmmword [0x492330]
movd ecx, xmm4
pshufd xmm4, xmm4, 0xe5
punpckldq xmm1, xmm0
movd esi, xmm4
xor ecx, eax
mov eax, dword [esp + 0x18]
movdqa xmm6, xmm1
movdqa xmm4, xmm1
xor esi, ecx
mov ecx, dword [esp + 0x28]
psrld xmm6, 1
pslld xmm4, 3
xor esi, dword [esp + 0x20]
pand xmm6, xmmword [0x492340]
pand xmm4, xmm7
xor eax, dword [esp + 0x38]
xor ecx, dword [esp + 0x3c]
por xmm6, xmm4
movdqa xmm4, xmmword [0x492340]
pxor xmm6, xmm1
xor eax, edi
movdqa xmm1, xmm6
psrld xmm6, 2
xor ecx, ebx
xor eax, dword [esp + 0x50]
pslld xmm1, 2
pand xmm6, xmmword [0x492360]
xor ecx, dword [esp + 0x60]
pand xmm1, xmmword [0x492350]
xor eax, dword [esp + 0x2c]
xor ecx, dword [esp + 0x58]
por xmm6, xmm1
movdqa xmm1, xmm3
pxor xmm6, xmm0
movdqa xmm0, xmm3
psrld xmm1, 1
pslld xmm0, 3
pand xmm1, xmm4
mov dword [esp + 0x18], eax
pand xmm0, xmm7
mov edx, ecx
por xmm1, xmm0
pxor xmm1, xmm3
movdqa xmm3, xmmword [0x492350]
movdqa xmm0, xmm1
pxor xmm6, xmm1
pslld xmm1, 2
psrld xmm0, 2
pand xmm0, xmm5
pand xmm1, xmm3
por xmm0, xmm1
movdqa xmm1, xmm2
pslld xmm1, 2
pxor xmm6, xmm0
pand xmm1, xmm3
movdqa xmm3, xmm2
psrld xmm3, 2
pand xmm3, xmm5
por xmm3, xmm1
pxor xmm3, xmm2
movdqa xmm1, xmm3
psrld xmm3, 1
pslld xmm1, 3
pand xmm3, xmm4
pand xmm1, xmm7
movdqa xmm7, xmmword [0x492300]
por xmm3, xmm1
pxor xmm6, xmm3
movd eax, xmm6
pshufd xmm0, xmm6, 0xe5
movdqa xmm6, xmmword [0x4922f0]
xor ecx, eax
mov dword [esp + 0x24], eax
mov ebx, ecx
mov eax, ecx
mov edi, ecx
mov dword [esp + 0x58], ecx
mov ecx, edx
mov eax, edx
xor ebx, dword [esp + 8]
xor ecx, esi
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], ebx
xor ebx, dword [esp + 0xc]
mov edx, ebx
mov dword [esp + 0x30], ebx
xor edx, ecx
movd ecx, xmm0
xor eax, ecx
mov ebx, edx
mov dword [esp + 0x48], edx
mov edx, edi
mov edi, dword [esp + 0x30]
xor dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
xor ebx, ecx
xor edx, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x38], edx
xor edi, dword [esp + 0x18]
xor eax, ebx
xor ebx, esi
xor eax, dword [esp + 0x54]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 8]
mov edx, edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov eax, esi
mov esi, dword [esp + 0x2c]
xor eax, ebx
xor ebx, esi
xor edx, ebx
mov dword [esp + 8], ebx
mov ebx, eax
xor ebx, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x20], ebx
mov ebx, esi
xor ebx, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x38]
xor ecx, esi
mov esi, ecx
and ecx, dword [esp + 0x2c]
xor esi, edi
mov dword [esp + 0x4c], esi
xor esi, ebx
mov dword [esp + 0x34], esi
mov edi, esi
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x34]
xor esi, edx
mov edx, esi
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x20]
and edx, dword [esp + 0x54]
and esi, dword [esp + 0x24]
xor edx, ecx
xor esi, ecx
mov ecx, edi
mov edi, ebx
mov ebx, dword [esp + 0xc]
and ecx, dword [esp + 0x50]
and edi, dword [esp + 0x28]
xor eax, esi
xor ebx, dword [esp + 8]
xor edi, ecx
xor eax, ecx
mov ecx, dword [esp + 0x4c]
xor edi, edx
xor edi, dword [esp + 0x14]
mov dword [esp + 0xc], ebx
and ecx, dword [esp + 0x30]
xor eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, ebx
mov ebx, dword [esp + 0x1c]
xor ecx, dword [esp + 0x18]
xor ebx, ecx
xor ecx, dword [esp + 0x2c]
xor ebx, edx
mov edx, dword [esp + 8]
xor ecx, esi
and edx, dword [esp + 0x58]
xor ebx, edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x1c], ebx
and edx, dword [esp + 0x10]
xor ecx, edx
mov edx, edi
and edi, ebx
mov ebx, dword [esp + 0x1c]
xor edx, eax
mov dword [esp + 0x18], edx
mov edx, edi
xor edx, ecx
mov esi, edx
xor ebx, ecx
and esi, dword [esp + 0x18]
xor esi, eax
xor eax, edi
and eax, ebx
and dword [esp + 0x10], esi
mov ebx, eax
xor eax, edi
xor ebx, ecx
and eax, ecx
mov ecx, dword [esp + 0x1c]
and dword [esp + 0x4c], ebx
xor ecx, eax
xor eax, edx
and eax, esi
mov edx, ecx
and dword [esp + 0x3c], ecx
and ecx, dword [esp + 0x50]
xor eax, dword [esp + 0x18]
xor edx, ebx
and dword [esp + 0x38], edx
mov dword [esp + 0x1c], ecx
mov ecx, eax
mov edi, eax
and dword [esp + 8], eax
and eax, dword [esp + 0x58]
xor ecx, edx
xor edi, esi
and edx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
mov ecx, esi
and esi, dword [esp + 0x48]
xor ecx, ebx
and ebx, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
and dword [esp + 0x2c], ecx
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x40]
and ebx, edi
and edi, dword [esp + 0xc]
mov dword [esp + 0x40], ebx
mov dword [esp + 0xc], edi
mov edi, eax
xor edi, ecx
and ecx, dword [esp + 0x14]
and dword [esp + 0x34], edi
and edi, dword [esp + 0x54]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x20]
and edi, eax
and eax, dword [esp + 0x24]
xor ecx, edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
xor eax, dword [esp + 0x30]
xor ecx, eax
mov dword [esp + 0xc], eax
xor ecx, dword [esp + 0x28]
mov eax, ecx
xor ecx, ebx
mov ebx, dword [esp + 8]
mov edi, ecx
xor eax, dword [esp + 0x3c]
xor ecx, dword [esp + 0x10]
xor edi, ebx
xor ebx, dword [esp + 0x10]
xor ebx, eax
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x4c]
xor eax, ebx
xor edx, ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x2c]
movd xmm4, dword [esp + 0x14]
xor edx, ebx
xor ebx, dword [esp + 0x18]
xor esi, edx
xor edx, dword [esp + 0x10]
xor esi, edi
xor edi, dword [esp + 0x20]
xor esi, dword [esp + 0x38]
xor ebx, dword [esp + 0x1c]
xor edx, dword [esp + 0x18]
xor edi, dword [esp + 0x34]
xor dword [esp + 0x28], esi
xor eax, ebx
xor ebx, esi
mov esi, dword [esp + 8]
xor edx, dword [esp + 0x40]
movd xmm2, eax
xor ebx, dword [esp + 0xc]
movd xmm0, edi
punpckldq xmm0, xmm2
movd xmm2, dword [esp + 0x28]
xor esi, dword [esp + 0x38]
xor edx, dword [esp + 0x30]
punpckldq xmm2, xmm4
movd xmm4, ecx
mov ecx, dword [esp + 0x5c]
movd xmm3, esi
xor edx, edi
xor edx, dword [esp + 0x3c]
mov eax, dword [ecx - 0x38]
add ecx, 0xffffffe0
dec dword [esp + 0x80]
movd xmm1, edx
punpckldq xmm1, xmm3
movd xmm3, ebx
punpckldq xmm4, xmm3
punpcklqdq xmm1, xmm0
punpcklqdq xmm4, xmm2
movdqa xmm5, xmm1
movdqa xmm2, xmm4
psrld xmm5, 8
psrld xmm2, 8
pxor xmm5, xmm1
pxor xmm2, xmm4
pand xmm5, xmm6
pand xmm2, xmm6
movdqa xmm3, xmm5
movdqa xmm6, xmmword [0x492310]
movdqa xmm0, xmm2
pslld xmm3, 8
pslld xmm0, 8
por xmm3, xmm5
movdqa xmm5, xmmword [0x492320]
por xmm0, xmm2
pxor xmm3, xmm1
pxor xmm0, xmm4
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrld xmm1, 0xc
pslld xmm2, 4
pand xmm0, xmm5
pand xmm1, xmm7
pand xmm2, xmm6
por xmm0, xmm1
movdqa xmm1, xmm3
psrld xmm1, 0xc
por xmm0, xmm2
movdqa xmm2, xmm3
pand xmm3, xmm5
pslld xmm2, 4
pand xmm1, xmm7
por xmm3, xmm1
pand xmm2, xmm6
pshufd xmm1, xmm0, 0x1b
por xmm3, xmm2
pshufd xmm2, xmm3, 0x1b
jne 0x431e50
mov edx, dword [esp + 0x70]
jmp 0x43284f
add edx, dword [esp + 0x68]
pshufd xmm1, xmm3, 0xe7
movd ecx, xmm1
pshufd xmm1, xmm3, 0x4e
movd esi, xmm1
pshufd xmm1, xmm3, 0xe5
xor ecx, eax
xor esi, dword [edx - 0x1c]
movd edi, xmm1
pshufd xmm1, xmm0, 0xe7
mov dword [esp + 0x1c], ecx
xor ecx, ecx
xor edi, dword [edx - 0x18]
mov dword [esp + 0x10], esi
movd esi, xmm3
xor esi, dword [edx - 0x14]
mov dword [esp + 0x2c], edi
movd edi, xmm1
pshufd xmm1, xmm0, 0x4e
xor edi, dword [edx - 0x10]
mov dword [esp + 0x38], esi
movd esi, xmm1
pshufd xmm1, xmm0, 0xe5
xor esi, dword [edx - 0xc]
mov dword [esp + 0x34], edi
movd edi, xmm1
xor edi, dword [edx - 8]
mov dword [esp + 0x28], esi
movd esi, xmm0
xor esi, dword [edx - 4]
lea edx, [esp + 0xb0]
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
shl ecx, 4
mov edx, 0xffff
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
shr eax, cl
shr esi, cl
shr edi, cl
shl eax, 0x10
and esi, edx
shl edi, 0x10
or esi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x10]
shr eax, cl
shr esi, cl
shl eax, 0x10
and esi, edx
or esi, eax
mov eax, esi
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x34]
shr esi, cl
and esi, edx
or esi, edi
mov edi, dword [esp + 0x2c]
shr edi, cl
shr ebx, cl
and ebx, edx
shl edi, 0x10
mov edx, esi
or ebx, edi
mov edi, dword [esp + 8]
shr edx, 8
mov ecx, ebx
shr ecx, 8
xor ecx, eax
mov eax, 0xff00ff
and ecx, eax
xor edx, edi
mov eax, ecx
xor ecx, dword [esp + 0xc]
shl eax, 8
xor eax, ebx
mov ebx, 0xff00ff
and edx, ebx
mov ebx, edx
xor edx, edi
shl ebx, 8
xor ebx, esi
mov esi, 0xf0f0f0f0
mov edi, ebx
shl edi, 4
xor edi, eax
and edi, esi
mov esi, edi
xor edi, eax
mov eax, 0xf0f0f0f0
shr esi, 4
xor esi, ebx
mov ebx, edx
shl ebx, 4
xor ebx, ecx
and ebx, eax
mov eax, ebx
xor ebx, ecx
mov ecx, edi
shr eax, 4
shr ecx, 0xe
xor eax, edx
xor ecx, edi
mov edx, esi
mov dword [esp + 8], eax
mov eax, 0xcccc
shr edx, 0xe
and ecx, eax
xor edx, esi
mov eax, ecx
shl eax, 0xe
or eax, ecx
mov ecx, 0xcccc
and edx, ecx
xor eax, edi
mov ecx, edx
shl ecx, 0xe
or ecx, edx
mov edx, ebx
shr edx, 0xe
xor ecx, esi
mov esi, 0xcccc
xor edx, ebx
and edx, esi
mov esi, dword [esp + 8]
mov edi, edx
shl edi, 0xe
or edi, edx
mov edx, esi
xor edi, ebx
shr edx, 0xe
xor edx, esi
mov esi, 0xcccc
and edx, esi
mov esi, edx
shl esi, 0xe
or esi, edx
mov edx, eax
xor esi, dword [esp + 8]
shr edx, 7
xor edx, eax
mov dword [esp + 8], esi
mov esi, 0xaa00aa
and edx, esi
mov esi, dword [esp + 0x14]
mov ebx, edx
shl ebx, 7
or ebx, edx
mov edx, 0xaa00aa
xor ebx, eax
mov eax, ebx
mov byte [esi], bl
mov byte [esi + 1], bh
shr ebx, 0x18
shr eax, 0x10
mov byte [esi + 2], al
mov eax, ecx
mov byte [esi + 3], bl
mov ebx, 0xaa00aa
shr eax, 7
xor eax, ecx
and eax, edx
mov edx, eax
shl edx, 7
or edx, eax
xor edx, ecx
mov eax, edx
mov byte [esi + 4], dl
mov byte [esi + 5], dh
shr edx, 0x18
shr eax, 0x10
mov byte [esi + 6], al
mov eax, edi
mov byte [esi + 7], dl
shr eax, 7
xor eax, edi
and eax, ebx
mov ecx, eax
shl ecx, 7
or ecx, eax
xor ecx, edi
mov edi, dword [esp + 8]
mov edx, ecx
mov byte [esi + 8], cl
mov byte [esi + 9], ch
shr ecx, 0x18
shr edx, 0x10
mov byte [esi + 0xa], dl
mov byte [esi + 0xb], cl
mov ecx, 1
mov eax, edi
shr eax, 7
xor eax, edi
and eax, ebx
mov edx, eax
shl edx, 7
or edx, eax
xor edx, edi
mov eax, edx
mov byte [esi + 0xc], dl
mov byte [esi + 0xd], dh
shr edx, 0x18
shr eax, 0x10
mov byte [esi + 0xe], al
mov byte [esi + 0xf], dl
add esi, 0x10
cmp dword [esp + 0x18], 0
mov dword [esp + 0x14], esi
je 0x4328d1
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x44]
xor eax, eax
xor ebx, ebx
mov edi, dword [ecx - 0x34]
mov esi, dword [ecx - 0x30]
inc ebx
xor dword [esp + eax + 0xb0], edi
xor dword [esp + eax + 0xb4], esi
mov edi, dword [ecx - 0x2c]
mov esi, dword [ecx - 0x28]
xor dword [esp + eax + 0xb8], edi
xor dword [esp + eax + 0xbc], esi
mov esi, dword [esp + 0x84]
mov edi, dword [esp + 0x88]
movsd xmm0, qword [edx + eax]
movsd xmm1, qword [edx + eax + 8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
movq xmm0, qword [edi + eax - 0xf]
movq xmm1, qword [edi + eax - 7]
movq qword [edx + eax], xmm0
movq qword [edx + eax + 8], xmm1
add eax, 0x10
cmp ebx, dword [esp + 0x64]
jb 0x432ad0
mov edi, dword [esp + 0x78]
add edx, dword [esp + 0x74]
mov esi, 0xaa00aa
sub edi, dword [esp + 0x64]
jne 0x431652
lea eax, [esp + 0xb0]
push 0x20
push eax
call fcn.00467374
add esp, 8
mov ecx, dword [esp + 0xd8]
xor ecx, ebp
call fcn.0046f0c8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret