Function at 0x433184
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x250
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], ecx
test eax, eax
mov dword [esp + 0xc8], eax
jle 0x4346b5
mov ecx, dword [esp + 0xc]
mov edi, edx
add dword [esp + 0xc8], edi
lea eax, [ecx - 0x24]
lea edx, [ecx - 4]
lea ebx, [ecx - 0x34]
lea esi, [eax + 1]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xcc], ebx
mov dword [esp + 0x9c], edx
mov dword [esp + 0x134], esi
lea esi, [eax + 2]
mov dword [esp + 0x130], esi
lea esi, [eax + 3]
mov dword [esp + 0x12c], esi
lea esi, [eax + 5]
mov dword [esp + 0x128], esi
lea esi, [eax + 6]
mov dword [esp + 0x124], esi
lea esi, [eax + 7]
mov dword [esp + 0x120], esi
lea esi, [eax + 9]
mov dword [esp + 0x11c], esi
lea esi, [eax + 0xa]
mov dword [esp + 0x118], esi
lea esi, [eax + 0xb]
mov dword [esp + 0x114], esi
lea esi, [eax + 0xd]
mov dword [esp + 0x110], esi
lea esi, [eax + 0xe]
lea eax, [eax + 0xf]
mov dword [esp + 0x108], eax
lea eax, [ecx - 0x2e8]
mov dword [esp + 0x10c], esi
lea esi, [ecx - 0x18]
mov dword [esp + 0x104], eax
mov eax, dword [ecx - 4]
lea ecx, [ecx - 5]
mov dword [esp + 0x100], esi
mov dword [esp + 0xfc], ecx
cmp eax, edx
mov dword [esp + 0x138], edi
je 0x4332cd
lea esi, [eax + 6]
lea edx, [eax + 1]
lea ecx, [eax + 2]
lea ebx, [eax + 3]
lea edi, [eax + 5]
mov dword [esp + 0x20], esi
lea esi, [eax + 7]
mov dword [esp + 0x50], esi
lea esi, [eax + 9]
mov dword [esp + 0x70], esi
lea esi, [eax + 0xa]
mov dword [esp + 0xa0], esi
lea esi, [eax + 0xb]
mov dword [esp + 0xb0], esi
lea esi, [eax + 0xd]
mov dword [esp + 0x60], esi
lea esi, [eax + 0xe]
mov dword [esp + 0x80], esi
lea esi, [eax + 0xf]
mov dword [esp + 0x30], esi
jmp 0x434595
mov eax, dword [esp + 0x100]
mov edi, dword [esp + 0xc4]
mov edx, 4
mov esi, ebx
mov ecx, dword [esi]
add esi, 4
mov ebx, ecx
mov byte [eax + edx*4 - 0xd], cl
mov byte [eax + edx*4 - 0xe], ch
shr ecx, 0x18
shr ebx, 0x10
mov byte [eax + edx*4 - 0xf], bl
mov byte [eax + edx*4 - 0x10], cl
dec edx
jne 0x4332e2
mov ebx, dword [esp + 0xcc]
xor esi, esi
mov edx, 0xfffffffc
inc esi
xor ecx, ecx
add dword [ebx + edx*4 + 0x10], esi
setb cl
inc edx
mov esi, ecx
jne 0x433311
add edi, 0x10
add eax, 0x10
cmp edi, dword [esp + 0x9c]
jb 0x4332db
mov edi, dword [esp + 0xc]
pxor xmm4, xmm4
pxor xmm3, xmm3
movdqa xmm6, xmmword [0x492280]
movdqa xmm7, xmmword [0x492290]
mov ebx, 0xff00ff
movzx edx, byte [edi - 0x24]
movzx ecx, byte [edi - 0x1c]
movzx eax, byte [edi - 0x1d]
movd xmm5, dword [edi - 0x14]
shl edx, 8
shl eax, 0x18
or edx, ecx
movzx ecx, byte [edi - 0x1b]
movd xmm1, edx
movzx edx, byte [edi - 0x23]
punpcklbw xmm1, xmm4
punpcklwd xmm1, xmm4
punpckldq xmm1, xmm4
shl edx, 8
or edx, ecx
movzx ecx, byte [edi - 0x1a]
movd xmm0, edx
movzx edx, byte [edi - 0x22]
punpcklbw xmm0, xmm4
punpcklwd xmm0, xmm4
punpckldq xmm0, xmm4
shl edx, 8
psllq xmm0, 8
or edx, ecx
movzx ecx, byte [edi - 0x19]
movd xmm2, edx
movzx edx, byte [edi - 0x21]
punpcklbw xmm2, xmm4
punpcklwd xmm2, xmm4
punpckldq xmm2, xmm4
shl edx, 8
psllq xmm2, 0x10
or edx, ecx
por xmm2, xmm1
movzx ecx, byte [edi - 0x18]
movd xmm1, edx
movzx edx, byte [edi - 0x20]
punpcklbw xmm1, xmm4
punpcklwd xmm1, xmm4
punpckldq xmm1, xmm4
shl edx, 8
psllq xmm1, 0x18
or edx, ecx
por xmm1, xmm2
movzx ecx, byte [edi - 0x17]
movd xmm2, edx
movzx edx, byte [edi - 0x1f]
punpcklbw xmm2, xmm4
punpcklwd xmm2, xmm4
punpckldq xmm3, xmm2
shl edx, 8
por xmm3, xmm1
or edx, ecx
movzx ecx, byte [edi - 0x16]
movd xmm1, edx
movzx edx, byte [edi - 0x1e]
punpcklbw xmm1, xmm4
punpcklwd xmm1, xmm4
punpckldq xmm1, xmm4
shl edx, 8
psllq xmm1, 0x28
or edx, ecx
movzx ecx, byte [edi - 0x15]
por xmm1, xmm3
movd xmm2, edx
punpcklbw xmm2, xmm4
punpcklwd xmm2, xmm4
punpckldq xmm2, xmm4
shl ecx, 0x18
psllq xmm2, 0x30
por xmm2, xmm1
movd xmm1, ecx
por xmm2, xmm0
movd xmm0, eax
shufps xmm1, xmm0, 0x11
orps xmm1, xmm2
movaps xmm0, xmm1
psrlq xmm0, 7
pxor xmm0, xmm2
pand xmm0, xmm6
movdqa xmm2, xmm0
psllq xmm2, 7
por xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm1, xmmword [0x4922a0]
movdqa xmm0, xmm2
psrlq xmm0, 0xe
pxor xmm0, xmm2
pand xmm0, xmm7
movdqa xmm3, xmm0
psllq xmm3, 0xe
por xmm3, xmm0
pxor xmm3, xmm2
movdqa xmm0, xmm3
psrlq xmm0, 0x1c
pxor xmm0, xmm3
pand xmm0, xmm1
movdqa xmm1, xmm0
psllq xmm1, 0x1c
por xmm1, xmm0
pxor xmm1, xmm3
pshufd xmm0, xmm1, 0x4e
movd eax, xmm0
pshufd xmm0, xmm1, 0xe7
movd ecx, xmm0
pshufd xmm0, xmm1, 0xe5
shr eax, 8
shr ecx, 8
movd edx, xmm0
xor edx, ecx
movd ecx, xmm1
xor ecx, eax
and edx, ebx
movzx eax, byte [edi - 7]
and ecx, ebx
movd xmm2, edx
shl edx, 8
movd xmm0, ecx
shl ecx, 8
punpckldq xmm0, xmm2
movd xmm2, edx
movzx edx, byte [edi - 0xf]
movd xmm3, ecx
movzx ecx, byte [edi - 0x10]
shl eax, 8
punpckldq xmm3, xmm2
punpcklqdq xmm0, xmm3
pxor xmm0, xmm1
shl edx, 8
pshufd xmm1, xmm0, 0x4e
or edx, ecx
movzx ecx, byte [edi - 6]
movd xmm2, edx
movzx edx, byte [edi - 0xe]
punpckldq xmm5, xmm2
movd xmm2, dword [edi - 0xc]
shl ecx, 0x10
or ecx, eax
movzx eax, byte [edi - 5]
shl edx, 0x10
movd xmm3, ecx
movzx ecx, byte [edi - 8]
punpckldq xmm2, xmm3
movd xmm3, edx
punpcklqdq xmm2, xmm5
movd xmm4, ecx
movzx ecx, byte [edi - 0xd]
shufps xmm4, xmm3, 0x11
movd xmm3, eax
orps xmm4, xmm2
movd xmm2, ecx
punpcklqdq xmm3, xmm2
psllq xmm3, 0x38
por xmm3, xmm4
movdqa xmm2, xmm3
psrlq xmm2, 7
pxor xmm2, xmm4
pand xmm2, xmm6
movdqa xmm4, xmm2
psllq xmm4, 7
por xmm4, xmm2
pxor xmm4, xmm3
movdqa xmm2, xmm4
psrlq xmm2, 0xe
pxor xmm2, xmm4
pand xmm2, xmm7
movdqa xmm3, xmm2
psllq xmm3, 0xe
por xmm3, xmm2
pxor xmm3, xmm4
movdqa xmm4, xmm3
psrlq xmm4, 0x1c
pxor xmm4, xmm3
pand xmm4, xmmword [0x4922a0]
movdqa xmm2, xmm4
psllq xmm2, 0x1c
por xmm2, xmm4
pxor xmm2, xmm3
pshufd xmm3, xmm2, 0x4e
movd esi, xmm2
movd eax, xmm3
pshufd xmm3, xmm2, 0xe7
movd ecx, xmm3
pshufd xmm3, xmm2, 0xe5
shr eax, 8
shr ecx, 8
movd edx, xmm3
xor esi, eax
movd eax, xmm1
xor edx, ecx
and esi, ebx
movd ecx, xmm0
shr eax, 0x10
and edx, ebx
movd xmm1, esi
shl esi, 8
shr ecx, 0x10
movd xmm3, edx
shl edx, 8
movd xmm6, ecx
punpckldq xmm1, xmm3
movd xmm4, edx
movd xmm3, esi
punpckldq xmm3, xmm4
punpcklqdq xmm1, xmm3
pxor xmm1, xmm2
movd edx, xmm1
movdqa xmm3, xmm1
pshufd xmm2, xmm1, 0x4e
shufps xmm1, xmm0, 0x88
shl edx, 0x10
psrlq xmm3, 0x20
movd xmm5, edx
movd edx, xmm2
pshufd xmm4, xmm3, 0x4e
shl edx, 0x10
movd xmm2, edx
movd edx, xmm4
movd xmm4, eax
movd eax, xmm3
shufps xmm3, xmm0, 0xd8
psrlq xmm0, 0x30
punpckldq xmm5, xmm2
punpckldq xmm6, xmm4
shl eax, 0x10
pshufd xmm0, xmm0, 0xe8
shl edx, 0x10
punpcklqdq xmm6, xmm5
movaps xmm5, xmmword [0x4923e0]
andps xmm1, xmm5
andps xmm3, xmm5
por xmm6, xmm1
movd xmm1, eax
mov eax, dword [edi - 0x38]
shufps xmm1, xmm0, 0x30
shufps xmm0, xmm1, 0x84
movd xmm1, edx
shufps xmm1, xmm0, 0x20
shufps xmm0, xmm1, 0x24
movdqu xmm1, xmmword [edi - 0x2f8]
mov dword [esp + 0x14], eax
lea eax, [eax - 1]
orps xmm0, xmm3
movdqu xmm3, xmmword [edi - 0x308]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x104]
pshufd xmm1, xmm1, 0x1b
pshufd xmm3, xmm3, 0x1b
pxor xmm1, xmm0
mov dword [esp + 0xd0], eax
pxor xmm3, xmm6
jmp 0x4339ae
mov esi, dword [esp + 8]
and ebx, 0x11111111
dec dword [esp + 0xd4]
shr esi, 1
and esi, 0x77777777
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x50]
and ebx, 0x11111111
shr esi, 1
and esi, 0x77777777
lea esi, [esi + ebx*8]
mov ebx, dword [esp]
mov dword [esp + 0xa0], esi
mov esi, dword [esp + 0x70]
and ebx, 0x11111111
shr esi, 1
and esi, 0x77777777
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0xb0]
mov dword [esp], esi
mov esi, dword [esp + 0x20]
and ebx, 0x11111111
shr esi, 1
and esi, 0x77777777
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x1c], esi
mov esi, edx
shr esi, 1
and esi, 0x77777777
and ebx, 0x11111111
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x80], esi
mov esi, edi
shr esi, 1
xor edx, dword [esp + 0x80]
and esi, 0x77777777
and ebx, 0x11111111
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0xe0]
mov dword [esp + 0x18], esi
mov esi, ecx
movd xmm1, edx
mov edx, dword [esp + 0x20]
shr esi, 1
and esi, 0x77777777
and ebx, 0x11111111
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0x60]
movdqa xmmword [esp + 0x60], xmm1
mov dword [esp + 0xb0], esi
mov esi, eax
xor ecx, dword [esp + 0xb0]
shr esi, 1
and esi, 0x77777777
and ebx, 0x11111111
lea esi, [esi + ebx*8]
mov ebx, dword [esp + 0x18]
movd xmm0, ecx
mov ecx, dword [esp + 0x50]
xor eax, esi
movd xmm6, eax
movdqa xmm7, xmm6
xor edi, ebx
punpckldq xmm7, xmm0
xor ecx, dword [esp + 0xa0]
movd xmm2, edi
mov edi, dword [esp]
punpckldq xmm0, xmm2
punpckldq xmm2, xmm1
movdqa xmm1, xmmword [0x4922b0]
punpcklqdq xmm7, xmm2
movdqa xmmword [esp + 0x30], xmm0
movd xmm4, ecx
mov ecx, dword [esp + 0x1c]
xor edx, ecx
xor ecx, eax
xor eax, dword [esp + 0x80]
movd xmm5, ecx
movd xmm3, edx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
punpckldq xmm5, xmm4
xor ecx, edx
movd xmm2, ecx
xor ecx, dword [esp + 0xa0]
punpckldq xmm4, xmm2
movd xmm2, ebx
mov ebx, dword [esp + 0x70]
punpckldq xmm2, xmm3
xor ebx, edi
movd xmm0, ebx
punpckldq xmm3, xmm0
punpcklqdq xmm3, xmm4
movdqa xmm4, xmm7
psrld xmm7, 2
pslld xmm4, 2
pand xmm4, xmm1
movdqa xmm1, xmmword [str.3333333333333333]
pand xmm7, xmm1
por xmm7, xmm4
movdqa xmm4, xmm3
psrld xmm3, 2
pslld xmm4, 2
pand xmm3, xmm1
movdqa xmm1, xmmword [esp + 0x60]
pand xmm4, xmmword [0x4922b0]
por xmm3, xmm4
movd xmm4, eax
mov eax, dword [esp + 0xd0]
punpckldq xmm1, xmm4
movdqa xmm4, xmmword [esp + 0x30]
punpcklqdq xmm4, xmm1
movd xmm1, ecx
punpckldq xmm1, xmm6
movdqa xmmword [esp + 0x30], xmm4
movd xmm4, esi
punpcklqdq xmm5, xmm1
movd xmm1, dword [esp + 0xb0]
punpckldq xmm4, xmm1
movd xmm1, edx
punpckldq xmm6, xmm1
movd xmm1, edi
punpcklqdq xmm4, xmm2
movdqu xmm2, xmmword [eax]
punpckldq xmm0, xmm1
movdqu xmm1, xmmword [eax + 0x10]
pxor xmm4, xmm7
add eax, 0x20
punpcklqdq xmm0, xmm6
mov dword [esp + 0xd0], eax
pxor xmm0, xmm3
pshufd xmm3, xmm2, 0x1b
pshufd xmm1, xmm1, 0x1b
pxor xmm3, xmm0
pxor xmm1, xmm4
pxor xmm3, xmm5
pxor xmm1, xmmword [esp + 0x30]
pshufd xmm2, xmm1, 0xe7
pshufd xmm0, xmm3, 0xe7
movd esi, xmm2
pshufd xmm2, xmm3, 0xe5
movd eax, xmm2
pshufd xmm2, xmm3, 0x4e
mov dword [esp + 0xe0], esi
mov edx, eax
mov ecx, eax
movd eax, xmm2
pshufd xmm2, xmm1, 0xe5
xor edx, esi
movd esi, xmm1
mov edi, eax
pshufd xmm1, xmm1, 0x4e
mov dword [esp + 0x20], eax
movd eax, xmm2
xor edi, esi
mov dword [esp], esi
movd esi, xmm1
mov dword [esp + 0xdc], edx
mov ebx, edi
xor esi, eax
mov dword [esp + 8], edi
movd edi, xmm0
xor ebx, edx
mov dword [esp + 0x60], esi
movd esi, xmm3
mov edx, ecx
xor ecx, dword [esp]
mov dword [esp + 0x70], edi
xor esi, ebx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x60]
xor edx, esi
xor esi, eax
mov dword [esp + 4], esi
mov esi, dword [esp + 0xe0]
mov dword [esp + 0x80], edx
mov dword [esp + 0x50], ecx
mov ecx, edi
xor ecx, ebx
mov eax, ecx
mov dword [esp + 0x30], ecx
xor eax, esi
xor esi, dword [esp]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 4]
mov dword [esp + 0xe0], esi
mov esi, dword [esp + 0x20]
xor esi, ecx
mov dword [esp + 0x20], esi
xor esi, dword [esp + 0x50]
mov ecx, esi
mov dword [esp + 0x13c], esi
mov esi, edx
xor edx, ebx
mov ebx, dword [esp + 0xe0]
xor esi, edi
mov edi, edx
mov dword [esp + 0xa0], edx
mov dword [esp + 0xb0], esi
and esi, ecx
mov ecx, edi
xor esi, eax
and ecx, dword [esp + 0x50]
xor eax, ebx
xor edx, eax
mov dword [esp + 0x18], eax
and eax, ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x1c], edx
and edx, dword [esp + 0xdc]
xor ecx, eax
xor ebx, edi
mov edi, dword [esp + 8]
xor edx, eax
mov eax, dword [esp + 0x80]
xor esi, edx
and eax, dword [esp + 0x4c]
xor ebx, eax
xor esi, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x60]
xor ebx, ecx
and eax, dword [esp + 0x70]
xor esi, dword [esp + 0x18]
xor ebx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x60], esi
not eax
and eax, esi
mov esi, dword [esp + 0x30]
xor edi, eax
xor edi, edx
mov edx, dword [esp + 0x20]
and edx, esi
xor edi, edx
mov edx, esi
mov esi, dword [esp]
xor edx, esi
mov dword [esp + 0xd8], edx
mov edx, dword [esp + 0x18]
xor edx, dword [esp + 0x70]
mov dword [esp + 4], edx
and edx, dword [esp + 0xd8]
xor edx, esi
xor edx, ecx
mov ecx, edi
xor edx, eax
mov eax, dword [esp + 0x10]
and ecx, eax
xor eax, ebx
mov esi, ecx
mov dword [esp + 0x10], eax
xor esi, edx
mov dword [esp], esi
mov esi, dword [esp]
and esi, eax
mov eax, edx
xor esi, ebx
xor eax, edi
xor ebx, ecx
and ebx, eax
and dword [esp + 4], esi
mov eax, ebx
xor ebx, ecx
and ebx, edx
xor eax, edx
xor edi, ebx
xor ebx, dword [esp]
and dword [esp + 0x70], eax
mov ecx, edi
and dword [esp + 0x80], edi
and edi, dword [esp + 0x4c]
xor ecx, eax
and dword [esp + 0xb0], ecx
and ebx, esi
xor ebx, dword [esp + 0x10]
mov edx, ebx
and dword [esp + 0x30], ebx
xor edx, ecx
and ecx, dword [esp + 0x13c]
and dword [esp + 0xa0], edx
mov dword [esp + 0x10], ecx
mov ecx, esi
xor ecx, eax
and eax, dword [esp + 0x48]
mov dword [esp], eax
mov eax, ebx
and ebx, dword [esp + 0x20]
xor eax, esi
and esi, dword [esp + 0xd8]
and dword [esp + 0x60], eax
and eax, dword [esp + 8]
xor ebx, dword [esp + 4]
mov dword [esp + 0x48], esi
mov esi, ecx
mov dword [esp + 0x4c], eax
mov eax, edx
and edx, dword [esp + 0x50]
xor eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x60]
and ecx, esi
and esi, dword [esp + 0xe0]
xor dword [esp + 0x80], edx
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x1c]
and esi, eax
and eax, dword [esp + 0xdc]
xor ecx, esi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0xa0]
xor ecx, dword [esp + 0x60]
mov dword [esp + 8], eax
mov edx, ecx
mov ecx, dword [esp + 0x20]
xor ecx, eax
mov dword [esp + 0x20], ecx
mov eax, ecx
mov ecx, dword [esp + 0x30]
xor eax, ecx
xor ecx, edx
xor esi, eax
xor eax, edi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x48]
xor esi, dword [esp + 0x1c]
xor eax, dword [esp + 0x10]
mov dword [esp + 0xa0], esi
xor dword [esp + 0xb0], eax
xor eax, edx
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x70]
xor ecx, edi
xor edi, ebx
xor ebx, dword [esp + 0x20]
xor eax, edx
xor eax, esi
xor edi, esi
xor ecx, eax
mov dword [esp + 0xa0], edi
mov esi, ecx
xor ebx, eax
mov eax, dword [esp + 0xb0]
xor edx, eax
xor eax, dword [esp + 4]
mov dword [esp + 0x80], edx
xor eax, dword [esp + 0x70]
mov dword [esp + 0xb0], eax
mov eax, dword [esp]
xor eax, ecx
mov ecx, edx
xor eax, dword [esp + 0x10]
mov dword [esp], eax
mov eax, dword [esp + 0x30]
xor ecx, eax
xor eax, dword [esp + 0x50]
mov dword [esp + 0xe0], ecx
xor eax, esi
mov esi, dword [esp + 0xe0]
xor eax, dword [esp + 8]
mov dword [esp + 0x30], eax
mov eax, ebx
shr eax, 8
xor eax, ebx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ebx
mov eax, edx
mov ecx, edx
and edx, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edx, eax
mov eax, edi
shr eax, 8
or edx, ecx
xor eax, edi
mov dword [esp + 8], edx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, edi
mov eax, edx
mov ecx, edx
and edx, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edx, eax
or edx, ecx
mov ecx, dword [esp]
mov dword [esp + 0x50], edx
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
mov ecx, edx
and edx, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edx, eax
or edx, ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x70], edx
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
mov ecx, edx
and edx, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edx, eax
or edx, ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x20], edx
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edx, eax
shl edx, 8
or edx, eax
xor edx, ecx
mov eax, edx
mov ecx, edx
and edx, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edx, eax
or edx, ecx
mov ecx, dword [esp + 0x30]
mov eax, ecx
shr eax, 8
xor eax, ecx
and eax, 0xcc00cc
mov edi, eax
shl edi, 8
or edi, eax
xor edi, ecx
mov eax, edi
mov ecx, edi
and edi, 0x55555555
shl eax, 0xc
shr ecx, 4
and eax, 0xa000a000
and ecx, 0xaaa0aaa
or edi, eax
mov eax, esi
shr eax, 8
or edi, ecx
xor eax, esi
and eax, 0xcc00cc
mov ecx, eax
shl ecx, 8
or ecx, eax
xor ecx, esi
mov eax, ecx
mov esi, ecx
and ecx, 0x55555555
shl eax, 0xc
shr esi, 4
and eax, 0xa000a000
and esi, 0xaaa0aaa
or ecx, eax
mov eax, dword [esp + 0x60]
or ecx, esi
mov esi, eax
shr esi, 8
xor esi, eax
and esi, 0xcc00cc
mov eax, esi
shl eax, 8
or eax, esi
xor eax, dword [esp + 0x60]
mov esi, eax
shl esi, 0xc
and esi, 0xa000a000
mov dword [esp + 4], esi
mov esi, eax
and eax, 0x55555555
add eax, dword [esp + 4]
shr esi, 4
and esi, 0xaaa0aaa
or eax, esi
cmp dword [esp + 0xd4], 0
jne 0x433739
mov ebx, edx
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
shl edx, 5
xor ebx, dword [esi + edx - 0x2f8]
xor eax, dword [esi + edx - 0x2ec]
xor ecx, dword [esi + edx - 0x2f0]
xor edi, dword [esi + edx - 0x2f4]
mov dword [esp + 0x14], edx
mov dword [esp + 0x30], ebx
mov ebx, esi
mov esi, dword [esp + 0x20]
movd xmm0, eax
movd xmm1, ecx
mov eax, 0xfffffffb
movdqa xmmword [esp + 0x80], xmm0
movd xmm0, edi
movss xmm2, dword [esp + 0x30]
mov edi, 4
movdqa xmmword [esp + 0x60], xmm0
xor esi, dword [ebx + edx - 0x2fc]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x70]
movss xmm0, dword [esp + 0x20]
movaps xmmword [esp + 0x20], xmm2
xor esi, dword [ebx + edx - 0x300]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
movaps xmmword [esp + 0xb0], xmm0
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x50]
xor esi, dword [ebx + edx - 0x304]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 8]
movss xmm0, dword [esp + 0x50]
movdqa xmmword [esp + 0x50], xmm1
movss xmm1, dword [esp + 0x70]
xor esi, dword [ebx + edx - 0x308]
mov ebx, 0x10
movaps xmmword [esp + 0x70], xmm1
movdqa xmm1, xmmword [0x492390]
movaps xmmword [esp + 0xa0], xmm0
movd xmm2, esi
mov esi, dword [esp + 0xfc]
movdqa xmm4, xmm1
movdqa xmmword [esp + 0xe0], xmm2
movd xmm3, edi
movdqa xmm7, xmm4
movdqa xmm0, xmmword [0x492310]
pshufd xmm1, xmmword [esp + 0x80], 0x44
movdqa xmmword [esp + 0x30], xmm4
xorps xmm5, xmm5
movdqa xmm6, xmmword [0x4923b0]
pshufd xmm2, xmmword [esp + 0x60], 0x44
psllq xmm7, xmm3
movdqa xmm3, xmm4
psllq xmm3, xmmword [0x4923a0]
pand xmm1, xmm0
pand xmm2, xmm0
movsd xmm7, xmm3
movdqa xmm3, xmm1
andpd xmm7, xmm0
pshufd xmm4, xmm7, 0x4e
psrlq xmm3, xmm7
movss xmm5, xmm4
psrlq xmm1, xmm5
movsd xmm1, xmm3
movdqa xmm3, xmm0
movapd xmm4, xmm1
psllq xmm4, xmm6
movd xmm6, ebx
psllq xmm1, xmm6
movsd xmm1, xmm4
movdqa xmm4, xmm2
psrlq xmm2, xmm5
psrlq xmm4, xmm7
movsd xmm2, xmm4
pshufd xmm4, xmmword [esp + 0xb0], 0x44
pand xmm4, xmm0
movapd xmm0, xmmword [0x4923c0]
andpd xmm2, xmm0
orpd xmm2, xmm1
movdqa xmm1, xmm4
psrlq xmm4, xmm5
psrlq xmm1, xmm7
psllq xmm2, 0x10
movsd xmm4, xmm1
pshufd xmm1, xmmword [esp + 0xa0], 0x44
andpd xmm4, xmm0
movdqa xmm0, xmm3
orpd xmm4, xmm2
psllq xmm4, 0x10
pand xmm1, xmm3
movdqa xmm2, xmm1
psrlq xmm1, xmm5
psrlq xmm2, xmm7
movsd xmm1, xmm2
pshufd xmm2, xmmword [esp + 0x50], 0x44
andpd xmm1, xmmword [0x4923c0]
pand xmm2, xmm3
pshufd xmm3, xmmword [esp + 0x20], 0x44
orpd xmm1, xmm4
movdqa xmm4, xmm2
psrlq xmm2, xmm5
psrlq xmm4, xmm7
movsd xmm2, xmm4
movapd xmm4, xmm2
psllq xmm2, xmm6
pand xmm3, xmm0
pshufd xmm6, xmmword [esp + 0xe0], 0x44
psllq xmm4, xmmword [0x4923b0]
pand xmm6, xmm0
movsd xmm2, xmm4
movdqa xmm4, xmm3
psrlq xmm3, xmm5
psrlq xmm4, xmm7
movsd xmm3, xmm4
pshufd xmm4, xmmword [esp + 0x70], 0x44
andpd xmm3, xmmword [0x4923c0]
pand xmm4, xmm0
movapd xmm0, xmmword [0x4923c0]
orpd xmm3, xmm2
movdqa xmm2, xmm4
psrlq xmm4, xmm5
psrlq xmm2, xmm7
psllq xmm3, 0x10
movsd xmm4, xmm2
movdqa xmm2, xmm6
psrlq xmm6, xmm5
andpd xmm4, xmm0
psrlq xmm2, xmm7
orpd xmm4, xmm3
movsd xmm6, xmm2
psllq xmm4, 0x10
andpd xmm6, xmm0
orpd xmm6, xmm4
movdqa xmm4, xmmword [0x4922a0]
movapd xmm2, xmm6
psrlq xmm2, 8
pxor xmm2, xmm1
pand xmm2, xmmword [0x4923d0]
movdqa xmm5, xmm4
movdqa xmm3, xmm2
pxor xmm2, xmm1
psllq xmm3, 8
pxor xmm3, xmm6
movdqa xmm1, xmm3
psrlq xmm1, 0x1c
pxor xmm1, xmm3
pand xmm1, xmm4
movdqa xmm4, xmm1
psllq xmm4, 0x1c
por xmm4, xmm1
movdqa xmm1, xmm2
psrlq xmm1, 0x1c
pxor xmm4, xmm3
pxor xmm1, xmm2
pand xmm1, xmm5
movdqa xmm3, xmm1
psllq xmm3, 0x1c
por xmm3, xmm1
movdqa xmm1, xmm4
pxor xmm3, xmm2
movdqa xmm2, xmmword [0x492290]
psrlq xmm1, 0xe
pxor xmm1, xmm4
pand xmm1, xmm2
movdqa xmm5, xmm2
movdqa xmm2, xmm1
psllq xmm2, 0xe
por xmm2, xmm1
movdqa xmm1, xmm3
psrlq xmm1, 0xe
pxor xmm2, xmm4
pxor xmm1, xmm3
pand xmm1, xmm5
movdqa xmm4, xmm1
psllq xmm4, 0xe
por xmm4, xmm1
movdqa xmm1, xmmword [0x492280]
pxor xmm4, xmm3
movdqa xmm3, xmm2
psrlq xmm3, 7
pxor xmm3, xmm2
pand xmm3, xmm1
movdqa xmm5, xmm1
movdqa xmm1, xmm3
psllq xmm1, 7
por xmm1, xmm3
pxor xmm1, xmm2
movdqa xmm2, xmm4
psrlq xmm2, 7
movdqa xmmword [esp + 0x150], xmm1
pxor xmm2, xmm4
mov cl, byte [esp + 0x150]
mov dl, byte [esp + 0x158]
pand xmm2, xmm5
movdqa xmm7, xmm2
psllq xmm7, 7
por xmm7, xmm2
movdqa xmm2, xmm1
mov byte [esi + eax - 0x1a], cl
mov byte [esi + eax - 0xa], dl
psrlq xmm2, 8
pxor xmm7, xmm4
movdqa xmmword [esp + 0x1d0], xmm2
movdqa xmm2, xmm1
mov cl, byte [esp + 0x1d0]
mov dl, byte [esp + 0x1d8]
psrlq xmm2, 0x10
mov byte [esi + eax - 0x19], cl
mov byte [esi + eax - 9], dl
movdqa xmmword [esp + 0x1e0], xmm2
movdqa xmm2, xmm1
mov cl, byte [esp + 0x1e0]
mov dl, byte [esp + 0x1e8]
psrlq xmm2, 0x18
mov byte [esi + eax - 0x18], cl
mov byte [esi + eax - 8], dl
movdqa xmmword [esp + 0x1f0], xmm2
movdqa xmm2, xmm1
mov cl, byte [esp + 0x1f0]
mov dl, byte [esp + 0x1f8]
psrlq xmm2, 0x20
mov byte [esi + eax - 0x17], cl
mov byte [esi + eax - 7], dl
movdqa xmmword [esp + 0x200], xmm2
movdqa xmm2, xmm1
mov cl, byte [esp + 0x200]
mov dl, byte [esp + 0x208]
psrlq xmm2, 0x28
mov byte [esi + eax - 0x16], cl
mov byte [esi + eax - 6], dl
movdqa xmmword [esp + 0x210], xmm2
movdqa xmm2, xmm1
psrlq xmm1, 0x38
mov cl, byte [esp + 0x210]
mov dl, byte [esp + 0x218]
psrlq xmm2, 0x30
mov byte [esi + eax - 0x15], cl
mov byte [esi + eax - 5], dl
movdqa xmmword [esp + 0x220], xmm2
mov cl, byte [esp + 0x220]
mov dl, byte [esp + 0x228]
mov byte [esi + eax - 0x14], cl
mov byte [esi + eax - 4], dl
movdqa xmmword [esp + 0x230], xmm1
movdqa xmm1, xmm7
mov cl, byte [esp + 0x230]
mov dl, byte [esp + 0x238]
psrlq xmm1, 8
mov byte [esi + eax - 0x13], cl
mov byte [esi + eax - 3], dl
movdqa xmmword [esp + 0x140], xmm7
mov cl, byte [esp + 0x140]
mov dl, byte [esp + 0x148]
mov byte [esi + eax - 0x12], cl
mov byte [esi + eax - 2], dl
movdqa xmmword [esp + 0x160], xmm1
movdqa xmm1, xmm7
mov cl, byte [esp + 0x160]
mov dl, byte [esp + 0x168]
psrlq xmm1, 0x10
mov byte [esi + eax - 0x11], cl
mov byte [esi + eax - 1], dl
movdqa xmmword [esp + 0x170], xmm1
movdqa xmm1, xmm7
mov cl, byte [esp + 0x170]
mov dl, byte [esp + 0x178]
psrlq xmm1, 0x18
mov byte [esi + eax - 0x10], cl
mov byte [esi + eax], dl
movdqa xmmword [esp + 0x180], xmm1
movdqa xmm1, xmm7
mov cl, byte [esp + 0x180]
mov dl, byte [esp + 0x188]
psrlq xmm1, 0x20
mov byte [esi + eax - 0xf], cl
mov byte [esi + eax + 1], dl
movdqa xmmword [esp + 0x190], xmm1
movdqa xmm1, xmm7
mov cl, byte [esp + 0x190]
mov dl, byte [esp + 0x198]
psrlq xmm1, 0x28
mov byte [esi + eax - 0xe], cl
mov byte [esi + eax + 2], dl
movdqa xmmword [esp + 0x1a0], xmm1
movdqa xmm1, xmm7
psrlq xmm7, 0x38
mov cl, byte [esp + 0x1a0]
mov dl, byte [esp + 0x1a8]
psrlq xmm1, 0x30
mov byte [esi + eax - 0xd], cl
mov byte [esi + eax + 3], dl
movdqa xmmword [esp + 0x1b0], xmm1
mov cl, byte [esp + 0x1b0]
mov dl, byte [esp + 0x1b8]
mov byte [esi + eax - 0xc], cl
mov byte [esi + eax + 4], dl
movdqa xmmword [esp + 0x1c0], xmm7
movdqa xmm0, xmmword [esp + 0x30]
mov cl, byte [esp + 0x1c0]
mov dl, byte [esp + 0x1c8]
paddq xmm0, xmmword [0x492360]
mov byte [esi + eax - 0xb], cl
mov byte [esi + eax + 5], dl
add eax, 0x20
cmp eax, 0x1b
movdqa xmm4, xmm0
jne 0x433fbd
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0x128]
mov ebx, dword [esp + 0x12c]
mov edx, dword [esp + 0x134]
mov dword [ecx], eax
mov ecx, dword [esp + 0x108]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x110]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x114]
mov dword [esp + 0xb0], ecx
mov ecx, dword [esp + 0x118]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x11c]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x120]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x130]
movzx edx, byte [edx]
movzx esi, byte [eax]
shl edx, 8
or edx, esi
movzx esi, byte [ecx]
movzx ecx, byte [ebx]
shl esi, 0x10
shl ecx, 0x18
or esi, edx
movzx edx, byte [edi]
mov edi, dword [esp + 0x138]
or ecx, esi
movzx esi, byte [eax + 4]
shl edx, 8
xor ecx, dword [edi]
or edx, esi
mov esi, dword [esp + 0x20]
mov ebx, ecx
movzx esi, byte [esi]
shr ebx, 0x10
shl esi, 0x10
or esi, edx
mov edx, dword [esp + 0x50]
movzx edx, byte [edx]
mov byte [edi], cl
shl edx, 0x18
or edx, esi
xor edx, dword [edi + 4]
mov byte [edi + 1], ch
shr ecx, 0x18
mov byte [edi + 2], bl
mov ebx, dword [esp + 0xcc]
mov byte [edi + 3], cl
mov ecx, edx
mov byte [edi + 4], dl
mov byte [edi + 5], dh
shr edx, 0x18
shr ecx, 0x10
mov byte [edi + 6], cl
mov ecx, dword [esp + 0x70]
mov byte [edi + 7], dl
movzx edx, byte [eax + 8]
movzx eax, byte [eax + 0xc]
movzx ecx, byte [ecx]
shl ecx, 8
or ecx, edx
mov edx, dword [esp + 0xa0]
movzx edx, byte [edx]
shl edx, 0x10
or edx, ecx
mov ecx, dword [esp + 0xb0]
movzx ecx, byte [ecx]
shl ecx, 0x18
or ecx, edx
mov edx, dword [esp + 0x60]
xor ecx, dword [edi + 8]
movzx edx, byte [edx]
shl edx, 8
or edx, eax
mov eax, dword [esp + 0x80]
movzx esi, byte [eax]
mov eax, dword [esp + 0x30]
movzx eax, byte [eax]
shl esi, 0x10
mov byte [edi + 8], cl
or esi, edx
mov edx, ecx
shr edx, 0x10
shl eax, 0x18
or eax, esi
xor eax, dword [edi + 0xc]
mov byte [edi + 9], ch
mov byte [edi + 0xa], dl
shr ecx, 0x18
mov edx, dword [esp + 0x9c]
mov byte [edi + 0xb], cl
mov ecx, eax
mov byte [edi + 0xc], al
mov byte [edi + 0xd], ah
shr eax, 0x18
shr ecx, 0x10
mov byte [edi + 0xe], cl
mov byte [edi + 0xf], al
add edi, 0x10
mov eax, dword [edx]
add eax, 0x10
cmp edi, dword [esp + 0xc8]
mov dword [edx], eax
mov edx, edx
jb 0x433270
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret