Function at 0x47bab0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [ecx + 0xc]
mov eax, ecx
mov dword [esp], edx
mov edx, dword [esp + 0x38]
mov esi, 0xffffffff
mov edi, 0xffffffff
mov ecx, ebx
shl cl, 3
shl esi, cl
cmp ebx, 3
mov ecx, 0xf
not esi
cmova esi, edi
sub ecx, ebx
cmp ecx, edx
jne 0x47be5e
mov ebp, dword [esp + 0x44]
cmp esi, ebp
jb 0x47be5e
mov ecx, dword [eax]
mov eax, dword [eax + 8]
lea esi, [ebx - 1]
mov edi, dword [esp]
lea eax, [eax*4 + 0xf8]
mov dword [edi + 0x15], 0
mov dword [esp + 8], ecx
mov dword [edi + 5], 0
mov dword [edi + 1], 0
mov dword [edi + 0xd], 0
mov dword [edi + 9], 0
mov dword [edi + 0x11], 0
mov dword [edi + 0x1c], 0
mov dword [edi + 0x18], 0
and eax, 0xf8
or eax, esi
cmp dword [esp + 0x40], 0
je 0x47bb55
or al, 0x40
mov ecx, dword [esp]
test edx, edx
mov byte [ecx], al
je 0x47bb6f
lea eax, [ecx + 1]
push edx
push dword [esp + 0x38]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
test ebx, ebx
je 0x47bc9d
xor ecx, ecx
cmp ebx, 3
jbe 0x47bc70
movd xmm1, ebp
mov eax, dword [esp]
movdqa xmm0, xmmword [0x51f200]
movapd xmm5, xmmword [0x51f230]
mov ecx, ebx
mov edx, 3
pshufd xmm6, xmm1, 0x44
and ecx, 0xfffffffc
movd xmm3, edx
pand xmm6, xmmword [0x51f210]
mov edx, ecx
lea eax, [eax + 0xe]
nop dword [eax]
movdqa xmm7, xmm0
movdqa xmm1, xmmword [0x51f210]
xorps xmm2, xmm2
psllq xmm7, xmm3
movdqa xmm4, xmm7
paddq xmm7, xmmword [0x51f220]
pand xmm4, xmm1
pand xmm7, xmm1
movdqa xmm1, xmm6
psrlq xmm1, xmm4
pshufd xmm4, xmm4, 0x4e
movss xmm2, xmm4
movdqa xmm4, xmm6
psrlq xmm4, xmm2
pshufd xmm2, xmm7, 0x4e
movsd xmm4, xmm1
movdqa xmm1, xmm6
psrlq xmm1, xmm7
pxor xmm7, xmm7
andpd xmm4, xmm5
movss xmm7, xmm2
movdqa xmm2, xmm6
psrlq xmm2, xmm7
movsd xmm2, xmm1
pshufd xmm1, xmm4, 0xe8
pshuflw xmm1, xmm1, 0xe2
andpd xmm2, xmm5
packuswb xmm1, xmm0
movd esi, xmm1
pshufd xmm1, xmm2, 0xe8
pshuflw xmm1, xmm1, 0xe2
mov word [eax], si
packuswb xmm1, xmm0
paddq xmm0, xmmword [0x51f240]
movd edi, xmm1
mov word [eax - 2], di
add eax, 0xfffffffc
add edx, 0xfffffffc
jne 0x47bbc0
cmp ebx, ecx
je 0x47bc9d
mov edx, dword [esp]
mov eax, 7
sub ebx, ecx
sub eax, ecx
shl ecx, 3
lea eax, [edx + eax + 8]
nop word cs:[eax + eax]
nop dword [eax]
mov edx, ebp
shr edx, cl
add ecx, 8
mov byte [eax], dl
dec eax
dec ebx
jne 0x47bc90
mov eax, dword [esp]
lea esi, [eax + 0x10]
push dword [esp + 0x30]
push esi
push eax
call dword [esp + 0x14]
add esp, 0xc
mov ebx, dword [esp + 0x40]
test ebx, ebx
je 0x47bccc
cmp ebx, 0xfeff
ja 0x47bcd6
xor byte [esi], bh
lea edx, [esi + 1]
mov eax, 2
jmp 0x47bcf7
mov eax, 0xfffffffe
jmp 0x47be56
mov eax, ebx
not byte [esi]
xor byte [esi + 1], 0xfe
lea edx, [esi + 5]
shr eax, 0x18
xor byte [esi + 2], al
mov eax, ebx
shr eax, 0x10
xor byte [esi + 3], al
xor byte [esi + 4], bh
mov eax, 6
xor byte [edx], bl
mov ecx, dword [esp + 0x3c]
mov dword [esp + 4], esi
mov edx, dword [esp]
lea edx, [edx + 0x20]
mov dword [esp + 0x10], edx
mov edx, 1
test ebx, ebx
je 0x47be3c
mov esi, ebx
mov dword [esp + 0x18], edx
lea edx, [eax - 0x10]
neg esi
mov ebp, edx
cmp edx, esi
cmovb ebp, esi
neg ebp
cmp ebp, 0x1f
ja 0x47bd40
mov edi, dword [esp + 4]
jmp 0x47bd62
mov edi, dword [esp + 4]
cmp edx, esi
cmovb edx, esi
mov esi, ecx
sub esi, edx
lea edi, [edi + eax]
cmp edi, esi
mov edi, dword [esp + 4]
jae 0x47bdd0
mov esi, eax
sub esi, edx
add esi, edi
cmp ecx, esi
jae 0x47bdd0
mov esi, ecx
mov ebp, ebx
lea ecx, [edi + eax]
inc eax
lea edx, [ebp - 1]
xor edi, edi
mov dword [esp + 0xc], ebp
nop word cs:[eax + eax]
nop dword [eax]
movzx ebx, byte [esi + edi]
lea ebp, [edi + 1]
xor byte [ecx + edi], bl
cmp edx, edi
setne bl
je 0x47bd9a
add edi, eax
cmp edi, 0x10
mov edi, ebp
jb 0x47bd80
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 4]
add esi, ebp
sub eax, ebp
mov ebp, eax
push dword [esp + 0x30]
push edi
push edi
call dword [esp + 0x14]
add esp, 0xc
mov edi, dword [esp + 0x18]
xor eax, eax
test bl, bl
mov ebx, ebp
mov ebp, dword [esp + 0x44]
mov ecx, esi
lea edx, [edi + 1]
jne 0x47bd10
jmp 0x47be4f
mov edi, dword [esp + 0x10]
mov edx, ebp
mov dword [esp + 0x14], ebx
and edx, 0xffffffe0
sub ebx, edx
lea esi, [ecx + edx]
mov dword [esp + 0xc], ebx
lea ebx, [edi + eax]
add eax, edx
xor edi, edi
nop dword [eax]
movdqu xmm0, xmmword [ecx + edi]
movdqu xmm2, xmmword [ebx + edi - 0x10]
movdqu xmm1, xmmword [ecx + edi + 0x10]
movdqu xmm3, xmmword [ebx + edi]
pxor xmm2, xmm0
pxor xmm3, xmm1
movdqu xmmword [ebx + edi - 0x10], xmm2
movdqu xmmword [ebx + edi], xmm3
add edi, 0x20
cmp edx, edi
jne 0x47bdf0
cmp dword [esp + 0x14], edi
mov edi, dword [esp + 4]
setne bl
cmp edx, ebp
mov ebp, dword [esp + 0xc]
je 0x47bda8
jmp 0x47bd66
push dword [esp + 0x30]
mov eax, dword [esp + 8]
push eax
push eax
mov edi, edx
call dword [esp + 0x14]
add esp, 0xc
mov eax, 0xfffffffe
sub eax, edi
mov ecx, dword [esp]
cmp ebp, 0xfffffff0
jbe 0x47be68
xor eax, eax
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
add ebp, 0xf
shr ebp, 3
or ebp, 1
cmp ebp, eax
mov eax, 0
ja 0x47be60
and byte [ecx], 7
mov eax, 1
jmp 0x47be60