Function at 0x4066f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
sub esp, 0x20
test eax, eax
jne 0x406711
push 0x29
push str.srcpkpkcs1pkcs_1_oaep_decode.c
push str.msg___NULL
call fcn.00406420
add esp, 0xc
cmp dword [ebp + 0x20], 0
jne 0x40672b
push 0x2a
push str.srcpkpkcs1pkcs_1_oaep_decode.c
push str.out___NULL
call fcn.00406420
add esp, 0xc
cmp dword [ebp + 0x24], 0
jne 0x406745
push 0x2b
push str.srcpkpkcs1pkcs_1_oaep_decode.c
push str.outlen___NULL
call fcn.00406420
add esp, 0xc
push ebx
mov ebx, dword [ebp + 0x28]
test ebx, ebx
jne 0x406761
push 0x2c
push str.srcpkpkcs1pkcs_1_oaep_decode.c
push str.res___NULL
call fcn.00406420
add esp, 0xc
mov dword [ebx], 0
mov ebx, dword [ebp + 0x1c]
push ebx
call fcn.00404680
add esp, 4
test eax, eax
jne 0x406a62
imul eax, ebx, 0x68
mov ebx, 0
push edi
mov edi, dword [eax + 0x435858]
mov eax, dword [ebp + 0x18]
test al, 7
mov dword [ebp - 8], edi
setne bl
shr eax, 3
add ebx, eax
lea eax, [edi + edi]
mov dword [ebp - 0x18], ebx
lea ecx, [ebx - 2]
cmp eax, ecx
jae 0x406a96
cmp dword [ebp + 0xc], ebx
jne 0x406a96
push esi
push ebx
call fcn.0041a68e
mov esi, eax
push ebx
mov dword [ebp - 0x10], esi
call fcn.0041a68e
push edi
mov ebx, eax
call fcn.0041a68e
add esp, 0xc
mov edi, eax
mov dword [ebp - 0xc], edi
test esi, esi
je 0x406a70
test ebx, ebx
je 0x406a67
test edi, edi
je 0x406a67
mov eax, dword [ebp + 8]
xor edx, edx
push dword [ebp - 8]
mov ecx, 7
mov dword [ebp - 4], 1
cmp byte [eax], dl
cmove ecx, edx
inc eax
push eax
push edi
mov dword [ebp - 0x1c], ecx
call fcn.00415500
mov ecx, dword [ebp - 4]
mov edi, dword [ebp - 0x18]
add ecx, dword [ebp - 8]
sub edi, dword [ebp - 8]
mov eax, dword [ebp + 8]
dec edi
push edi
add eax, ecx
mov dword [ebp - 4], ecx
push eax
push esi
mov dword [ebp - 0x14], edi
call fcn.00415500
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x18]
dec eax
push edx
push ebx
push edi
sub ecx, edx
push esi
push dword [ebp + 0x1c]
add eax, ecx
mov dword [ebp - 4], eax
call fcn.0040a100
mov edi, eax
add esp, 0x2c
test edi, edi
jne 0x406a47
mov ecx, dword [ebp - 8]
xor edx, edx
test ecx, ecx
je 0x4068f4
mov edi, dword [ebp - 0xc]
cmp ecx, 0x20
jb 0x4068cf
lea eax, [ecx - 1]
add eax, ebx
cmp edi, eax
ja 0x406883
lea eax, [edi - 1]
add eax, ecx
cmp eax, ebx
jae 0x4068cf
mov eax, ecx
mov esi, ebx
and eax, 0xffffffe0
sub esi, edi
mov dword [ebp + 8], esi
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov eax, edi
nop word [eax + eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmm1, xmmword [ecx + eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm1, xmmword [ebx + edx + 0x10]
add edx, 0x20
movups xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp edx, dword [ebp - 0x20]
jb 0x4068a0
mov ecx, dword [ebp - 8]
cmp edx, ecx
jae 0x4068f4
mov esi, ebx
lea ecx, [edx + edi]
sub esi, edi
mov edi, dword [ebp - 8]
sub edi, edx
nop
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edi, 1
jne 0x4068e0
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 8]
push dword [ebp - 0x14]
push ebx
push ecx
push dword [ebp - 0xc]
push dword [ebp + 0x1c]
call fcn.0040a100
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x406a47
mov edi, dword [ebp - 0x14]
xor edx, edx
test edi, edi
je 0x406996
cmp edi, 0x20
jb 0x406973
lea eax, [edi - 1]
lea ecx, [edi - 1]
add eax, ebx
add ecx, esi
cmp esi, eax
ja 0x406931
cmp ecx, ebx
jae 0x406973
mov ecx, edi
mov eax, esi
mov edi, ebx
and ecx, 0xffffffe0
sub edi, esi
mov dword [ebp + 8], edi
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp + 8]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmm1, xmmword [esi + eax - 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm1, xmmword [ebx + edx + 0x10]
add edx, 0x20
movups xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp edx, ecx
jb 0x406945
mov esi, dword [ebp - 0x10]
cmp edx, edi
jae 0x406996
mov eax, ebx
lea ecx, [edx + esi]
sub eax, esi
sub edi, edx
mov dword [ebp + 8], eax
mov esi, eax
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edi, 1
jne 0x406985
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4069b0
lea ecx, [ebp - 4]
push ecx
push dword [ebp - 0xc]
push dword [ebp + 0x14]
push eax
jmp 0x4069ba
lea eax, [ebp - 4]
push eax
push dword [ebp - 0xc]
push 0
push esi
push dword [ebp + 0x1c]
call fcn.00409f80
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x406a47
mov edi, dword [ebp - 8]
push edi
push esi
push dword [ebp - 0xc]
call fcn.0040a080
mov ecx, dword [ebp - 0x14]
add esp, 0xc
test eax, eax
mov edx, 7
mov eax, dword [ebp - 0x1c]
cmovne eax, edx
mov dword [ebp - 0x1c], eax
mov eax, edi
mov dword [ebp - 4], eax
cmp edi, ecx
jae 0x406a05
cmp byte [eax + esi], 0
jne 0x406a05
inc eax
mov dword [ebp - 4], eax
cmp eax, ecx
jb 0x4069f7
cmp eax, ecx
je 0x406a0f
cmp byte [eax + esi], 1
je 0x406a12
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebp - 0x18]
inc eax
sub ecx, eax
mov dword [ebp - 4], eax
sub ecx, edi
mov edi, edx
mov edx, dword [ebp + 0x24]
dec ecx
cmp ecx, dword [edx]
cmovbe edi, dword [ebp - 0x1c]
test edi, edi
jne 0x406a47
push ecx
add eax, esi
mov dword [edx], ecx
push eax
push dword [ebp + 0x20]
call fcn.00415500
mov eax, dword [ebp + 0x28]
add esp, 0xc
mov dword [eax], 1
push dword [ebp - 0xc]
call fcn.0041a557
push ebx
call fcn.0041a557
push esi
call fcn.0041a557
add esp, 0xc
mov eax, edi
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
call fcn.0041a557
add esp, 4
test ebx, ebx
je 0x406a7d
push ebx
call fcn.0041a557
add esp, 4
test edi, edi
je 0x406a8a
push edi
call fcn.0041a557
add esp, 4
pop esi
pop edi
mov eax, 0xd
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov eax, 0x16
pop ebx
mov esp, ebp
pop ebp
ret