Function at 0x638470
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xdc
call fcn.00655180
mov eax, dword [0x716f80]
xor eax, esp
mov dword [esp + 0xd8], eax
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0x100]
push ebx
mov ebx, dword [esp + 0xf4]
mov eax, dword [ecx]
push ebp
mov ebp, dword [esp + 0xf4]
push esi
mov esi, dword [esp + 0x104]
push edi
mov dword [esp + 0x14], eax
xor edi, edi
sub eax, esi
mov dword [esp + 0x24], eax
cmp dword [esp + 0xf4], esi
jb 0x6384dc
cmp esi, 0x40
ja 0x6384dc
test esi, esi
jne 0x6384f7
cmp dword [esp + 0x10c], edi
jne 0x6386eb
xor eax, eax
mov ecx, dword [esp + 0xe8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0065469c
add esp, 0xdc
ret
cmp dword [esp + 0x104], 1
mov dword [ecx], eax
jne 0x638522
test ebp, ebp
je 0x638511
add eax, dword [esp + 0xf8]
mov dword [ebp], eax
test ebx, ebx
je 0x6386eb
mov dword [ebx], edi
mov eax, 1
jmp 0x6384de
push 0
push esi
lea eax, [esp + 0x30]
push eax
push edx
call fcn.00514990
add esp, 0x10
test eax, eax
jle 0x6384dc
test ebp, ebp
je 0x6384dc
test ebx, ebx
je 0x6384dc
push 0xf5
push str.ssl_recordmethods_tls_pad.c
push esi
call fcn.0050e9b0
add esp, 0xc
mov dword [esp + 0x10], eax
mov dword [ebp], eax
test eax, eax
je 0x6384dc
lea ecx, [esp + 0x68]
mov dword [ebx], 1
neg ecx
lea edx, [esp + 0x68]
and ecx, 0x3f
lea eax, [esi + 0x100]
add edx, ecx
mov ecx, dword [esp + 0xf4]
mov dword [esp + 0x20], edx
cmp ecx, eax
jbe 0x638595
mov edi, ecx
sub edi, esi
sub edi, 0x100
push esi
xor ebp, ebp
mov dword [esp + 0x20], 0
push ebp
push edx
call fcn.00656e20
add esp, 0xc
xor ebx, ebx
cmp edi, dword [esp + 0xf4]
jae 0x638634
mov ecx, edi
sub ecx, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
nop
xor ecx, dword [esp + 0x14]
mov eax, edi
xor eax, dword [esp + 0x24]
lea edx, [eax - 1]
not eax
shr eax, 0x1f
shr edx, 0x1f
and edx, eax
mov eax, edi
xor eax, dword [esp + 0x14]
neg edx
or ecx, eax
mov eax, edx
or eax, dword [esp + 0x1c]
xor ecx, edi
shr ecx, 0x1f
and edx, ebx
neg ecx
or ebp, edx
and ecx, eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x1c], ecx
mov al, byte [eax + edi]
inc edi
and al, cl
mov ecx, dword [esp + 0x20]
or byte [ebx + ecx], al
inc ebx
mov ecx, ebx
mov eax, esi
sub ecx, esi
xor eax, ebx
xor ecx, esi
or ecx, eax
xor ecx, ebx
shr ecx, 0x1f
neg ecx
and ebx, ecx
mov ecx, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x18], ecx
cmp edi, dword [esp + 0xf4]
jb 0x6385c0
test esi, esi
je 0x6386eb
movzx eax, byte [esp + 0x10c]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x24], eax
not eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x28]
sub eax, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x20]
lea edi, [edi + 1]
mov eax, ebp
and eax, 0x20
dec eax
shr eax, 0x1f
neg al
movzx eax, al
mov dword [esp + 0x10], eax
not eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov eax, ebp
mov edx, dword [esp + 0x10]
and eax, 0xffffffdf
mov bl, byte [eax + ebx]
mov eax, ebp
and bl, cl
or eax, 0x20
mov ecx, dword [esp + 0x20]
inc ebp
mov al, byte [eax + ecx]
mov ecx, dword [esp + 0x14]
and al, dl
or bl, al
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
and dl, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov cl, byte [edi + ecx - 1]
and cl, al
mov eax, esi
or cl, dl
xor eax, ebp
mov byte [edi - 1], cl
mov ecx, ebp
sub ecx, esi
xor ecx, esi
or ecx, eax
xor ecx, ebp
shr ecx, 0x1f
neg ecx
and ebp, ecx
sub dword [esp + 0x18], 1
jne 0x638660
mov eax, 1
jmp 0x6384de