Function at 0x5aa4e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x40
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0x10]
test edi, edi
je 0x5aa8e0
test ebx, ebx
je 0x5aa512
mov eax, dword [ebx]
test eax, eax
je 0x5aa512
mov dword [esp], eax
call fcn.007238f0
mov dword [ebx], 0
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x5aa522
mov eax, dword [ebp + 0x14]
mov dword [eax], 0
mov eax, dword [0x903050]
mov dword [0x90306c], 0
mov dword [0x903068], 0
mov dword [0x903064], 0
mov dword [0x903054], 0
mov dword [0x903060], 0
test eax, eax
je 0x5aa56f
mov dword [esp], eax
call fcn.007238f0
mov dword [0x903050], 0
mov eax, dword [0x90304c]
mov dword [0x90305c], 0
test eax, eax
je 0x5aa594
mov dword [esp], eax
call fcn.007238f0
mov dword [0x90304c], 0
mov eax, dword [0x903048]
mov dword [0x903058], 0
test eax, eax
je 0x5aa5b9
mov dword [esp], eax
call fcn.007238f0
mov dword [0x903048], 0
mov dword [0x903044], 0
movzx edx, byte [edi]
xor esi, esi
test dl, dl
jne 0x5aa60b
mov dword [esp + 8], esi
mov dword [esp + 4], str.LicUnpackLicenceBlock____d_n
mov dword [esp], 8
call fcn.004fc8f0
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [edi]
add edi, 1
test al, al
je 0x5aa615
cmp al, 0xd
je 0x5aa615
cmp al, 0xa
jne 0x5aa5f0
lea esi, [esi]
movzx edx, byte [edi]
add edi, 1
mov eax, edx
cmp dl, 0x3b
ja 0x5aa640
cmp al, 0x1f
ja 0x5aa670
cmp al, 0xa
je 0x5aa608
cmp al, 0xd
je 0x5aa608
test al, al
jne 0x5aa681
mov dword [0x904478], 0x1000
mov esi, 0xfffffffc
jmp 0x5aa5cc
cmp dl, 0xef
jne 0x5aa681
lea esi, [esi]
mov ecx, edi
movzx eax, byte [edi]
add edi, 1
mov edx, eax
and edx, 0xfffffffb
cmp dl, 0xbb
je 0x5aa648
cmp al, 0xef
je 0x5aa648
movzx edx, byte [ecx + 1]
add edi, 1
mov eax, edx
cmp dl, 0x3b
jbe 0x5aa615
jmp 0x5aa640
sub eax, 0x20
mov edx, 0x8000009
bt edx, eax
jb 0x5aa5f0
sub edi, 1
mov dword [esp + 8], 0
mov dword [esp + 4], 0x20
mov dword [esp], edi
call fcn.00504240
mov dword [0x90306c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x5aa080
mov dword [esp + 4], 0x2e
mov dword [esp], edi
call fcn.005047f0
mov eax, dword [0x903050]
mov dword [esp + 0x14], eax
mov eax, dword [0x903060]
mov dword [esp + 0x10], eax
mov eax, dword [0x903064]
mov dword [esp + 0xc], eax
mov eax, dword [0x903068]
mov dword [esp + 4], str.LicData:_key__d__sigtype__d__siglen_d__sigptr_p_n
mov dword [esp + 8], eax
mov dword [esp], 8
call fcn.004fc8f0
mov eax, dword [0x903048]
mov dword [esp + 0x14], eax
mov eax, dword [0x903058]
mov dword [esp + 0x10], eax
mov eax, dword [0x90304c]
mov dword [esp + 0xc], eax
mov eax, dword [0x90305c]
mov dword [esp + 4], str._________encdatalen_d__encdataptr_p__ivlen_d__ivptr_p_n
mov dword [esp + 8], eax
mov dword [esp], 8
call fcn.004fc8f0
mov eax, dword [0x903064]
mov edx, dword [0x903054]
test eax, eax
jne 0x5aa830
mov eax, dword [0x903050]
mov ecx, dword [0x903060]
mov edi, dword [0x90304c]
mov esi, dword [0x903048]
mov dword [esp + 0x3c], eax
mov eax, dword [0x90305c]
mov dword [esp + 0x38], eax
mov eax, dword [0x903058]
mov dword [esp + 0x34], eax
mov eax, dword [0x903068]
neg eax
mov eax, 2
sbb ebx, ebx
add ebx, 0x2001
test edx, edx
sete dl
or eax, ebx
mov ebx, dword [esp + 0x38]
movzx edx, dl
shl edx, 2
or eax, edx
xor edx, edx
test ecx, ecx
sete dl
shl edx, 3
or eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, eax
xor eax, eax
test edx, edx
sete al
shl eax, 4
or ecx, eax
xor eax, eax
test ebx, ebx
sete al
shl eax, 5
or ecx, eax
xor eax, eax
test edi, edi
mov edi, dword [esp + 0x34]
sete al
shl eax, 6
or ecx, eax
xor eax, eax
test edi, edi
sete al
shl eax, 7
or ecx, eax
test esi, esi
sete al
movzx eax, al
shl eax, 8
or ecx, eax
mov dword [0x904478], ecx
mov esi, 0xfffffffc
mov edx, dword [0x903044]
test edx, edx
je 0x5aa5cc
mov dword [esp], edx
call fcn.007238f0
mov dword [0x903044], 0
jmp 0x5aa5cc
test edx, edx
je 0x5aa8d0
mov esi, dword [0x903050]
mov edi, dword [0x90305c]
mov eax, dword [0x903068]
mov ecx, dword [0x903060]
mov dword [esp + 0x3c], esi
mov esi, dword [0x903058]
mov dword [esp + 0x38], edi
mov edi, dword [0x90304c]
mov dword [esp + 0x34], esi
mov esi, dword [0x903048]
test eax, eax
je 0x5aa90c
test ecx, ecx
je 0x5aa900
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x5aa8ec
mov eax, dword [esp + 0x38]
test eax, eax
je 0x5aa900
test edi, edi
je 0x5aa8ec
mov eax, dword [esp + 0x34]
test eax, eax
je 0x5aa900
test esi, esi
je 0x5aa8ec
mov eax, dword [edi + 8]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 4]
mov dword [esp + 0xc], eax
mov eax, dword [edi]
mov dword [esp + 4], str.LicEncData:_protocol_d__key_d__datasize_d_n
mov dword [esp + 8], eax
mov dword [esp], 8
call fcn.004fc8f0
cmp dword [edi], 1
jne 0x5aa8d0
cmp dword [edi + 4], 1
je 0x5aa916
mov esi, 0xfffffff3
jmp 0x5aa803
lea esp, [ebp - 0xc]
xor esi, esi
pop ebx
mov eax, esi
pop esi
pop edi
pop ebp
ret
mov ebx, 0x2000
xor eax, eax
jmp 0x5aa792
xor eax, eax
mov ebx, 0x2000
jmp 0x5aa792
mov ebx, 0x2001
jmp 0x5aa792
mov esi, dword [0x774e80]
cmp esi, 0xfffffffe
jl 0x5aa93e
lea ecx, [esi + 2]
xor eax, eax
shr ecx, 2
add ecx, 1
xor dword [eax*4 + 0x774ea0], 0x2d4e6c23
add eax, 1
cmp eax, ecx
jne 0x5aa92c
mov byte [esi + 0x774ea0], 0
lea eax, [edi + 0x10]
mov dword [esp + 4], 1
mov dword [esp], 0x100
mov dword [esp + 0x3c], eax
call fcn.00723880
cmp byte [0x903080], 0
mov dword [0x903044], eax
mov ecx, eax
jne 0x5aa9a1
movdqu xmm2, xmmword [str.cccccccccccccccc]
xor eax, eax
movdqu xmm1, xmmword [0x7d9f30]
movdqu xmm0, xmmword [eax + 0x774e40]
add eax, 0x10
pxor xmm0, xmm2
pand xmm0, xmm1
movups xmmword [eax + 0x903070], xmm0
cmp eax, 0x40
jne 0x5aa982
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], 0x903080
mov dword [esp + 8], 0x774ea0
mov dword [esp + 4], 0x100
mov dword [esp], eax
call fcn.00510800
mov dword [esp + 4], str.DecryptRSA____d_n
mov dword [esp + 8], eax
mov esi, eax
mov dword [esp], 8
call fcn.004fc8f0
mov ecx, dword [0x774e80]
cmp ecx, 0xfffffffe
jl 0x5aaa0f
lea edx, [ecx + 2]
xor eax, eax
shr edx, 2
add edx, 1
xor dword [eax*4 + 0x774ea0], 0x2d4e6c23
add eax, 1
cmp eax, edx
jne 0x5aa9fd
mov byte [ecx + 0x774ea0], 0
test esi, esi
jle 0x5aac11
mov edx, dword [edi + 8]
lea eax, [edx - 1]
cmp eax, 0x1387f
jbe 0x5aaa55
mov eax, 0x3000
test edx, edx
jne 0x5aaa40
or eax, 2
xor ecx, ecx
or ecx, eax
jmp 0x5aa7f8
xor ecx, ecx
cmp edx, 0x13880
seta cl
shl ecx, 2
or ecx, eax
jmp 0x5aa7f8
mov dword [esp + 4], 1
mov dword [esp], 0x13880
call fcn.00723880
mov edx, eax
test ebx, ebx
je 0x5aaa71
mov dword [ebx], eax
mov dword [esp + 0x10], edx
mov eax, dword [0x903048]
add edi, 0x110
mov dword [esp + 0x3c], edx
mov dword [esp + 0xc], eax
mov eax, dword [0x903044]
mov dword [esp + 8], eax
mov eax, dword [0x90305c]
mov dword [esp], edi
sub eax, 0x110
mov dword [esp + 4], eax
call fcn.00510660
mov dword [esp + 4], str.DecryptAES____d_n
mov dword [esp + 8], eax
mov ebx, eax
mov dword [esp], 8
call fcn.004fc8f0
test ebx, ebx
jle 0x5aac1e
cmp dword [ebp + 0x14], 0
mov edx, dword [esp + 0x3c]
je 0x5aaad8
mov eax, dword [ebp + 0x14]
mov dword [eax], ebx
mov eax, dword [edx + 4]
mov dword [esp + 0x3c], edx
mov dword [esp + 0xc], eax
mov eax, dword [edx]
mov dword [esp + 4], str.strucver_d__strofs_d_n
mov dword [esp + 8], eax
mov dword [esp], 8
call fcn.004fc8f0
mov edx, dword [esp + 0x3c]
cmp dword [edx], 0
jne 0x5aa8d0
lea eax, [edx + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 0x3c]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x38]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 0x10]
mov dword [esp + 0x10], eax
mov ecx, dword [edx + 8]
mov ebx, dword [edx + 0xc]
mov dword [esp + 4], str.product_ids_x__customer_d__licence_d__valid_d__flags_x__strings_d__magic_08x_n
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov ebx, 0x2a
mov dword [esp], 8
call fcn.004fc8f0
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0xc]
mov edi, dword [edx + 0x14]
mov ecx, dword [edx + 8]
mov dword [esp + 0x38], eax
mov eax, edi
add edi, edi
imul eax, ebx
mov ebx, eax
mov eax, 7
imul eax, dword [edx + 0x10]
or ebx, eax
mov eax, 3
imul eax, dword [edx + 0x10]
or eax, edi
lea edi, [ecx + ecx]
mov esi, eax
mov eax, 9
imul eax, dword [edx + 0x10]
mov byte [esp + 0x3c], al
movzx eax, byte [edx + 0x10]
or edi, eax
mov eax, edi
cmp al, byte [edx + 0x24]
jne 0x5aac7d
cmp byte [edx + 0x25], bl
jne 0x5aac44
mov eax, esi
cmp al, byte [edx + 0x26]
jne 0x5aac44
movzx eax, byte [esp + 0x3c]
cmp al, byte [edx + 0x27]
jne 0x5aac44
mov eax, dword [esp + 0x38]
or eax, ecx
je 0x5aac3a
and ecx, 0x800
or ecx, 0
je 0x5aac30
mov esi, dword [edx + 0x18]
test esi, esi
js 0x5aa803
cmp esi, 1
jne 0x5aac28
cmp dword [ebp + 0xc], 2
jne 0x5aa803
mov eax, dword [0x904410]
mov ecx, 0x7000
cmp dword [edx + 0x34], eax
jne 0x5aa7f8
jmp 0x5aa803
mov edx, dword [edi + 8]
mov eax, 0x3001
jmp 0x5aaa30
mov ecx, 0x4000
jmp 0x5aa7f8
or esi, 0xffffffff
jmp 0x5aa803
mov esi, 0xffffffec
jmp 0x5aa803
mov ecx, 0x6000
jmp 0x5aa7f8
mov edi, 0x5000
mov eax, esi
xor ecx, ecx
cmp byte [edx + 0x26], al
movzx eax, byte [esp + 0x3c]
setne cl
shl ecx, 2
cmp byte [edx + 0x25], bl
setne bl
movzx ebx, bl
add ebx, ebx
or ecx, ebx
cmp byte [edx + 0x27], al
setne al
movzx eax, al
shl eax, 3
or ecx, eax
or ecx, edi
jmp 0x5aa7f8
mov edi, 0x5001
jmp 0x5aac49