Function at 0x46c0f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x44
mov esi, dword [edx + 0x14]
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 0xc]
or esi, dword [edx + 0xc]
jne 0x46c124
mov esi, dword [edx + 0x20]
cmp esi, dword [edx + 0x1c]
jne 0x46c124
mov edx, dword [ebp + 8]
push eax
push dword [ebp + 0x10]
push ebx
call fcn.0046b1c0
add esp, 0x50
jmp 0x46cdcd
mov edi, ebx
mov edx, ebx
and edi, 3
shr edx, 2
mov dword [ebp - 0x34], edi
lea edi, [edi + edi*2]
mov dword [ebp - 0x18], edx
lea edx, [edx + edx*2]
shr edi, 2
add edi, edx
cmp edi, eax
jbe 0x46c152
mov byte [ecx + 4], 1
mov dword [ecx], 0
jmp 0x46cdca
mov esi, dword [ebp + 8]
and ebx, 0xfffffffc
mov edx, 0xaaaaaaab
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x1c], ecx
lea eax, [esi + ebx]
mov dword [ebp - 0x3c], eax
mov eax, edi
mul edx
shr edx, 1
lea edx, [edx + edx*2]
sub edi, edx
test ebx, ebx
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 0x30], edi
lea eax, [ebx + edx]
mov dword [ebp - 0x2c], eax
je 0x46c332
mov eax, dword [ebp - 0x18]
movdqa xmm3, xmmword [0x5ab440]
movdqa xmm5, xmmword [str.....]
mov dword [ebp - 0x14], 0
shl eax, 2
neg eax
nop word [eax + eax]
sub edx, 3
jb 0x46c339
movd xmm1, dword [esi]
pxor xmm0, xmm0
movdqa xmm2, xmmword [0x5ab3a0]
movdqa xmm6, xmmword [0x5ab3e0]
movdqa xmm7, xmmword [0x5ab410]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x40], edx
punpcklbw xmm1, xmm0
movdqa xmm0, xmm1
psubw xmm2, xmm1
movdqa xmm4, xmm1
psubw xmm6, xmm1
psubw xmm7, xmm1
paddw xmm0, xmmword [0x5ab3b0]
paddw xmm4, xmmword [0x5ab3f0]
pand xmm0, xmm2
movdqa xmm2, xmm1
paddw xmm2, xmmword [0x5ab3d0]
psrlw xmm0, 8
pand xmm0, xmmword [0x5ab3c0]
pand xmm6, xmm2
movdqa xmm2, xmm1
paddw xmm2, xmmword [0x5ab400]
psraw xmm6, 8
pand xmm4, xmm6
movdqa xmm6, xmm1
paddw xmm6, xmmword [0x5ab420]
pand xmm7, xmm2
movdqa xmm2, xmm1
paddw xmm2, xmmword [0x5ab430]
psraw xmm7, 8
pand xmm6, xmm7
movdqa xmm7, xmm3
psubw xmm7, xmm1
pand xmm7, xmm2
movdqa xmm2, xmm1
paddw xmm2, xmmword [0x5ab450]
psraw xmm7, 8
pand xmm2, xmm7
paddw xmm2, xmm6
paddw xmm2, xmm4
pcmpeqd xmm4, xmm4
paddw xmm2, xmm4
paddw xmm2, xmm0
movdqa xmm0, xmm5
psubw xmm0, xmm1
paddw xmm1, xmmword [0x5ab470]
movd eax, xmm2
pextrw esi, xmm2, 1
pextrw edi, xmm2, 2
shl eax, 2
shl esi, 4
shl edi, 6
pand xmm1, xmm0
psrlw xmm1, 8
pand xmm1, xmm3
paddw xmm1, xmm2
pshufd xmm0, xmm1, 0x55
pextrw ecx, xmm1, 1
pextrw edx, xmm1, 3
por xmm0, xmm1
shr ecx, 4
or edx, edi
movdqa xmm2, xmm0
or ecx, eax
pextrw eax, xmm1, 2
psrld xmm2, 0x10
shr eax, 2
mov byte [ebx], cl
por xmm2, xmm0
or eax, esi
mov esi, dword [ebp - 0x24]
movd ecx, xmm2
mov byte [ebx + 1], al
mov eax, dword [ebp - 0x18]
mov byte [ebx + 2], dl
mov edx, dword [ebp - 0x40]
add ebx, 3
shr ecx, 8
and ecx, 1
or dword [ebp - 0x14], ecx
add esi, 4
add eax, 4
jne 0x46c1b0
jmp 0x46c339
mov dword [ebp - 0x14], 0
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x44], 0x41414141
lea eax, [ebp - 0x44]
push edi
push dword [ebp - 0x3c]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movd xmm0, dword [ebp - 0x44]
pxor xmm1, xmm1
movdqa xmm2, xmmword [0x5ab3a0]
movdqa xmm3, xmmword [0x5ab3e0]
movdqa xmm5, xmmword [0x5ab410]
movdqa xmm4, xmmword [0x5ab420]
movdqa xmm7, xmmword [0x5ab450]
punpcklbw xmm0, xmm1
movdqa xmm1, xmmword [0x5ab3b0]
psubw xmm2, xmm0
psubw xmm3, xmm0
psubw xmm5, xmm0
paddw xmm4, xmm0
paddw xmm7, xmm0
paddw xmm1, xmm0
pand xmm1, xmm2
movdqa xmm2, xmmword [0x5ab3d0]
psrlw xmm1, 8
pand xmm1, xmmword [0x5ab3c0]
paddw xmm2, xmm0
pand xmm3, xmm2
movdqa xmm2, xmmword [0x5ab3f0]
psraw xmm3, 8
paddw xmm2, xmm0
pand xmm2, xmm3
movdqa xmm3, xmmword [0x5ab400]
paddw xmm3, xmm0
pand xmm5, xmm3
movdqa xmm3, xmmword [0x5ab440]
psraw xmm5, 8
pand xmm4, xmm5
movdqa xmm5, xmmword [0x5ab430]
movdqa xmm6, xmm3
psubw xmm6, xmm0
paddw xmm5, xmm0
pand xmm6, xmm5
psraw xmm6, 8
pand xmm7, xmm6
paddw xmm7, xmm4
paddw xmm7, xmm2
pcmpeqd xmm2, xmm2
paddw xmm2, xmm7
paddw xmm2, xmm1
movdqa xmm1, xmmword [str.....]
movd eax, xmm2
shl eax, 2
psubw xmm1, xmm0
paddw xmm0, xmmword [0x5ab470]
pand xmm0, xmm1
psrlw xmm0, 8
pand xmm0, xmm3
paddw xmm0, xmm2
pextrw ecx, xmm0, 1
pshufd xmm1, xmm0, 0x55
shr ecx, 4
por xmm1, xmm0
or ecx, eax
pextrw eax, xmm2, 1
mov byte [ebp - 0x27], cl
pextrw ecx, xmm0, 2
shl eax, 4
shr ecx, 2
or ecx, eax
pextrw eax, xmm2, 2
movdqa xmm2, xmm1
psrld xmm2, 0x10
mov byte [ebp - 0x26], cl
shl eax, 6
pextrw ecx, xmm0, 3
por xmm2, xmm1
or ecx, eax
xor eax, eax
movd esi, xmm2
mov byte [ebp - 0x25], cl
shr esi, 8
and esi, 1
cmp edi, 1
mov edi, dword [ebp - 0x14]
sete al
or edi, eax
lea eax, [ebp - 0x27]
push dword [ebp - 0x30]
push eax
push dword [ebp - 0x2c]
call sub.msvcrt.dll_memcpy
add esp, 0xc
or di, si
je 0x46c4ea
mov eax, dword [ebp - 0x1c]
mov byte [eax + 4], 0
mov dword [eax], 0
jmp 0x46cdca
mov ecx, dword [ebp - 0x38]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov eax, ecx
or eax, edi
mov eax, dword [ebp - 0x1c]
je 0x46cdc5
mov eax, edi
mov ebx, dword [ebp + 8]
xor esi, esi
mov ecx, edi
sub eax, 1
cmovb eax, esi
and eax, 0xfffffffc
add ebx, eax
sub ecx, eax
cmovb ecx, esi
mov edx, ecx
and edx, 1
cmp eax, edi
cmovbe edx, ecx
cmova ebx, esi
jbe 0x46c530
and dl, 1
jmp 0x46c5b5
mov esi, dword [ebp - 0x38]
xor edi, edi
mov ecx, 0xaaaaaaab
mov dword [ebp - 0x14], edx
mov eax, esi
sub eax, 1
cmovb eax, edi
mul ecx
mov ecx, esi
shr edx, 1
lea eax, [edx + edx*2]
mov edx, 0
sub ecx, eax
cmovb ecx, edi
mov edi, ecx
and edi, 1
cmp eax, esi
cmovbe edi, ecx
mov ecx, edi
mov edi, dword [ebp + 0x10]
lea eax, [edi + eax]
cmovbe edx, eax
jbe 0x46c576
and cl, 1
mov edx, ecx
jmp 0x46c5b5
cmp ecx, 0x3fffffff
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x10], 0
ja 0x46c5b3
mov esi, eax
mov edi, ecx
lea eax, [ecx*4]
mov ecx, 0xaaaaaaab
mul ecx
imul eax, edi, 0xaaaaaaac
xor ecx, ecx
shr edx, 1
cmp eax, 0x55555556
setae cl
add ecx, edx
cmp ecx, 4
jbe 0x46c5c6
mov dl, 1
mov eax, dword [ebp - 0x1c]
mov byte [eax + 4], dl
mov dword [eax], 0
jmp 0x46cdca
mov eax, edi
mov edx, 0xaaaaaaab
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x30], ecx
mul edx
shr edx, 1
xor eax, eax
lea ebx, [edx + edx*2]
sub edi, ebx
add dword [ebp - 0x34], ebx
cmp ecx, 4
cmovne eax, ecx
mov dword [ebp - 0x4c], edi
sub ecx, eax
mov dword [ebp - 0x2c], eax
cmp ebx, 3
lea eax, [ebp + ecx - 0x10]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x3c], eax
jb 0x46cb8f
mov edx, dword [ebp - 0x24]
mov eax, 3
mov ecx, esi
mov esi, dword [ebp - 0x30]
cmp edx, 3
cmovb eax, edx
mov edx, 0xaaaaaaab
add eax, dword [ebp - 0x2c]
sub esi, eax
lea eax, [ebx - 3]
mul edx
add esi, 3
shr esi, 2
shr edx, 1
cmp esi, edx
cmovb edx, esi
cmp edx, 8
jae 0x46c641
lea eax, [ebp - 0x10]
mov dword [ebp - 0x18], eax
jmp 0x46ca8d
lea eax, [edx + 1]
mov edi, 8
not edx
mov esi, eax
and esi, 7
cmovne edi, esi
sub eax, edi
add edx, edi
lea edi, [ebp - 0x10]
lea esi, [eax*4]
sub dword [ebp - 0x24], esi
lea esi, [eax + eax*2]
lea eax, [ebp + eax*4 - 0x10]
sub ebx, esi
add esi, ecx
mov dword [ebp - 0x18], eax
movdqu xmm0, xmmword [ecx]
movdqa xmm5, xmmword [0x5ab480]
movq xmm2, qword [ecx + 0x10]
pxor xmm1, xmm1
add ecx, 0x18
movdqa xmm3, xmm5
movdqa xmm4, xmm0
movdqa xmm6, xmm0
movdqa xmm7, xmm0
pand xmm4, xmm5
pandn xmm3, xmm2
punpckhbw xmm6, xmm1
movdqa xmm5, xmmword [0x5ab4a0]
por xmm4, xmm3
movdqa xmm3, xmmword [0x5ab490]
punpcklbw xmm4, xmm1
pand xmm7, xmm5
pand xmm4, xmm3
pandn xmm3, xmm6
por xmm3, xmm4
pshufd xmm3, xmm3, 0xd8
pshufhw xmm3, xmm3, 0x6c
pshufd xmm3, xmm3, 0x6c
pshuflw xmm3, xmm3, 0x6c
pshufhw xmm4, xmm3, 0xc6
movdqa xmm3, xmm5
movdqa xmm5, xmmword [0x5ab4c0]
pandn xmm3, xmm2
packuswb xmm4, xmm4
por xmm7, xmm3
movdqa xmm3, xmmword [0x5ab4b0]
punpcklbw xmm4, xmm1
punpcklbw xmm7, xmm1
pand xmm7, xmm3
pandn xmm3, xmm6
por xmm3, xmm7
movdqa xmm7, xmm5
pshuflw xmm3, xmm3, 0xc6
pandn xmm7, xmm2
movdqa xmm2, xmmword [0x5ab4d0]
pshufhw xmm3, xmm3, 0xc6
pshufd xmm3, xmm3, 0x6c
pshuflw xmm3, xmm3, 0x39
pshufhw xmm3, xmm3, 0x39
packuswb xmm3, xmm3
pand xmm0, xmm5
movdqa xmm5, xmmword [0x5ab4f0]
por xmm0, xmm7
movdqa xmm7, xmmword [0x5ab510]
punpcklbw xmm3, xmm1
punpcklbw xmm0, xmm1
pand xmm0, xmm2
pandn xmm2, xmm6
movdqa xmm6, xmm4
psllw xmm4, 4
por xmm2, xmm0
psrlw xmm6, 2
pand xmm4, xmmword [0x5ab570]
pshufd xmm0, xmm2, 0x27
movdqa xmm2, xmmword [0x5ab4e0]
pshufhw xmm0, xmm0, 0x6c
pshufd xmm0, xmm0, 0x27
pshuflw xmm0, xmm0, 0xc6
psubw xmm2, xmm6
pshufhw xmm0, xmm0, 0xc6
psrlw xmm2, 8
packuswb xmm0, xmm0
pand xmm2, xmm5
movdqa xmm5, xmmword [0x5ab500]
punpcklbw xmm0, xmm1
movdqa xmm1, xmmword [0x5ab530]
psubw xmm5, xmm6
psrlw xmm5, 8
pand xmm5, xmm7
movdqa xmm7, xmmword [str.33333333]
psubw xmm7, xmm6
psrlw xmm7, 8
pand xmm7, xmm1
movdqa xmm1, xmmword [0x5ab550]
paddw xmm7, xmm5
movdqa xmm5, xmmword [0x5ab540]
psubw xmm5, xmm6
psrlw xmm5, 8
pand xmm5, xmm1
movdqa xmm1, xmmword [str.AAAAAAAA00000000]
paddw xmm5, xmm6
movdqa xmm6, xmm3
psllw xmm3, 2
paddw xmm5, xmm7
movdqa xmm7, xmmword [str.33333333]
psrlw xmm6, 4
pand xmm3, xmmword [str.________________]
por xmm6, xmm4
movdqa xmm4, xmmword [0x5ab4e0]
paddw xmm2, xmm1
paddw xmm2, xmm5
movdqa xmm5, xmmword [0x5ab500]
psubw xmm7, xmm6
psrlw xmm7, 8
psubw xmm4, xmm6
pand xmm7, xmmword [0x5ab530]
psrlw xmm4, 8
psubw xmm5, xmm6
pand xmm4, xmmword [0x5ab4f0]
psrlw xmm5, 8
pand xmm5, xmmword [0x5ab510]
paddw xmm4, xmm1
movdqa xmm1, xmmword [0x5ab580]
paddw xmm7, xmm5
movdqa xmm5, xmmword [0x5ab540]
psubw xmm5, xmm6
psrlw xmm5, 8
pand xmm5, xmmword [0x5ab550]
paddw xmm5, xmm6
movdqa xmm6, xmm0
pand xmm0, xmmword [0x5ab5a0]
psrlw xmm6, 6
paddw xmm5, xmm7
movdqa xmm7, xmmword [0x5ab510]
por xmm6, xmm3
movdqa xmm3, xmmword [0x5ab4e0]
paddw xmm4, xmm5
movdqa xmm5, xmmword [0x5ab4f0]
pand xmm4, xmm1
movdqa xmm1, xmmword [0x5ab530]
psubw xmm3, xmm6
psrlw xmm3, 8
pand xmm3, xmm5
movdqa xmm5, xmmword [0x5ab500]
psubw xmm5, xmm6
psrlw xmm5, 8
pand xmm5, xmm7
movdqa xmm7, xmmword [str.33333333]
psubw xmm7, xmm6
psrlw xmm7, 8
pand xmm7, xmm1
movdqa xmm1, xmmword [0x5ab550]
paddw xmm7, xmm5
movdqa xmm5, xmmword [0x5ab540]
psubw xmm5, xmm6
psrlw xmm5, 8
pand xmm5, xmm1
movdqa xmm1, xmmword [str.AAAAAAAA00000000]
paddw xmm5, xmm6
movdqa xmm6, xmmword [0x5ab4e0]
paddw xmm5, xmm7
movdqa xmm7, xmmword [str.33333333]
paddw xmm3, xmm1
paddw xmm3, xmm5
movdqa xmm5, xmmword [0x5ab500]
psubw xmm6, xmm0
psubw xmm7, xmm0
psrlw xmm6, 8
psrlw xmm7, 8
pand xmm6, xmmword [0x5ab4f0]
pand xmm7, xmmword [0x5ab530]
psubw xmm5, xmm0
psrlw xmm5, 8
pand xmm5, xmmword [0x5ab510]
paddw xmm6, xmm1
movdqa xmm1, xmmword [0x5ab5b0]
paddw xmm7, xmm5
movdqa xmm5, xmmword [0x5ab540]
psubw xmm5, xmm0
psrlw xmm5, 8
pand xmm5, xmmword [0x5ab550]
paddw xmm5, xmm0
movdqa xmm0, xmmword [0x5ab580]
paddw xmm5, xmm7
paddw xmm6, xmm5
pand xmm3, xmm0
movdqa xmm7, xmm0
pand xmm6, xmm0
movdqa xmm0, xmm3
pand xmm2, xmm7
punpckhwd xmm3, xmm6
punpcklwd xmm0, xmm6
movdqa xmm6, xmm1
pshufd xmm5, xmm0, 0xfa
pshufd xmm0, xmm0, 0x50
packuswb xmm0, xmm5
movdqa xmm5, xmm1
pandn xmm5, xmm0
movdqa xmm0, xmm2
punpckhwd xmm2, xmm4
punpcklwd xmm0, xmm4
pshufd xmm4, xmm2, 0xf6
pshufd xmm2, xmm2, 0xd4
pshufd xmm7, xmm0, 0xf6
pshufd xmm0, xmm0, 0xd4
packuswb xmm2, xmm4
packuswb xmm0, xmm7
pshufd xmm7, xmm3, 0xfa
pshufd xmm3, xmm3, 0x50
pand xmm2, xmm1
packuswb xmm3, xmm7
pand xmm0, xmm1
pandn xmm6, xmm3
por xmm0, xmm5
por xmm2, xmm6
movdqu xmmword [edi], xmm0
movdqu xmmword [edi + 0x10], xmm2
add edi, 0x20
add edx, 8
jne 0x46c672
mov ecx, esi
movdqa xmm5, xmmword [0x5ab620]
movdqa xmm7, xmmword [0x5ab630]
movdqa xmm1, xmmword [str.AAAA]
movdqa xmm0, xmmword [0x5ab580]
sub dword [ebp - 0x24], 4
jb 0x46cb8f
movzx edi, byte [ecx]
movzx esi, byte [ecx + 1]
movzx eax, byte [ecx + 2]
mov dword [ebp - 0x40], ebx
movdqa xmm6, xmmword [0x5ab5e0]
movdqa xmm4, xmmword [str.3333]
movdqa xmm2, xmmword [0x5ab5c0]
add ecx, 3
mov edx, edi
mov ebx, esi
shl edi, 4
and esi, 0xf
and edi, 0x30
shr ebx, 4
shr edx, 2
or ebx, edi
mov edi, eax
movd xmm3, edx
and eax, 0x3f
shr edi, 6
pinsrw xmm3, ebx, 1
mov ebx, dword [ebp - 0x40]
lea esi, [edi + esi*4]
pinsrw xmm3, esi, 2
pinsrw xmm3, eax, 3
mov eax, dword [ebp - 0x18]
psubw xmm6, xmm3
psubw xmm4, xmm3
psubw xmm2, xmm3
add ebx, 0xfffffffd
psrlw xmm6, 8
psrlw xmm4, 8
psrlw xmm2, 8
cmp ebx, 2
pand xmm6, xmmword [0x5ab5f0]
pand xmm4, xmmword [0x5ab610]
pand xmm2, xmmword [0x5ab5d0]
paddw xmm4, xmm6
movdqa xmm6, xmm5
psubw xmm6, xmm3
psrlw xmm6, 8
pand xmm6, xmm7
paddw xmm6, xmm3
paddw xmm6, xmm4
paddw xmm6, xmm2
paddw xmm6, xmm1
pand xmm6, xmm0
packuswb xmm6, xmm6
movd dword [eax], xmm6
lea eax, [eax + 4]
mov dword [ebp - 0x18], eax
ja 0x46caad
mov esi, dword [ebp - 0x4c]
mov eax, esi
lea ecx, [ebp + esi - 0x1f]
xor eax, 3
push eax
push 0
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x1f]
push esi
push dword [ebp - 0x34]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx edi, byte [ebp - 0x1f]
movzx edx, byte [ebp - 0x1e]
movzx eax, byte [ebp - 0x1d]
movdqa xmm3, xmmword [0x5ab5e0]
movdqa xmm2, xmmword [str.3333]
movdqa xmm4, xmmword [0x5ab620]
movdqa xmm1, xmmword [0x5ab5c0]
mov ecx, edi
mov esi, edx
shl edi, 4
mov ebx, eax
and edx, 0xf
and eax, 0x3f
shr ecx, 2
and edi, 0x30
shr esi, 4
shr ebx, 6
or esi, edi
movd xmm0, ecx
lea edx, [ebx + edx*4]
pinsrw xmm0, esi, 1
pinsrw xmm0, edx, 2
pinsrw xmm0, eax, 3
lea eax, [ebp - 0x50]
psubw xmm3, xmm0
psubw xmm2, xmm0
psubw xmm4, xmm0
psubw xmm1, xmm0
psrlw xmm3, 8
psrlw xmm2, 8
psrlw xmm4, 8
psrlw xmm1, 8
pand xmm4, xmmword [0x5ab630]
pand xmm3, xmmword [0x5ab5f0]
pand xmm2, xmmword [0x5ab610]
pand xmm1, xmmword [0x5ab5d0]
paddw xmm2, xmm3
paddw xmm4, xmm0
paddw xmm4, xmm2
paddw xmm4, xmm1
paddw xmm4, xmmword [str.AAAA]
pand xmm4, xmmword [0x5ab580]
packuswb xmm4, xmm4
movd dword [ebp - 0x50], xmm4
push dword [ebp - 0x2c]
push eax
push dword [ebp - 0x3c]
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp + 0x10]
cmp eax, edx
cmovb edx, eax
mov eax, dword [ebp - 0x1c]
test edx, edx
je 0x46cdc2
mov ebx, dword [ebp - 0x48]
mov edi, eax
xor ecx, ecx
cmp edx, 8
mov eax, 0
mov esi, edx
jb 0x46cda1
xor ecx, ecx
cmp edx, 0x20
jb 0x46cd48
mov eax, edx
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
and eax, 0x7fffffe0
movdqu xmm2, xmmword [ebp + ecx - 0x10]
movdqu xmm4, xmmword [ebx + ecx]
movdqu xmm3, xmmword [ebp + ecx]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm4, xmmword [ebx + ecx + 0x10]
add ecx, 0x20
cmp eax, ecx
pxor xmm4, xmm3
por xmm1, xmm4
jne 0x46ccdd
por xmm1, xmm0
cmp edx, eax
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd ecx, xmm1
je 0x46cdb2
test dl, 0x18
je 0x46cda1
mov dword [ebp - 0x14], edx
mov edx, eax
movzx ecx, cl
mov eax, dword [ebp - 0x14]
movd xmm0, ecx
and eax, 0x7ffffff8
movq xmm1, qword [ebp + edx - 0x10]
movq xmm2, qword [ebx + edx]
add edx, 8
cmp eax, edx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x46cd5c
pshufd xmm1, xmm0, 0x55
mov edx, esi
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd ecx, xmm1
jmp 0x46cdae
movzx edx, byte [ebx + eax]
xor dl, byte [ebp + eax - 0x10]
inc eax
or cl, dl
mov edx, esi
cmp esi, eax
jne 0x46cda1
mov esi, dword [ebp + 0x10]
test cl, cl
mov eax, edi
je 0x46cdc2
xor edx, edx
jmp 0x46c5b8
mov ecx, dword [ebp - 0x38]
mov dword [eax], esi
mov dword [eax + 4], ecx
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret