Function at 0x443090
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x58], 0
je 0x44311f
cmp esi, 0x10
jb 0x443136
mov eax, ecx
nop dword [eax]
mov ecx, dword [eax]
xor ecx, dword [ebx]
mov dword [ebp], ecx
mov ecx, dword [eax + 4]
xor ecx, dword [ebx + 4]
mov dword [ebp + 4], ecx
mov ecx, dword [eax + 8]
xor ecx, dword [ebx + 8]
mov dword [ebp + 8], ecx
mov eax, dword [eax + 0xc]
xor eax, dword [ebx + 0xc]
mov dword [ebp + 0xc], eax
sub esp, 0xc
mov dword [esp + 8], edi
mov dword [esp + 4], ebp
mov dword [esp], ebp
call sym.adb.exe_AES_encrypt
add esp, 0xc
add esi, 0xfffffff0
add ebx, 0x10
mov eax, ebp
lea ebp, [ebp + 0x10]
cmp esi, 0xf
ja 0x4430c0
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
lea eax, [ebp - 0x10]
and esi, 0xf
test esi, esi
jne 0x443140
jmp 0x44336e
push sym.adb.exe_AES_decrypt
push ecx
push edi
push esi
push ebp
push ebx
call fcn.00443670
add esp, 0x48
jmp 0x443383
mov eax, ecx
test esi, esi
je 0x44336e
mov dword [esp], eax
mov eax, ebp
xor ecx, ecx
mov edi, ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x24], esi
neg eax
mov dword [esp + 0x14], eax
lea eax, [ebp + 0x11]
mov dword [esp + 0x18], eax
mov eax, ebp
jmp 0x443195
mov edi, dword [esp + 0x10]
add dword [esp + 0x1c], 0xfffffff0
add dword [esp + 0x14], 0xfffffff0
add dword [esp + 0x18], 0x10
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov dword [esp], eax
inc ecx
lea eax, [eax + 0x10]
add edi, 0x10
mov dword [esp + 8], eax
mov dword [esp + 0x2c], ecx
shl ecx, 4
mov eax, esi
mov edx, 1
mov ebx, dword [esp]
mov dword [esp + 0x10], edi
sub eax, ecx
cmp eax, 1
cmovbe eax, edx
mov edx, 0xfffffff0
neg eax
cmp eax, 0xfffffff0
cmovbe eax, edx
mov edx, eax
neg edx
cmp edx, 0x1f
jbe 0x443246
lea esi, [ebp + ecx]
mov edi, esi
sub edi, eax
mov eax, dword [esp + 0x20]
lea eax, [eax + ecx]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
lea eax, [eax + edx]
add edx, ebx
mov dword [esp + 4], eax
cmp esi, dword [esp + 4]
setb byte [esp + 4]
cmp dword [esp + 0xc], edi
setb ah
cmp esi, edx
mov esi, dword [esp + 8]
setb al
cmp ebx, edi
mov edi, dword [esp + 0x10]
setb dl
test byte [esp + 4], ah
jne 0x443246
and al, dl
jne 0x443246
xor eax, eax
nop word [eax + eax]
movups xmm0, xmmword [edi + eax]
movups xmm2, xmmword [ebx + eax]
movups xmm1, xmmword [edi + eax + 0x10]
movups xmm3, xmmword [ebx + eax + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esi + eax], xmm2
movups xmmword [esi + eax + 0x10], xmm3
add eax, 0x20
jne 0x443220
mov edx, dword [esp + 0x18]
lea eax, [ebp + ecx + 0x10]
lea ebp, [ebx + 0x11]
xor edi, edi
mov esi, 0x10
mov dword [esp + 0xc], eax
nop dword [eax]
mov ebx, edx
mov edx, dword [esp]
mov ecx, edi
mov eax, ebp
dec esi
movzx edx, byte [edx + edi]
mov edi, dword [esp + 0x10]
xor dl, byte [edi + ecx]
mov edi, dword [esp + 8]
mov byte [edi + ecx], dl
lea edi, [ecx + 1]
cmp edi, 0xf
ja 0x443290
cmp edi, dword [esp + 0x1c]
lea edx, [ebx + 1]
lea ebp, [eax + 1]
jb 0x443260
mov edx, dword [esp]
mov ebp, dword [esp + 8]
cmp edi, 0xf
ja 0x44334c
mov ebp, 0x10
sub ebp, edi
cmp ebp, 0x1f
ja 0x4432c0
mov ebp, dword [esp + 8]
jmp 0x443330
mov edx, edi
mov dword [esp + 4], ebp
mov ebp, dword [esp]
sub edx, dword [esp + 0x14]
lea ebp, [ebp + 0x10]
cmp edx, ebp
mov edx, dword [esp]
mov ebp, dword [esp + 8]
jae 0x4432ea
mov edx, dword [esp]
lea edx, [edx + edi]
cmp edx, dword [esp + 0xc]
mov edx, dword [esp]
jb 0x443330
mov ebp, dword [esp + 4]
and esi, 0xffffffe0
add edi, esi
mov esi, 0xf
sub esi, ecx
and esi, 0xffffffe0
and ebp, 0xffffffe0
movups xmm0, xmmword [eax - 0x10]
movups xmm1, xmmword [eax]
add eax, 0x20
movups xmmword [ebx - 0x10], xmm0
movups xmmword [ebx], xmm1
add ebx, 0x20
add esi, 0xffffffe0
jne 0x443300
cmp dword [esp + 4], ebp
mov ebp, dword [esp + 8]
je 0x44334c
nop word cs:[eax + eax]
nop dword [eax]
add edi, 0xfffffff0
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edx + edi + 0x10]
mov byte [ebp + edi + 0x10], al
inc edi
jne 0x443340
push dword [esp + 0x50]
push ebp
push ebp
call sym.adb.exe_AES_encrypt
add esp, 0xc
mov ecx, dword [esp + 0x2c]
mov eax, ebp
test ecx, ecx
jne 0x443170
mov edi, dword [esp + 0x54]
mov ecx, edi
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [ecx + 8], xmm1
movsd qword [ecx], xmm0
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret