Function at 0x14007bdc0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rbp, qword [rcx]
mov rsi, qword [rcx + 8]
lea rdi, [rbp*8]
mov ecx, 1
mov edx, 0x10
mov r8, rdi
call fcn.140042eb0
mov r15, rax
test rbp, rbp
jne 0x14007be12
lea rcx, [0x1401162de]
lea rdx, str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_crypto_mpint.c
mov r8d, 0x48
call fcn.1400c9b7c
mov qword [r15], rbp
mov rcx, r15
add rcx, 0x10
mov qword [r15 + 8], rcx
mov rdx, rdi
call fcn.1400778a0
mov r8, qword [r15]
mov rcx, qword [r15 + 8]
shl r8, 3
mov rdx, rsi
call fcn.1400b9f30
mov rbp, qword [r15]
lea rdi, [rbp*8]
mov ecx, 1
mov edx, 0x10
mov r8, rdi
call fcn.140042eb0
mov rsi, rax
test rbp, rbp
jne 0x14007be79
lea rcx, [0x1401162de]
lea rdx, str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_crypto_mpint.c
mov r8d, 0x48
call fcn.1400c9b7c
mov qword [rsi], rbp
mov rcx, rsi
add rcx, 0x10
mov qword [rsi + 8], rcx
mov rdx, rdi
call fcn.1400778a0
mov rbp, qword [r15]
lea rdi, [rbp*8]
mov ecx, 1
mov edx, 0x10
mov r8, rdi
call fcn.140042eb0
mov rbx, rax
test rbp, rbp
jne 0x14007becd
lea rcx, [0x1401162de]
lea rdx, str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_crypto_mpint.c
mov r8d, 0x48
call fcn.1400c9b7c
mov qword [rbx], rbp
mov rcx, rbx
add rcx, 0x10
mov qword [rbx + 8], rcx
mov rdx, rdi
call fcn.1400778a0
cmp qword [rbx], 0
je 0x14007bf11
xor eax, eax
movabs rcx, 0xcccccccccccccccc
nop word cs:[rax + rax]
nop
mov rdx, qword [rbx + 8]
mov qword [rdx + rax*8], rcx
add rax, 1
cmp rax, qword [rbx]
jb 0x14007bf00
mov rax, qword [rbx + 8]
add qword [rax], 1
mov rax, qword [r15]
movabs rcx, 0x70381c0e07038
cmp rax, rcx
jb 0x14007bf47
lea rcx, str.x__nw_____size_t_1_____146__BIGNUM_INT_BITS_
lea rdx, str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_crypto_mpint.c
mov r8d, 0x1e0
call fcn.1400c9b7c
mov rax, qword [r15]
imul r12, rax, 0x2480
movabs rcx, 0xe40655826010e41
mov rax, r12
mul rcx
sub r12, rdx
shr r12, 1
add r12, rdx
shr r12, 8
mov eax, 1
cmove r12, rax
lea rcx, [r12 + 2]
mov edx, 1
mov qword [rsp + 0x28], rcx
xor r8d, r8d
call fcn.140042eb0
mov r14, rax
mov byte [r12 + rax + 1], 0
mov r13, r12
mov qword [rsp + 0x30], rbx
jmp 0x14007bfb8
mov rcx, r15
mov rdx, rsi
mov r8, rbx
call fcn.14007c6c0
sub r13, 1
jb 0x14007c225
mov r9, qword [r15]
mov ecx, 0
test r9, r9
je 0x14007c035
mov r8, qword [r15 + 8]
mov rax, qword [r8]
movzx ecx, al
movzx edx, ah
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
mov edx, eax
shr edx, 0x10
movzx edx, dl
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
mov edx, eax
shr edx, 0x18
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
mov rdx, rax
shr rdx, 0x20
movzx edx, dl
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
mov rdx, rax
shr rdx, 0x28
movzx edx, dl
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
mov rdx, rax
shr rdx, 0x30
movzx edx, dl
lea edx, [rdx + rdx*2]
lea ecx, [rcx + rdx*2]
shr rax, 0x38
lea eax, [rax + rax*2]
lea ecx, [rcx + rax*2]
cmp r9, 1
jne 0x14007c120
mov eax, ecx
imul rax, rax, 0x19999999
shr rax, 0x20
add eax, eax
lea eax, [rax + rax*4]
mov ebp, ecx
sub ebp, eax
neg eax
add eax, ecx
add eax, 6
shr eax, 3
and eax, 0xfffffffe
lea eax, [rax + rax*4]
sub ebp, eax
cmp ebp, 0xa
jb 0x14007c07b
lea rcx, str.low_digit___10
lea rdx, str._home_simon_mem_.build_workdirs_bob_fffbk9my_putty_crypto_mpint.c
mov r8d, 0x214
call fcn.1400c9b7c
lea eax, [rbp + 0x30]
mov byte [r14 + r13], al
mov rax, qword [r15]
test rax, rax
je 0x14007c0a9
mov rcx, qword [r15 + 8]
mov ebp, ebp
mov rbx, qword [rcx]
xor edx, edx
sub rbx, rbp
setae r8b
mov qword [rcx], rbx
cmp rax, 1
jne 0x14007c1e0
cmp qword [rsi], 0
mov rbx, qword [rsp + 0x30]
je 0x14007bfa0
xor eax, eax
jmp 0x14007c0e2
mov rdx, qword [r15 + 8]
mov rdx, qword [rdx + rax*8 + 8]
shl rdx, 0x3f
mov rbp, qword [rsi + 8]
or qword [rbp + rax*8], rdx
mov rax, rcx
cmp rcx, qword [rsi]
jae 0x14007bfa0
cmp qword [r15], rax
jbe 0x14007c100
mov rcx, qword [r15 + 8]
mov rcx, qword [rcx + rax*8]
jmp 0x14007c102
xor ecx, ecx
mov rdx, qword [rsi + 8]
mov qword [rdx + rax*8], rcx
mov rcx, qword [rsi + 8]
shr qword [rcx + rax*8], 1
lea rcx, [rax + 1]
cmp qword [r15], rcx
ja 0x14007c0c0
xor edx, edx
jmp 0x14007c0c9
mov edx, 0x2ad5
mov ebp, 1
jmp 0x14007c13d
add rbp, 1
cmp r9, rbp
je 0x14007c035
mov rbx, qword [r8 + rbp*8]
movzx edi, bl
lea edi, [rdi + rdi*2]
lea ecx, [rcx + rdi*2]
movzx edi, bh
lea edi, [rdi + rdi*2]
lea ecx, [rcx + rdi*2]
mov edi, ebx
shr edi, 0x10
movzx edi, dil
lea edi, [rdi + rdi*2]
lea ecx, [rcx + rdi*2]
mov eax, ebx
shr eax, 0x18
lea eax, [rax + rax*2]
lea eax, [rcx + rax*2]
mov rcx, rbx
shr rcx, 0x20
movzx ecx, cl
lea ecx, [rcx + rcx*2]
lea eax, [rax + rcx*2]
mov rcx, rbx
shr rcx, 0x28
movzx ecx, cl
lea ecx, [rcx + rcx*2]
lea eax, [rax + rcx*2]
mov rcx, rbx
shr rcx, 0x30
movzx ecx, cl
lea ecx, [rcx + rcx*2]
lea eax, [rax + rcx*2]
shr rbx, 0x38
lea ecx, [rbx + rbx*2]
lea ecx, [rax + rcx*2]
add edx, 0x2fd0
cmp edx, 0xffffd02f
jbe 0x14007c130
movzx eax, cx
shr ecx, 0x10
lea ecx, [rcx + rcx*2]
lea ecx, [rax + rcx*2]
movzx edx, dx
add edx, 0x5fffa
jmp 0x14007c130
mov dl, r8b
mov ebp, 1
jmp 0x14007c21c
mov rbx, qword [r15 + 8]
mov rdi, qword [rbx + rbp*8]
xor ebx, ebx
add rdx, rdi
setb bl
add rdx, 0xffffffffffffffff
adc rbx, 0
mov qword [rcx + rbp*8], rdx
add rbp, 1
mov rdx, rbx
cmp rax, rbp
je 0x14007c0a9
cmp qword [r15], rbp
ja 0x14007c1f0
xor edi, edi
jmp 0x14007c1f8
mov rdx, qword [r15]
mov rcx, qword [r15 + 8]
shl rdx, 3
call fcn.1400778a0
mov edx, 0x10
mov rcx, r15
call fcn.1400778a0
mov rcx, r15
call fcn.140042f50
mov rdx, qword [rsi]
mov rcx, qword [rsi + 8]
shl rdx, 3
call fcn.1400778a0
mov edx, 0x10
mov rcx, rsi
call fcn.1400778a0
mov rcx, rsi
call fcn.140042f50
mov rdx, qword [rbx]
mov rcx, qword [rbx + 8]
shl rdx, 3
call fcn.1400778a0
mov edx, 0x10
mov rcx, rbx
call fcn.1400778a0
mov rcx, rbx
call fcn.140042f50
lea rax, [r12 - 1]
mov rcx, r12
and rcx, 3
je 0x14007c2cf
mov rdx, r12
mov r8, r12
mov r15, qword [rsp + 0x28]
nop dword [rax]
cmp byte [r14 + rdx - 1], 0x30
lea r12, [rdx - 1]
cmovne r8, r12
mov rdx, r12
add rcx, 0xffffffffffffffff
jne 0x14007c2b0
cmp rax, 3
jae 0x14007c2dd
jmp 0x14007c330
mov r8, r12
mov r15, qword [rsp + 0x28]
cmp rax, 3
jb 0x14007c330
add r12, 0xfffffffffffffffe
nop word cs:[rax + rax]
nop dword [rax + rax]
lea rax, [r12 + 1]
cmp byte [r14 + r12 + 1], 0x30
cmove rax, r8
cmp byte [r14 + r12], 0x30
cmovne rax, r12
lea rcx, [r12 - 1]
cmp byte [r14 + r12 - 1], 0x30
cmove rcx, rax
lea r8, [r12 - 2]
cmp byte [r14 + r12 - 2], 0x30
cmove r8, rcx
add r12, 0xfffffffffffffffc
cmp r12, 0xfffffffffffffffe
jne 0x14007c2f0
lea r13, [r14 + r15]
lea rax, [r14 + 0x10]
mov qword [rsp + 0x30], rax
xor ecx, ecx
jmp 0x14007c363
add rcx, 1
mov rax, r15
shr rax, cl
test rax, rax
je 0x14007c572
mov r11, r8
shr r11, cl
mov r9d, 1
shl r9, cl
mov r12, r15
sub r12, r9
jbe 0x14007c350
and r11b, 1
neg r11b
cmp r12, 8
jb 0x14007c39b
cmp r14, r13
jae 0x14007c3a5
mov rax, r13
sub rax, r9
lea rdx, [r14 + r9]
cmp rdx, rax
jae 0x14007c3a5
mov rsi, r9
xor ebp, ebp
jmp 0x14007c549
movzx r10d, r11b
cmp r12, 0x10
jae 0x14007c41e
xor ebp, ebp
mov rdx, rbp
mov rbp, r12
and rbp, 0xfffffffffffffff8
lea rsi, [r9 + rbp]
movd xmm0, r10d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
lea rax, [r14 + rdx]
sub rdx, rbp
nop word cs:[rax + rax]
nop
mov rdi, qword [rax]
movq xmm1, rdi
mov rbx, qword [rax + r9]
movq xmm2, rbx
xor rbx, rdi
movq xmm3, rbx
pand xmm3, xmm0
pxor xmm1, xmm3
movq qword [rax], xmm1
pxor xmm3, xmm2
movq qword [rax + r9], xmm3
add rax, 8
add rdx, 8
jne 0x14007c3e0
jmp 0x14007c540
mov rdi, r13
mov rbp, r12
and rbp, 0xfffffffffffffff0
movd xmm0, r10d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rax, [rbp - 0x10]
mov r15, rax
shr r15, 4
add r15, 1
test rax, rax
je 0x14007c4da
mov rdx, r15
and rdx, 0xfffffffffffffffe
mov rax, qword [rsp + 0x30]
lea r13, [rax + r9]
xor esi, esi
nop word cs:[rax + rax]
nop
movdqu xmm1, xmmword [r14 + rsi]
movdqu xmm2, xmmword [r13 + rsi - 0x10]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqu xmmword [r14 + rsi], xmm1
pxor xmm3, xmm2
movdqu xmmword [r13 + rsi - 0x10], xmm3
movdqu xmm1, xmmword [r14 + rsi + 0x10]
movdqu xmm2, xmmword [r13 + rsi]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqu xmmword [r14 + rsi + 0x10], xmm1
pxor xmm3, xmm2
movdqu xmmword [r13 + rsi], xmm3
add rsi, 0x20
add rdx, 0xfffffffffffffffe
jne 0x14007c470
jmp 0x14007c4dc
xor esi, esi
test r15b, 1
mov r13, rdi
je 0x14007c515
lea rax, [r9 + rsi]
movdqu xmm1, xmmword [r14 + rsi]
movdqu xmm2, xmmword [r14 + rax]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqu xmmword [r14 + rsi], xmm1
pxor xmm3, xmm2
movdqu xmmword [r14 + rax], xmm3
cmp r12, rbp
mov r15, qword [rsp + 0x28]
je 0x14007c350
test r12b, 8
jne 0x14007c3b1
lea rsi, [r9 + rbp]
jmp 0x14007c549
cmp r12, rbp
je 0x14007c350
mov al, byte [r14 + rbp]
mov bl, byte [r14 + rsi]
mov edx, ebx
xor dl, al
and dl, r11b
xor al, dl
mov byte [r14 + rbp], al
xor dl, bl
mov byte [r14 + rsi], dl
lea rsi, [r9 + rbp]
add rsi, 1
add rbp, 1
jmp 0x14007c540
mov rax, r14
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret