Function at 0x427550
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x6c
mov eax, dword [0x4a100c]
xor eax, esp
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [eax + 8]
push edi
mov edi, dword [eax + 0x10]
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x13], 1
mov dword [ebx + 0x10], 0
cmp edi, 1
jb 0x4278db
mov al, byte [ecx + 0x12]
mov byte [esp + 0x12], al
test al, al
je 0x4275a9
mov dl, byte [esi]
inc esi
shr dl, 7
mov byte [esp + 0x13], dl
test dl, dl
jne 0x4275a9
xor edx, edx
jmp 0x4275b3
movzx edx, byte [ecx + 0x11]
movzx eax, byte [ecx + 0x10]
add edx, eax
xor eax, eax
cmp byte [esp + 0x12], al
setne al
add eax, edx
cmp eax, edi
ja 0x4278db
sub edi, eax
mov dword [esp + 0x30], edi
cmp edi, dword [ebx + 0xc]
jbe 0x4275e3
cmp byte [ebx + 4], 0
je 0x4275e6
push edi
mov ecx, ebx
call fcn.00421500
test eax, eax
jne 0x4275e6
mov dword [ebx + 0x10], edi
cmp byte [esp + 0x13], 0
mov ebx, dword [ebx + 8]
mov dword [esp + 0x14], ebx
je 0x4278ba
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], esi
mov cl, byte [eax + 0x10]
movzx edx, byte [eax + 0x11]
mov byte [esp + 0x12], cl
movzx ecx, cl
add esi, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], esi
cmp edx, 4
jbe 0x42762c
lea eax, [edx - 4]
add esi, eax
mov dword [esp + 0x24], esi
dec edx
sub eax, 1
jne 0x427626
xor ecx, ecx
test edx, edx
je 0x42765f
movzx eax, byte [esi]
inc esi
shl ecx, 8
or ecx, eax
sub edx, 1
jne 0x427632
mov dword [esp + 0x24], esi
test ecx, ecx
je 0x42765f
lea eax, [edx - 0x12]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.0047179f
mov esp, ebp
pop ebp
ret 0x20
cmp byte [esp + 0x12], 8
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov eax, dword [ecx + 8]
mov dword [esp + 0x54], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x58], eax
ja 0x4276a0
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x44]
push ecx
push dword [esp + 0x1c]
sub eax, ecx
push eax
call fcn.00474f39
add esp, 0xc
lea ecx, [esp + 0x3c]
call fcn.0043de00
mov ecx, eax
mov eax, edx
mov dword [esp + 0x18], ecx
and ecx, 0xf
or ecx, 0
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x18]
je 0x427867
shrd ecx, eax, 4
shr eax, 4
push eax
push ecx
lea ecx, [esp + 0x64]
call fcn.0043de80
mov ebx, dword [esp + 0x24]
lea edx, [esp + 0x5c]
add esp, 8
mov ecx, dword [ebx + 4]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, dword [ebx + 4]
lea edx, [esp + 0x64]
push 0
push 0
push edx
mov dword [esp + 0x50], 0
lea edx, [esp + 0x50]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov eax, dword [ecx]
push 0x10
push edx
call dword [eax + 8]
mov eax, dword [esp + 0x18]
mov ebx, edi
and eax, 0xf
cmp eax, edi
mov dword [esp + 0x20], eax
cmovbe ebx, eax
xor eax, eax
mov dword [esp + 0x2c], ebx
test ebx, ebx
je 0x42784e
mov edx, dword [esp + 0x14]
cmp ebx, 0x40
jb 0x42781a
lea ecx, [esi - 1]
add ecx, ebx
cmp edx, ecx
ja 0x427766
lea ecx, [edx - 1]
add ecx, ebx
cmp ecx, esi
jae 0x42781a
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x64]
add edx, ecx
dec ecx
mov dword [esp + 0x28], edx
add ecx, ebx
lea edx, [esp + 0x64]
add ecx, edx
mov edx, dword [esp + 0x14]
cmp edx, ecx
ja 0x427794
lea ecx, [edx - 1]
add ecx, ebx
cmp ecx, dword [esp + 0x28]
jae 0x42781a
mov ecx, ebx
mov ebx, esi
and ecx, 0xffffffc0
sub ebx, edx
mov dword [esp + 0x38], ecx
mov ecx, edx
lea edx, [esp + 0x74]
mov dword [esp + 0x34], ebx
add edx, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x28], edx
mov edx, ecx
mov ebx, dword [esp + 0x28]
nop dword [eax]
movups xmm0, xmmword [ecx + edi]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [ebx + eax - 0x10]
pxor xmm1, xmm0
movups xmm0, xmmword [ebx + eax]
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [esi + eax + 0x10]
pxor xmm1, xmm0
movups xmm0, xmmword [ebx + eax + 0x10]
movups xmmword [ecx - 0x30], xmm1
movups xmm1, xmmword [esi + eax + 0x20]
pxor xmm1, xmm0
movups xmm0, xmmword [ebx + eax + 0x20]
movups xmmword [ecx - 0x20], xmm1
movups xmm1, xmmword [esi + eax + 0x30]
add eax, 0x40
pxor xmm1, xmm0
movups xmmword [ecx - 0x10], xmm1
cmp eax, dword [esp + 0x38]
jb 0x4277c0
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
cmp eax, ebx
jae 0x42784e
mov ecx, esi
add edx, eax
sub ecx, dword [esp + 0x14]
lea esi, [esp + 0x64]
add esi, dword [esp + 0x20]
mov edi, ecx
mov dword [esp + 0x2c], ecx
mov cl, byte [esi + eax]
lea edx, [edx + 1]
xor cl, byte [edx + edi - 1]
inc eax
mov byte [edx - 1], cl
cmp eax, ebx
jb 0x427834
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
add dword [esp + 0x14], ebx
add esi, ebx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x3c]
add ecx, ebx
adc eax, 0
sub edi, ebx
mov ebx, dword [esp + 0x14]
test edi, edi
je 0x4278c5
shrd ecx, eax, 4
shr eax, 4
push eax
push ecx
lea ecx, [esp + 0x64]
call fcn.0043de80
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x5c]
add esp, 8
mov ecx, dword [ecx + 4]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov eax, dword [esp + 0x1c]
push 0
push 0
push ebx
mov ecx, dword [eax + 4]
push edi
push esi
mov eax, dword [ecx]
call dword [eax + 8]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.0047179f
mov esp, ebp
pop ebp
ret 0x20
push edi
push esi
push ebx
call fcn.00474f39
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.0047179f
mov esp, ebp
pop ebp
ret 0x20
mov ecx, dword [esp + 0x74]
mov eax, 0xfffffff6
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0047179f
mov esp, ebp
pop ebp
ret 0x20