Function at 0x40aa20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1d8
mov eax, dword [0x43401c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1d4], eax
push ebx
mov ebx, dword [ebp + 0x1c]
mov dword [ebp - 0x1c0], ebx
push esi
mov esi, dword [ebp + 0x24]
mov dword [ebp - 0x1d8], esi
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x1b4], edi
test eax, eax
jne 0x40aa72
push 0x28
push str.srcpkpkcs1pkcs_1_pss_decode.c
push str.msghash___NULL
call fcn.00406420
add esp, 0xc
test esi, esi
jne 0x40aa8a
push 0x29
push str.srcpkpkcs1pkcs_1_pss_decode.c
push str.res___NULL
call fcn.00406420
add esp, 0xc
push ebx
mov dword [esi], 0
call fcn.00404680
add esp, 4
test eax, eax
jne 0x40ae63
imul eax, ebx, 0x68
mov ecx, 0
mov dword [ebp - 0x1ac], eax
mov edx, dword [eax + 0x435858]
mov eax, dword [ebp + 0x20]
dec eax
mov dword [ebp - 0x1bc], edx
test al, 7
mov dword [ebp + 0x20], eax
setne cl
shr eax, 3
add ecx, eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x1b8], ecx
cmp eax, ecx
ja 0x40ae5e
add eax, 2
add eax, edx
cmp ecx, eax
jb 0x40ae5e
push ecx
call fcn.0041a68e
mov esi, dword [ebp - 0x1b8]
mov ebx, eax
push esi
mov dword [ebp - 0x1c8], ebx
call fcn.0041a68e
push esi
mov dword [ebp - 0x1a8], eax
call fcn.0041a68e
push esi
mov dword [ebp - 0x1b8], eax
call fcn.0041a68e
add esp, 0x10
mov dword [ebp - 0x1b0], eax
test ebx, ebx
je 0x40ae0f
cmp dword [ebp - 0x1a8], 0
je 0x40ae06
cmp dword [ebp - 0x1b8], 0
je 0x40ae06
test eax, eax
je 0x40ae06
mov eax, dword [ebp + 0x14]
cmp byte [edi + eax - 1], 0xbc
je 0x40ab63
mov esi, 7
jmp 0x40adc9
mov ecx, dword [ebp - 0x1b4]
mov eax, esi
sub eax, dword [ebp - 0x1bc]
mov dword [ebp - 0x1d0], eax
lea edi, [eax - 1]
push edi
push ecx
push ebx
mov dword [ebp - 0x1c4], edi
call fcn.00415500
mov ecx, dword [ebp - 0x1bc]
mov eax, dword [ebp - 0x1b4]
sub eax, ecx
dec eax
push ecx
add eax, esi
push eax
push dword [ebp - 0x1b0]
call fcn.00415500
lea ecx, [esi*8]
mov eax, 0xff
sub ecx, dword [ebp + 0x20]
add esp, 0x18
sar eax, cl
mov ecx, dword [ebp - 0x1b4]
mov dword [ebp - 0x1cc], eax
not eax
test byte [ecx], al
jne 0x40ab59
push edi
push dword [ebp - 0x1a8]
push dword [ebp - 0x1bc]
push dword [ebp - 0x1b0]
push dword [ebp - 0x1c0]
call fcn.0040a100
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x40adc9
test edi, edi
je 0x40ac9f
mov edx, dword [ebp - 0x1a8]
cmp edi, 0x20
jb 0x40ac86
lea eax, [edx - 1]
lea ecx, [edi - 1]
add eax, edi
add ecx, ebx
cmp ebx, eax
ja 0x40ac1c
cmp ecx, edx
jae 0x40ac86
mov ecx, edi
mov eax, ebx
mov edi, edx
and ecx, 0xffffffe0
sub edi, ebx
mov dword [ebp - 0x1c0], edi
lea edi, [edx + 0x10]
mov edx, dword [ebp - 0x1c0]
mov dword [ebp - 0x1b4], edi
mov edi, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1b4]
nop dword [eax + eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmm1, xmmword [edx + eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm1, xmmword [ebx + esi]
add esi, 0x20
movups xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp esi, ecx
jb 0x40ac50
mov ebx, dword [ebp - 0x1c8]
mov edx, dword [ebp - 0x1a8]
cmp esi, edi
jae 0x40ac9f
sub edx, ebx
lea ecx, [esi + ebx]
sub edi, esi
mov al, byte [ecx + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edi, 1
jne 0x40ac91
mov eax, dword [ebp - 0x1cc]
mov ecx, dword [ebp - 0x1d0]
and byte [ebx], al
xor eax, eax
sub ecx, dword [ebp + 0x18]
add ecx, 0xfffffffe
je 0x40accf
nop word [eax + eax]
cmp byte [eax + ebx], 0
jne 0x40ab59
inc eax
cmp eax, ecx
jb 0x40acc0
cmp byte [eax + ebx], 1
lea edi, [eax + ebx]
jne 0x40ab59
lea eax, [ebp - 0x1a4]
push eax
mov eax, dword [ebp - 0x1ac]
mov eax, dword [eax + 0x4358a4]
call eax
mov esi, eax
add esp, 4
test esi, esi
jne 0x40adc9
mov esi, dword [ebp - 0x1a8]
push 8
push esi
call fcn.0040b230
push 8
lea eax, [ebp - 0x1a4]
push esi
push eax
mov eax, dword [ebp - 0x1ac]
mov eax, dword [eax + 0x4358a8]
call eax
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x40adc9
push dword [ebp + 0xc]
lea eax, [ebp - 0x1a4]
push dword [ebp - 0x1d4]
push eax
mov eax, dword [ebp - 0x1ac]
mov eax, dword [eax + 0x4358a8]
call eax
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40adc9
push dword [ebp + 0x18]
lea eax, [edi + 1]
push eax
lea eax, [ebp - 0x1a4]
push eax
mov eax, dword [ebp - 0x1ac]
mov eax, dword [eax + 0x4358a8]
call eax
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x40adc9
mov edi, dword [ebp - 0x1a8]
lea eax, [ebp - 0x1a4]
push edi
push eax
mov eax, dword [ebp - 0x1ac]
mov eax, dword [eax + 0x4358ac]
call eax
mov esi, eax
add esp, 8
test esi, esi
jne 0x40adc9
push dword [ebp - 0x1bc]
push dword [ebp - 0x1b0]
push edi
call fcn.0040a080
add esp, 0xc
test eax, eax
jne 0x40adc7
mov eax, dword [ebp - 0x1d8]
mov dword [eax], 1
xor esi, esi
push dword [ebp - 0x1b0]
call fcn.0041a557
push dword [ebp - 0x1b8]
call fcn.0041a557
push dword [ebp - 0x1a8]
call fcn.0041a557
push ebx
call fcn.0041a557
add esp, 0x10
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004146bc
mov esp, ebp
pop ebp
ret
push ebx
call fcn.0041a557
add esp, 4
mov eax, dword [ebp - 0x1a8]
test eax, eax
je 0x40ae22
push eax
call fcn.0041a557
add esp, 4
mov eax, dword [ebp - 0x1b8]
test eax, eax
je 0x40ae35
push eax
call fcn.0041a557
add esp, 4
mov eax, dword [ebp - 0x1b0]
test eax, eax
je 0x40ae48
push eax
call fcn.0041a557
add esp, 4
pop edi
pop esi
mov eax, 0xd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004146bc
mov esp, ebp
pop ebp
ret
mov eax, 0x16
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004146bc
mov esp, ebp
pop ebp
ret