Function at 0x40f080
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x84
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
test esi, esi
mov dword [esp + 0x30], eax
jle 0x40f0ea
mov ecx, dword [ebp + 8]
xor eax, eax
mov edx, dword [ebp + 0x1c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
movzx ebx, byte [ecx + eax*4 + 3]
movzx edi, byte [ecx + eax*4 + 2]
shl ebx, 0x18
shl edi, 0x10
or ebx, edi
movzx edi, byte [ecx + eax*4 + 1]
shl edi, 8
or ebx, edi
movzx edi, byte [ecx + eax*4]
or ebx, edi
mov dword [edx + eax*4], ebx
inc eax
cmp eax, esi
jl 0x40f0c0
cmp esi, 4
jne 0x40f34f
mov ebx, dword [ebp + 0x1c]
cmp dword [ebp + 0x18], 4
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
mov eax, dword [ebx + 8]
mov edi, dword [ebx + 0xc]
jle 0x40fa67
mov esi, dword [ebp + 0x18]
mov dword [esp + 8], eax
lea ebx, [esi - 1]
sar ebx, 1
shr ebx, 0x1e
mov dword [esp + 4], edx
mov dword [esp], ecx
lea esi, [ebx + esi - 1]
xor ebx, ebx
sar esi, 2
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], esi
nop dword [eax]
nop dword [eax]
mov eax, edi
mov edx, edi
shr eax, 8
mov ebx, edi
movzx eax, al
pxor xmm6, xmm6
mov esi, eax
movdqa xmm2, xmm6
shr esi, 2
movdqa xmm1, xmm2
shr edx, 0x10
movdqa xmm3, xmm1
movzx edx, dl
mov ecx, edi
and ecx, 0xff
movd xmm5, esi
mov esi, edx
shr esi, 2
mov dword [esp + 0x10], 0
movdqa xmm4, xmmword [0x48fcd0]
shr ebx, 0x15
movd xmm0, esi
mov esi, edi
shr esi, 0x1a
pshufd xmm5, xmm5, 0
pshufd xmm0, xmm0, 0
movd xmm7, esi
mov esi, ecx
shr esi, 2
pshufd xmm7, xmm7, 0
movdqa xmmword [esp + 0x40], xmm7
movd xmm7, esi
pshufd xmm7, xmm7, 0
movdqa xmmword [esp + 0x20], xmm7
mov esi, dword [esp + 0x10]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
movdqa xmm7, xmm4
pcmpeqd xmm7, xmm5
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm6, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmm0
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm2, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmmword [esp + 0x40]
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm1, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmmword [esp + 0x20]
pand xmm7, xmmword [esi*4 + 0x48fd40]
add esi, 4
paddd xmm4, xmmword [0x48fcc0]
por xmm3, xmm7
cmp esi, 0x40
jb 0x40f1e0
movdqa xmm0, xmm3
movdqa xmm4, xmm1
psrldq xmm0, 8
movdqa xmm5, xmm2
por xmm3, xmm0
and ebx, 0xfffffff8
movdqa xmm0, xmm3
movdqa xmm7, xmm6
psrldq xmm4, 8
psrldq xmm0, 4
por xmm1, xmm4
por xmm3, xmm0
movdqa xmm4, xmm1
movd esi, xmm3
psrldq xmm4, 4
por xmm1, xmm4
psrldq xmm5, 8
shl ecx, 3
por xmm2, xmm5
movd dword [esp + 0x18], xmm1
movdqa xmm5, xmm2
shr esi, cl
mov ecx, ebx
mov ebx, dword [esp + 0x18]
psrldq xmm7, 8
shr ebx, cl
por xmm6, xmm7
psrldq xmm5, 4
movdqa xmm0, xmm6
movzx ebx, bl
por xmm2, xmm5
shl esi, 0x18
shl ebx, 0x10
psrldq xmm0, 4
or esi, ebx
movd ebx, xmm2
por xmm6, xmm0
shl edx, 3
mov ecx, edx
movd edx, xmm6
shl eax, 3
shr ebx, cl
mov ecx, eax
movzx ebx, bl
shl ebx, 8
shr edx, cl
or esi, ebx
mov ecx, dword [esp + 0x14]
movzx edx, dl
or esi, edx
xor esi, dword [ecx*4 + 0x48fc40]
shl ecx, 4
mov ebx, dword [esp]
xor ebx, esi
mov esi, dword [ebp + 0x1c]
mov edx, dword [esp + 4]
xor edx, ebx
mov eax, dword [esp + 8]
xor eax, edx
mov dword [esp + 8], eax
xor edi, eax
mov dword [esi + ecx + 0x18], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esi + ecx + 0x10], ebx
mov dword [esi + ecx + 0x14], edx
mov dword [esi + ecx + 0x1c], edi
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0xc]
jb 0x40f140
jmp 0x40fa67
cmp esi, 6
jne 0x40f5f6
mov edx, dword [ebp + 0x1c]
cmp dword [ebp + 0x18], 6
mov ebx, dword [edx + 4]
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0x14]
mov dword [esp + 4], ebx
mov edi, dword [edx]
mov esi, dword [edx + 8]
mov ebx, dword [edx + 0xc]
mov dword [esp], eax
mov dword [esp + 0x1c], ecx
jle 0x40fa67
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], ebx
lea ecx, [eax - 1]
mov eax, 0x2aaaaaab
imul ecx
sar ecx, 0x1f
xor eax, eax
sub edx, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 8], edx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edi
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
mov esi, dword [esp + 0x1c]
mov eax, esi
shr eax, 8
mov ebx, esi
movzx eax, al
mov edx, esi
mov ecx, eax
shr ecx, 2
pxor xmm3, xmm3
shr ebx, 0x10
movdqa xmm2, xmm3
movzx ebx, bl
movdqa xmm5, xmm2
mov edi, esi
and edi, 0xff
movdqa xmm6, xmm5
shr esi, 0x1a
movd xmm1, ecx
mov ecx, ebx
mov dword [esp + 0x20], edi
shr edi, 2
shr ecx, 2
movd xmm7, esi
pshufd xmm7, xmm7, 0
movdqa xmmword [esp + 0x40], xmm7
movd xmm7, edi
mov dword [esp + 0x24], 0
movd xmm0, ecx
pshufd xmm7, xmm7, 0
movdqa xmm4, xmmword [0x48fcd0]
shr edx, 0x15
pshufd xmm1, xmm1, 0
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x50], xmm7
mov esi, dword [esp + 0x24]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
movdqa xmm7, xmm4
pcmpeqd xmm7, xmm1
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm3, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmm0
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm2, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmmword [esp + 0x40]
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm5, xmm7
movdqa xmm7, xmm4
pcmpeqd xmm7, xmmword [esp + 0x50]
pand xmm7, xmmword [esi*4 + 0x48fd40]
add esi, 4
paddd xmm4, xmmword [0x48fcc0]
por xmm6, xmm7
cmp esi, 0x40
jb 0x40f460
movdqa xmm0, xmm6
movdqa xmm1, xmm5
psrldq xmm0, 8
movdqa xmm4, xmm2
por xmm6, xmm0
movdqa xmm7, xmm3
psrldq xmm1, 8
movdqa xmm0, xmm6
psrldq xmm4, 8
por xmm5, xmm1
psrldq xmm0, 4
por xmm2, xmm4
movdqa xmm1, xmm5
por xmm6, xmm0
psrldq xmm7, 8
movdqa xmm4, xmm2
psrldq xmm1, 4
por xmm3, xmm7
movd esi, xmm6
por xmm5, xmm1
psrldq xmm4, 4
movdqa xmm0, xmm3
por xmm2, xmm4
mov ecx, dword [esp + 0x20]
and edx, 0xfffffff8
shl ecx, 3
movd edi, xmm5
psrldq xmm0, 4
por xmm3, xmm0
shr esi, cl
mov ecx, edx
movd edx, xmm2
shl ebx, 3
shr edi, cl
mov ecx, ebx
movd ebx, xmm3
shl eax, 3
and edi, 0xff
shr edx, cl
mov ecx, eax
shl esi, 0x18
shl edi, 0x10
movzx edx, dl
or esi, edi
shl edx, 8
shr ebx, cl
or esi, edx
mov ecx, dword [esp + 0x18]
movzx ebx, bl
or esi, ebx
xor esi, dword [ecx*4 + 0x48fc40]
mov edi, dword [esp + 0x10]
xor edi, esi
mov eax, dword [esp + 4]
xor eax, edi
mov esi, dword [esp + 0xc]
xor esi, eax
mov ebx, dword [esp + 0x14]
mov dword [esp + 0xc], esi
xor ebx, esi
mov edx, dword [esp]
lea esi, [ecx + ecx*2]
mov ecx, dword [ebp + 0x1c]
xor edx, ebx
mov dword [esp + 4], eax
xor dword [esp + 0x1c], edx
mov dword [ecx + esi*8 + 0x1c], eax
mov eax, dword [esp + 0xc]
mov dword [esp], edx
mov dword [ecx + esi*8 + 0x28], edx
mov edx, dword [esp + 0x18]
mov dword [ecx + esi*8 + 0x20], eax
inc edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], ebx
mov dword [ecx + esi*8 + 0x18], edi
mov dword [ecx + esi*8 + 0x24], ebx
mov dword [ecx + esi*8 + 0x2c], eax
mov dword [esp + 0x18], edx
cmp edx, dword [esp + 8]
jb 0x40f3c0
jmp 0x40fa67
mov edi, dword [ebp + 0x1c]
cmp dword [ebp + 0x18], 8
mov edx, dword [edi]
mov eax, dword [edi + 0x14]
mov dword [esp + 0x14], edx
mov dword [esp + 4], eax
mov esi, dword [edi + 4]
mov ebx, dword [edi + 8]
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 0x18]
mov edi, dword [edi + 0x1c]
jle 0x40fa67
mov dword [esp + 0x20], edi
mov edi, dword [ebp + 0x18]
mov dword [esp + 8], eax
lea eax, [edi - 1]
sar eax, 2
shr eax, 0x1d
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], ebx
lea eax, [eax + edi - 1]
sar eax, 3
mov dword [esp], eax
mov dword [esp + 0x18], esi
nop dword [eax + eax]
mov esi, dword [esp + 0x20]
mov eax, esi
shr eax, 8
mov ebx, esi
movzx eax, al
mov edx, esi
mov edi, eax
shr edi, 2
pxor xmm2, xmm2
shr ebx, 0x10
movdqa xmm1, xmm2
movzx ebx, bl
movdqa xmm0, xmm1
mov ecx, esi
and ecx, 0xff
movdqa xmm5, xmm0
movd xmm4, edi
mov edi, ebx
shr edi, 2
shr esi, 0x1a
mov dword [esp + 0x28], 0
movdqa xmm6, xmmword [0x48fcd0]
movd xmm3, edi
mov edi, ecx
shr edi, 2
movd xmm7, esi
pshufd xmm7, xmm7, 0
movdqa xmmword [esp + 0x50], xmm7
shr edx, 0x15
movd xmm7, edi
pshufd xmm7, xmm7, 0
pshufd xmm4, xmm4, 0
pshufd xmm3, xmm3, 0
movdqa xmmword [esp + 0x70], xmm7
mov esi, dword [esp + 0x28]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
movdqa xmm7, xmm6
pcmpeqd xmm7, xmm4
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm2, xmm7
movdqa xmm7, xmm6
pcmpeqd xmm7, xmm3
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm1, xmm7
movdqa xmm7, xmm6
pcmpeqd xmm7, xmmword [esp + 0x50]
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm0, xmm7
movdqa xmm7, xmm6
pcmpeqd xmm7, xmmword [esp + 0x70]
pand xmm7, xmmword [esi*4 + 0x48fd40]
add esi, 4
paddd xmm6, xmmword [0x48fcc0]
por xmm5, xmm7
cmp esi, 0x40
jb 0x40f700
movdqa xmm3, xmm5
movdqa xmm4, xmm0
psrldq xmm3, 8
movdqa xmm6, xmm1
por xmm5, xmm3
movdqa xmm7, xmm2
psrldq xmm4, 8
movdqa xmm3, xmm5
psrldq xmm6, 8
por xmm0, xmm4
psrldq xmm3, 4
por xmm1, xmm6
movdqa xmm4, xmm0
por xmm5, xmm3
psrldq xmm7, 8
movdqa xmm6, xmm1
psrldq xmm4, 4
por xmm2, xmm7
movd edi, xmm5
por xmm0, xmm4
psrldq xmm6, 4
movdqa xmm3, xmm2
por xmm1, xmm6
shl ecx, 3
and edx, 0xfffffff8
movd esi, xmm0
pxor xmm4, xmm4
psrldq xmm3, 4
movdqa xmm0, xmm4
por xmm2, xmm3
movdqa xmm6, xmm0
shr edi, cl
mov ecx, edx
movd edx, xmm1
movdqa xmm5, xmm6
movdqa xmm3, xmmword [0x48fcd0]
shl ebx, 3
shr esi, cl
mov ecx, ebx
movd ebx, xmm2
shl eax, 3
and esi, 0xff
shr edx, cl
mov ecx, eax
shl edi, 0x18
shl esi, 0x10
movzx edx, dl
or edi, esi
shl edx, 8
shr ebx, cl
or edi, edx
mov eax, dword [esp + 0x10]
movzx ebx, bl
or edi, ebx
xor edi, dword [eax*4 + 0x48fc40]
mov ecx, dword [esp + 0x14]
xor ecx, edi
mov edx, dword [esp + 0x18]
xor edx, ecx
mov ebx, dword [esp + 0x1c]
xor ebx, edx
mov esi, dword [esp + 0x24]
xor esi, ebx
mov eax, esi
and eax, 0xff
mov edi, eax
shr edi, 2
mov dword [esp + 0x1c], ebx
mov ebx, esi
shr ebx, 8
movzx ebx, bl
movd xmm2, edi
mov edi, ebx
shr edi, 2
mov dword [esp + 0x18], edx
mov edx, esi
shr edx, 0x10
movzx edx, dl
movd xmm1, edi
mov edi, edx
shr edi, 2
mov dword [esp + 0x14], ecx
mov ecx, esi
mov dword [esp + 0x24], esi
shr esi, 0x1a
movd xmm7, edi
pshufd xmm7, xmm7, 0
movdqa xmmword [esp + 0x40], xmm7
movd xmm7, esi
mov dword [esp + 0x2c], 0
pshufd xmm7, xmm7, 0
shr ecx, 0x15
pshufd xmm2, xmm2, 0
pshufd xmm1, xmm1, 0
movdqa xmmword [esp + 0x60], xmm7
mov esi, dword [esp + 0x2c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
movdqa xmm7, xmm3
pcmpeqd xmm7, xmm2
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm4, xmm7
movdqa xmm7, xmm3
pcmpeqd xmm7, xmm1
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm0, xmm7
movdqa xmm7, xmm3
pcmpeqd xmm7, xmmword [esp + 0x40]
pand xmm7, xmmword [esi*4 + 0x48fd40]
por xmm6, xmm7
movdqa xmm7, xmm3
pcmpeqd xmm7, xmmword [esp + 0x60]
pand xmm7, xmmword [esi*4 + 0x48fd40]
add esi, 4
paddd xmm3, xmmword [0x48fcc0]
por xmm5, xmm7
cmp esi, 0x40
jb 0x40f8e0
movdqa xmm1, xmm5
movdqa xmm2, xmm6
psrldq xmm1, 8
movdqa xmm3, xmm0
por xmm5, xmm1
movdqa xmm7, xmm4
psrldq xmm2, 8
movdqa xmm1, xmm5
psrldq xmm3, 8
por xmm6, xmm2
psrldq xmm1, 4
por xmm0, xmm3
movdqa xmm2, xmm6
por xmm5, xmm1
psrldq xmm7, 8
movdqa xmm3, xmm0
psrldq xmm2, 4
por xmm4, xmm7
movd esi, xmm5
por xmm6, xmm2
psrldq xmm3, 4
movdqa xmm1, xmm4
por xmm0, xmm3
shl edx, 3
and ecx, 0xfffffff8
movd edi, xmm6
psrldq xmm1, 4
por xmm4, xmm1
shr esi, cl
mov ecx, edx
movd edx, xmm0
shl ebx, 3
shr edi, cl
mov ecx, ebx
movd ebx, xmm4
shl eax, 3
and edi, 0xff
shr edx, cl
mov ecx, eax
shl esi, 0x18
shl edi, 0x10
movzx edx, dl
or esi, edi
shl edx, 8
shr ebx, cl
or esi, edx
movzx ebx, bl
mov eax, dword [esp + 0x10]
or esi, ebx
shl eax, 5
mov ebx, dword [ebp + 0x1c]
mov ecx, dword [esp + 0xc]
xor ecx, esi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 4]
xor edi, ecx
mov dword [ebx + eax + 0x20], esi
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 8]
xor edx, edi
mov dword [ebx + eax + 0x24], esi
mov esi, dword [esp + 0x1c]
xor dword [esp + 0x20], edx
mov dword [esp + 8], edx
mov dword [ebx + eax + 0x28], esi
mov dword [ebx + eax + 0x38], edx
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov dword [ebx + eax + 0x2c], esi
mov dword [ebx + eax + 0x30], ecx
mov dword [ebx + eax + 0x34], edi
mov dword [ebx + eax + 0x3c], edx
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0xc], ecx
mov dword [esp + 4], edi
mov dword [esp + 0x10], eax
cmp eax, dword [esp]
jb 0x40f660
mov eax, dword [ebp + 0x18]
shl eax, 2
test eax, eax
jle 0x40fc12
cmp eax, 6
jle 0x40fbae
mov edx, dword [ebp + 0x1c]
cmp edx, dword [ebp + 0x20]
jbe 0x40fa95
mov edx, dword [ebp + 0x1c]
sub edx, dword [ebp + 0x20]
cmp edx, eax
jge 0x40faaf
jmp 0x40fbae
mov edx, dword [ebp + 0x1c]
cmp edx, dword [ebp + 0x20]
jae 0x40fbae
mov edx, dword [ebp + 0x20]
sub edx, dword [ebp + 0x1c]
cmp edx, eax
jl 0x40fbae
cmp eax, 0x10
jl 0x40fb73
mov ebx, dword [ebp + 0x20]
and ebx, 0xf
je 0x40fac5
neg ebx
add ebx, 0x10
lea edx, [ebx + 0x10]
cmp eax, edx
jl 0x40fb73
mov ecx, eax
sub ecx, ebx
and ecx, 0xf
neg ecx
add ecx, eax
test ebx, ebx
jbe 0x40fb0f
mov dword [esp], eax
xor edx, edx
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0x1c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
movzx eax, byte [edx + edi]
mov byte [edx + esi], al
inc edx
cmp edx, ebx
jb 0x40fb00
mov eax, dword [esp]
mov edx, dword [ebp + 0x1c]
lea esi, [edx + ebx]
test esi, 0xf
je 0x40fb53
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x1c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
movdqu xmm0, xmmword [ebx + esi]
movdqa xmmword [ebx + edx], xmm0
add ebx, 0x10
cmp ebx, ecx
jb 0x40fb40
jmp 0x40fb75
mov edx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x1c]
nop dword [eax]
movdqa xmm0, xmmword [ebx + esi]
movdqa xmmword [ebx + edx], xmm0
add ebx, 0x10
cmp ebx, ecx
jb 0x40fb60
jmp 0x40fb75
xor ecx, ecx
cmp ecx, eax
jae 0x40fc12
mov ebx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x1c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
movzx edx, byte [ecx + esi]
mov byte [ecx + ebx], dl
inc ecx
cmp ecx, eax
jb 0x40fba0
jmp 0x40fc12
mov edx, eax
shr edx, 1
test edx, edx
jbe 0x40fced
mov dword [esp], eax
xor ebx, ebx
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0x1c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
movzx eax, byte [edi + ebx*2]
mov byte [esi + ebx*2], al
movzx ecx, byte [edi + ebx*2 + 1]
mov byte [esi + ebx*2 + 1], cl
inc ebx
cmp ebx, edx
jb 0x40fbe0
mov eax, dword [esp]
lea ecx, [ebx + ebx + 1]
lea edx, [ecx - 1]
cmp edx, eax
jae 0x40fc12
mov esi, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x20]
movzx eax, byte [ecx + esi - 1]
mov byte [ecx + edx - 1], al
mov edx, dword [ebp + 0x14]
mov eax, dword [esp + 0x30]
imul edx, eax
cmp eax, edx
jge 0x40fce0
mov dword [esp], edx
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
lfence
mov esi, dword [ebp + 0x20]
mov edi, eax
mov ecx, dword [esi + edi*4]
mov edx, ecx
and edx, 0x80808080
lea ebx, [ecx + ecx]
and ebx, 0xfefefefe
lea eax, [edx + edx]
shr edx, 7
sub eax, edx
and eax, 0x1b1b1b1b
xor ebx, eax
mov esi, ebx
and esi, 0x80808080
lea edx, [ebx + ebx]
and edx, 0xfefefefe
lea eax, [esi + esi]
shr esi, 7
sub eax, esi
and eax, 0x1b1b1b1b
xor edx, eax
mov edi, edx
and edi, 0x80808080
lea eax, [edx + edx]
and eax, 0xfefefefe
lea esi, [edi + edi]
shr edi, 7
sub esi, edi
mov edi, ecx
and esi, 0x1b1b1b1b
xor eax, esi
xor edx, eax
xor edi, eax
xor eax, ebx
xor ebx, edx
xor eax, ecx
xor ecx, edx
rol eax, 0x18
rol ecx, 0x10
xor ebx, eax
mov eax, dword [esp + 0x30]
xor ebx, ecx
mov ecx, dword [ebp + 0x20]
rol edi, 8
xor ebx, edi
mov dword [ecx + eax*4], ebx
inc eax
mov dword [esp + 0x30], eax
cmp eax, dword [esp]
jl 0x40fc40
add esp, 0x84
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, 1
jmp 0x40fbfc