Function at 0x456910
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x5c]
cmp ebx, 0x20
jb 0x4569cc
cmp ebx, edi
jb 0x4569d4
lea eax, [ebx - 0x20]
cmp eax, edi
jae 0x4569d4
cmp edx, 0x10
jb 0x456a3d
mov ebp, edx
nop word cs:[eax + eax]
nop dword [eax]
push ecx
lea eax, [esp + 0x24]
push eax
push ebx
call dword [esp + 0x78]
add esp, 0xc
mov ecx, dword [esi]
mov eax, dword [ebx]
add ebp, 0xfffffff0
xor ecx, dword [esp + 0x20]
mov dword [edi], ecx
mov dword [esi], eax
mov ecx, dword [esi + 4]
mov eax, dword [ebx + 4]
xor ecx, dword [esp + 0x24]
mov dword [edi + 4], ecx
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov eax, dword [ebx + 8]
xor ecx, dword [esp + 0x28]
mov dword [edi + 8], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [ebx + 0xc]
add ebx, 0x10
xor ecx, dword [esp + 0x2c]
mov dword [edi + 0xc], ecx
mov ecx, dword [esp + 0x64]
add edi, 0x10
cmp ebp, 0xf
mov dword [esi + 0xc], eax
ja 0x456960
mov edx, dword [esp + 0x60]
and edx, 0xf
test edx, edx
jne 0x456a45
jmp 0x456cad
cmp ebx, edi
jae 0x456947
cmp edx, 0x10
jb 0x456a29
mov ebp, edi
mov edi, esi
mov esi, edx
nop
push ecx
push ebp
push ebx
call dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
add esp, 0xc
mov eax, dword [edi]
add esi, 0xfffffff0
xor dword [ebp], eax
mov eax, dword [edi + 4]
xor dword [ebp + 4], eax
mov eax, dword [edi + 8]
xor dword [ebp + 8], eax
mov eax, dword [edi + 0xc]
mov edi, ebx
xor dword [ebp + 0xc], eax
lea eax, [ebx + 0x10]
add ebp, 0x10
cmp esi, 0xf
mov ebx, eax
ja 0x4569e0
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
lea eax, [ebx - 0x10]
mov edi, ebp
and edx, 0xf
jmp 0x456a2b
mov eax, esi
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
test edx, edx
je 0x456cad
mov eax, 0xfffffff0
mov ebp, edx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], edx
sub eax, ebx
mov dword [esp + 0x14], eax
mov eax, ebx
neg eax
mov dword [esp + 0x18], eax
xor eax, eax
jmp 0x456a90
mov eax, dword [esp + 0x40]
add dword [esp + 0x14], 0xfffffff0
add dword [esp + 0x18], 0xfffffff0
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x3c]
add ebp, 0xfffffff0
add ebx, 0x10
add edi, 0x10
inc eax
mov dword [esp + 0x40], eax
shl eax, 4
mov esi, edx
sub esi, eax
mov dword [esp], eax
mov eax, 1
cmp esi, 1
cmovbe esi, eax
mov eax, 0xfffffff0
neg esi
cmp esi, 0xfffffff0
cmovbe esi, eax
mov eax, esi
neg eax
mov dword [esp + 0xc], eax
push ecx
lea eax, [esp + 0x24]
push eax
push ebx
call dword [esp + 0x78]
add esp, 0xc
cmp dword [esp + 0xc], 0x20
mov edx, dword [esp + 0x68]
jb 0x456bd9
mov eax, dword [esp + 0x34]
mov ecx, dword [esp]
lea eax, [eax + ecx]
mov ecx, edx
sub ecx, esi
mov dword [esp + 0x10], eax
sub eax, esi
mov dword [esp + 0x38], ecx
mov ecx, dword [esp]
add ecx, dword [esp + 0x30]
mov dword [esp], ecx
sub ecx, esi
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x20]
sub ecx, esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x10]
cmp ecx, esi
setb byte [esp + 0xb]
cmp eax, edx
seta byte [esp + 0xa]
cmp ecx, dword [esp + 0x1c]
setb byte [esp + 9]
cmp dword [esp], eax
setb byte [esp + 8]
cmp ecx, dword [esp + 0xc]
lea ecx, [esp + 0x20]
setb byte [esp + 0x10]
cmp eax, ecx
lea eax, [esp + 0x20]
seta byte [esp + 7]
cmp dword [esp + 0x1c], edx
seta cl
cmp dword [esp], esi
setb byte [esp]
cmp dword [esp + 0xc], edx
seta ch
cmp esi, eax
mov ah, byte [esp + 0xa]
seta byte [esp + 0xc]
test byte [esp + 0xb], ah
jne 0x456bd9
mov al, byte [esp + 8]
and byte [esp + 9], al
jne 0x456bd9
mov al, byte [esp + 7]
and byte [esp + 0x10], al
jne 0x456bd9
and cl, byte [esp]
jne 0x456bd9
and ch, byte [esp + 0xc]
jne 0x456bd9
xor eax, eax
nop word cs:[eax + eax]
nop dword [eax]
movups xmm2, xmmword [esp + eax + 0x20]
movups xmm4, xmmword [edx + eax]
movups xmm3, xmmword [esp + eax + 0x30]
movups xmm5, xmmword [edx + eax + 0x10]
movups xmm0, xmmword [ebx + eax]
movups xmm1, xmmword [ebx + eax + 0x10]
xorps xmm4, xmm2
xorps xmm5, xmm3
movups xmmword [edi + eax], xmm4
movups xmmword [edi + eax + 0x10], xmm5
movups xmmword [edx + eax], xmm0
movups xmmword [edx + eax + 0x10], xmm1
add eax, 0x20
jne 0x456ba0
xor ecx, ecx
mov eax, 0x10
mov esi, edx
nop word cs:[eax + eax]
nop dword [eax]
mov dh, byte [esi + ecx]
mov dl, byte [ebx + ecx]
dec eax
xor dh, byte [esp + ecx + 0x20]
mov byte [edi + ecx], dh
mov byte [esi + ecx], dl
inc ecx
cmp ecx, 0xf
ja 0x456c0b
cmp ecx, ebp
jb 0x456bf0
cmp ebp, 0x10
ja 0x456a70
cmp ecx, 0xf
ja 0x456cad
mov edx, 0x10
sub edx, ecx
cmp edx, 0x20
jb 0x456ca0
mov esi, dword [esp + 0x68]
lea edi, [ebx + 0x10]
lea esi, [esi + ecx]
cmp esi, edi
mov esi, dword [esp + 0x68]
jae 0x456c50
mov esi, dword [esp + 0x68]
mov edi, ecx
sub edi, dword [esp + 0x18]
lea esi, [esi + 0x10]
cmp edi, esi
mov esi, dword [esp + 0x68]
jb 0x456ca0
mov edi, ecx
and eax, 0xffffffe0
mov ebp, 0x10
lea esi, [esi + ecx + 0x10]
sub edi, dword [esp + 0x14]
sub ebp, ecx
add eax, ecx
mov ecx, edx
and ecx, 0xffffffe0
and ebp, 0xffffffe0
nop
movups xmm0, xmmword [edi - 0x10]
movups xmm1, xmmword [edi]
add edi, 0x20
movups xmmword [esi - 0x10], xmm0
movups xmmword [esi], xmm1
add esi, 0x20
add ebp, 0xffffffe0
jne 0x456c70
mov esi, dword [esp + 0x68]
cmp edx, ecx
mov ecx, eax
je 0x456cad
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ebx + ecx]
mov byte [esi + ecx], al
inc ecx
cmp ecx, 0x10
jne 0x456ca0
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret