Function at 0x455f90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
cmp dword [esp + 0x6c], 0
je 0x45602a
cmp ecx, 0x10
jb 0x4560d2
mov eax, edi
mov edi, ecx
mov esi, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ecx, dword [eax]
xor ecx, dword [ebp]
mov dword [ebx], ecx
mov ecx, dword [eax + 4]
xor ecx, dword [ebp + 4]
mov dword [ebx + 4], ecx
mov ecx, dword [eax + 8]
xor ecx, dword [ebp + 8]
mov dword [ebx + 8], ecx
mov eax, dword [eax + 0xc]
xor eax, dword [ebp + 0xc]
mov dword [ebx + 0xc], eax
push edx
push ebx
push ebx
call fcn.00455180
mov edx, dword [esp + 0x70]
add esp, 0xc
add esi, 0xfffffff0
add ebp, 0x10
mov eax, ebx
lea ebx, [ebx + 0x10]
cmp esi, 0xf
ja 0x455fd0
mov ecx, edi
mov edi, dword [esp + 0x68]
lea eax, [ebx - 0x10]
and ecx, 0xf
test ecx, ecx
jne 0x4560dc
jmp 0x456314
cmp ebp, 0x20
jb 0x45632e
cmp ebp, ebx
jb 0x456336
lea eax, [ebp - 0x20]
cmp eax, ebx
jae 0x456336
cmp ecx, 0x10
jb 0x45639b
mov esi, edi
mov edi, ecx
nop word cs:[eax + eax]
nop dword [eax]
push edx
lea eax, [esp + 0x38]
push eax
push ebp
call fcn.00455570
mov edx, dword [esp + 0x70]
add esp, 0xc
mov ecx, dword [esi]
mov eax, dword [ebp]
add edi, 0xfffffff0
xor ecx, dword [esp + 0x34]
mov dword [ebx], ecx
mov dword [esi], eax
mov ecx, dword [esi + 4]
mov eax, dword [ebp + 4]
xor ecx, dword [esp + 0x38]
mov dword [ebx + 4], ecx
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov eax, dword [ebp + 8]
xor ecx, dword [esp + 0x3c]
mov dword [ebx + 8], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [ebp + 0xc]
add ebp, 0x10
xor ecx, dword [esp + 0x40]
mov dword [ebx + 0xc], ecx
add ebx, 0x10
cmp edi, 0xf
mov dword [esi + 0xc], eax
ja 0x456060
mov ecx, dword [esp + 0x60]
and ecx, 0xf
test ecx, ecx
jne 0x45639f
jmp 0x456326
mov eax, edi
test ecx, ecx
je 0x456314
xor esi, esi
mov dword [esp + 0x2c], ebp
mov edi, ebp
mov dword [esp + 0x20], ebx
mov ebp, ebx
mov ebx, ecx
mov dword [esp + 0x30], ecx
jmp 0x456110
mov ecx, dword [esp + 0x30]
mov eax, ebp
add ebx, 0xfffffff0
add edi, 0x10
inc esi
lea ebp, [ebp + 0x10]
cmp ebx, 1
mov edx, 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], esi
cmova edx, ebx
mov ebx, 0xfffffff0
neg edx
cmp edx, 0xfffffff0
cmovbe edx, ebx
mov ebx, esi
mov esi, dword [esp + 0x20]
shl ebx, 4
sub ecx, ebx
mov dword [esp + 0x1c], ebx
cmp ecx, 1
lea esi, [esi + ebx]
mov ebx, dword [esp + 0x14]
mov dword [esp + 4], esi
mov esi, 1
cmovbe ecx, esi
mov esi, 0xfffffff0
neg ecx
cmp ecx, 0xfffffff0
cmovbe ecx, esi
mov esi, ecx
neg esi
mov dword [esp + 8], esi
cmp esi, 0xf
mov esi, 0
ja 0x456210
nop dword [eax + eax]
movzx ecx, byte [eax + esi]
xor cl, byte [edi + esi]
mov byte [ebp + esi], cl
inc esi
cmp esi, 0x10
setb dl
cmp esi, 0xf
ja 0x45619b
cmp esi, ebx
jb 0x456180
test dl, dl
je 0x4561ec
mov ecx, 0x10
sub ecx, esi
cmp ecx, 0x1f
jbe 0x4561d7
mov edx, dword [esp + 4]
mov dword [esp + 8], ecx
lea ecx, [eax + 0x10]
add edx, esi
cmp edx, ecx
jae 0x4562cc
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
lea ecx, [ecx + edx + 0x10]
lea edx, [eax + esi]
cmp edx, ecx
jae 0x4562cc
mov ecx, esi
add ecx, 0xfffffff0
nop dword [eax]
movzx edx, byte [eax + ecx + 0x10]
mov byte [ebp + ecx + 0x10], dl
inc ecx
jne 0x4561e0
push dword [esp + 0x64]
push ebp
push ebp
call fcn.00455180
add esp, 0xc
mov esi, dword [esp + 0x24]
test esi, esi
jne 0x456100
jmp 0x45630e
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x1c]
sub esi, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], esi
mov esi, dword [esp + 8]
lea ecx, [ecx + ebx]
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + esi]
mov esi, dword [esp + 0x18]
cmp dword [esp + 4], ecx
mov ecx, dword [esp + 8]
setb byte [esp + 3]
cmp dword [esp + 0x10], esi
lea ecx, [eax + ecx]
setb byte [esp + 0x10]
cmp dword [esp + 4], ecx
mov ch, byte [esp + 0x10]
setb cl
cmp eax, esi
mov esi, 0
setb byte [esp + 0x18]
test byte [esp + 3], ch
jne 0x456180
and cl, byte [esp + 0x18]
mov esi, 0
jne 0x456180
mov esi, dword [esp + 8]
neg edx
xor ecx, ecx
and edx, 0xfffffff0
and esi, 0x10
nop word cs:[eax + eax]
nop dword [eax]
movups xmm0, xmmword [edi + ecx]
movups xmm1, xmmword [eax + ecx]
xorps xmm1, xmm0
movups xmmword [ebp + ecx], xmm1
add ecx, 0x10
cmp edx, ecx
jne 0x4562a0
cmp ecx, 0x10
setb dl
cmp esi, dword [esp + 8]
jne 0x456180
jmp 0x45619b
mov edx, dword [esp + 8]
and edx, 0xffffffe0
lea ecx, [esi + edx]
add esi, 0x10
mov dword [esp + 4], edx
nop dword [eax]
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [ebp + esi - 0x10], xmm0
movups xmmword [ebp + esi], xmm1
add esi, 0x20
add edx, 0xffffffe0
jne 0x4562e0
mov edx, dword [esp + 4]
cmp dword [esp + 8], edx
jne 0x4561d9
jmp 0x4561ec
mov edi, dword [esp + 0x68]
mov eax, ebp
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ebp, ebx
jae 0x456046
cmp ecx, 0x10
jb 0x456387
mov esi, ecx
nop dword [eax]
push edx
push ebx
push ebp
call fcn.00455570
mov edx, dword [esp + 0x70]
add esp, 0xc
mov eax, dword [edi]
add esi, 0xfffffff0
xor dword [ebx], eax
mov eax, dword [edi + 4]
xor dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
mov edi, ebp
xor dword [ebx + 0xc], eax
lea eax, [ebp + 0x10]
add ebx, 0x10
cmp esi, 0xf
mov ebp, eax
ja 0x456340
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x68]
lea eax, [ebp - 0x10]
and ecx, 0xf
jmp 0x456389
mov eax, edi
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
test ecx, ecx
je 0x456326
xor eax, eax
mov dword [esp + 0x2c], ebp
mov edi, ebp
mov dword [esp + 0x20], ebx
mov ebp, ebx
mov ebx, ecx
mov dword [esp + 0x30], ecx
jmp 0x4563d2
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x30]
add ebx, 0xfffffff0
add edi, 0x10
add ebp, 0x10
inc eax
cmp ebx, 1
mov esi, 1
mov edx, 0xfffffff0
mov dword [esp + 8], eax
cmova esi, ebx
neg esi
cmp esi, 0xfffffff0
cmovbe esi, edx
shl eax, 4
mov dword [esp + 0x10], esi
mov esi, ecx
mov dword [esp + 4], eax
sub esi, eax
mov eax, 1
cmp esi, 1
cmovbe esi, eax
neg esi
cmp esi, 0xfffffff0
cmovbe esi, edx
mov eax, esi
neg eax
mov dword [esp + 0x14], eax
push dword [esp + 0x64]
lea eax, [esp + 0x38]
push eax
push edi
call fcn.00455570
add esp, 0xc
cmp dword [esp + 0x14], 0x10
mov eax, 0
jb 0x456560
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x68]
lea eax, [eax + edx]
add edx, dword [esp + 0x2c]
sub ecx, esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
sub eax, esi
mov ecx, edx
mov dword [esp + 4], edx
lea edx, [esp + 0x34]
sub edx, esi
sub ecx, esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x68]
cmp esi, dword [esp + 0x24]
setb byte [esp + 3]
cmp eax, edx
mov edx, dword [esp + 4]
seta byte [esp + 0x18]
cmp esi, ecx
setb byte [esp + 0xf]
cmp edx, eax
setb byte [esp + 0xe]
cmp esi, dword [esp + 0x1c]
lea esi, [esp + 0x34]
setb byte [esp + 0x28]
cmp eax, esi
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x24]
seta byte [esp + 0xd]
cmp ecx, esi
seta cl
cmp edx, eax
lea edx, [esp + 0x34]
setb byte [esp + 4]
cmp dword [esp + 0x1c], esi
seta ch
cmp eax, edx
mov al, byte [esp + 0x18]
seta dl
test byte [esp + 3], al
mov eax, 0
jne 0x456560
mov al, byte [esp + 0xe]
and byte [esp + 0xf], al
mov eax, 0
jne 0x456560
mov al, byte [esp + 0xd]
and byte [esp + 0x28], al
mov eax, 0
jne 0x456560
and cl, byte [esp + 4]
mov eax, 0
jne 0x456560
and ch, dl
mov eax, 0
jne 0x456560
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x68]
xor ecx, ecx
neg esi
and eax, 0x10
and esi, 0xfffffff0
nop dword [eax + eax]
movups xmm1, xmmword [esp + ecx + 0x34]
movups xmm2, xmmword [edx + ecx]
movups xmm0, xmmword [edi + ecx]
xorps xmm2, xmm1
movups xmmword [ebp + ecx], xmm2
movups xmmword [edx + ecx], xmm0
add ecx, 0x10
cmp esi, ecx
jne 0x456530
cmp ecx, 0x10
setb cl
cmp eax, dword [esp + 0x14]
je 0x456589
nop dword [eax]
mov edx, dword [esp + 0x68]
movzx ecx, byte [edi + eax]
mov esi, edx
movzx edx, byte [edx + eax]
xor dl, byte [esp + eax + 0x34]
mov byte [ebp + eax], dl
mov byte [esi + eax], cl
inc eax
cmp eax, 0x10
setb cl
cmp eax, 0xf
ja 0x456589
cmp eax, ebx
jb 0x456560
cmp ebx, 0x10
ja 0x4563c0
mov ebp, dword [esp + 0x68]
test cl, cl
je 0x456326
mov edx, 0x10
sub edx, eax
cmp edx, 0x20
jae 0x4565ae
mov ecx, eax
jmp 0x456610
lea ecx, [ebp + eax]
lea esi, [edi + 0x10]
cmp ecx, esi
jae 0x4565c7
lea ecx, [ebp + 0x10]
lea esi, [edi + eax]
cmp esi, ecx
jae 0x4565c7
mov ecx, eax
jmp 0x456610
mov esi, edx
and esi, 0xffffffe0
lea ecx, [eax + esi]
add eax, 0x10
mov ebx, esi
nop word cs:[eax + eax]
nop
movups xmm0, xmmword [edi + eax - 0x10]
movups xmm1, xmmword [edi + eax]
movups xmmword [ebp + eax - 0x10], xmm0
movups xmmword [ebp + eax], xmm1
add eax, 0x20
add ebx, 0xffffffe0
jne 0x4565e0
cmp edx, esi
je 0x456326
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edi + ecx]
mov byte [ebp + ecx], al
inc ecx
cmp ecx, 0x10
jne 0x456610
jmp 0x456326