Function at 0x443670
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 0x443730
cmp ebx, edi
jb 0x443738
lea eax, [ebx - 0x20]
cmp eax, edi
jae 0x443738
cmp edx, 0x10
jb 0x4437b8
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 0x4436c0
mov edx, dword [esp + 0x60]
and edx, 0xf
test edx, edx
jne 0x4437c0
jmp 0x443a2d
cmp ebx, edi
jae 0x4436a7
cmp edx, 0x10
jb 0x4437a4
mov ebp, edi
mov edi, esi
mov esi, edx
nop word cs:[eax + eax]
nop dword [eax]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], ebp
mov dword [esp], 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 0x443750
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
lea eax, [ebx - 0x10]
mov edi, ebp
and edx, 0xf
jmp 0x4437a6
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 0x443a2d
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 0x443810
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 0x443959
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 0x443959
mov al, byte [esp + 8]
and byte [esp + 9], al
jne 0x443959
mov al, byte [esp + 7]
and byte [esp + 0x10], al
jne 0x443959
and cl, byte [esp]
jne 0x443959
and ch, byte [esp + 0xc]
jne 0x443959
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 0x443920
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 0x44398b
cmp ecx, ebp
jb 0x443970
cmp ebp, 0x10
ja 0x4437f0
cmp ecx, 0xf
ja 0x443a2d
mov edx, 0x10
sub edx, ecx
cmp edx, 0x20
jb 0x443a20
mov esi, dword [esp + 0x68]
lea edi, [ebx + 0x10]
lea esi, [esi + ecx]
cmp esi, edi
mov esi, dword [esp + 0x68]
jae 0x4439d0
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 0x443a20
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 0x4439f0
mov esi, dword [esp + 0x68]
cmp edx, ecx
mov ecx, eax
je 0x443a2d
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ebx + ecx]
mov byte [esi + ecx], al
inc ecx
cmp ecx, 0x10
jne 0x443a20
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret