Function at 0x140292590
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0xc8
mov rdi, rcx
mov rsi, r8
mov r14, r9
mov eax, dword [rdx]
xor ebx, ebx
xor r11d, r11d
xor r12d, r12d
mov r10, qword [rdi]
mov r13d, dword [rsi]
mov dword [r14], r11d
mov dword [r10 + 4], eax
mov dword [r10 + 0x1c], r11d
mov dword [r10 + 8], r11d
test r13d, r13d
jle 0x140292622
mov r11, rsp
lea rcx, [rsp + 0x30]
mov edx, r13d
movabs r8, 0x801208384ff00
lea r9, [0x140574d7c]
lea rax, str.Reading_budget_file_to_determine_number_of_terms_per_time_step.
lea r10, [0x1416ce9bc]
lea rbp, [rsp + 0x80]
mov qword [rcx], 0
mov qword [rcx + 0x50], 0x3f
mov qword [rcx + 0x58], rax
mov qword [r11 + 0x20], rbp
mov qword [r11 + 0x28], r10
call fcn.140353740
mov rax, qword [rdi + 0x38]
mov rcx, rdi
xor r8d, r8d
lea rdx, [rsp + 0xc0]
call qword [rax + 8]
mov rax, qword [rdi]
test byte [rsp + 0xc0], 1
je 0x1402931a1
movsxd rbp, dword [rax + 0x10c]
cmp rbp, rbx
mov r9d, dword [rax + 0xc]
mov r8d, dword [rax + 8]
cmovg rbx, rbp
inc r8d
mov dword [rax + 8], r8d
cmp r9d, dword [rax + 0x14]
jne 0x140292673
mov ebp, dword [rax + 0x10]
cmp ebp, dword [rax + 0x18]
je 0x140292622
mov r11, qword [rax + 0x48]
mov r9, r11
and r9, 0xffffffffffffff00
movabs rbp, 0xf000000000
shr r9, 8
and r11, rbp
shl r9, 0x3f
movabs r10, 0xffffff0fffffffff
shr r9, 0x37
mov ebp, 0x10
shr r11, 0x24
add r9, 0x85
movsxd r8, r8d
and r9, r10
shl r11, 0x3c
test r8, r8
lea rcx, [rsp + 0x98]
cmovle r8, r12
mov edx, 2
mov r15d, 1
shr r11, 0x18
or r9, r11
mov qword [rax + 0x48], r9
mov r9, rbp
mov qword [rax + 0x38], rbp
mov qword [rax + 0x50], r15
mov qword [rax + 0x40], r12
mov qword [rax + 0x70], r15
mov qword [rax + 0x60], r8
mov qword [rax + 0x68], rbp
call fcn.14035cbf0
mov r9d, eax
mov rdx, qword [rdi]
movabs rax, 0xfffffff00fffffff
and r9d, 1
movabs r10, 0xf000000000
shl r9d, 4
movabs r11, 0x10000000000
and rax, qword [rdx + 0x48]
add rax, 0x40000000
mov r8d, eax
and r10, rax
and r8d, 1
add r8d, r8d
or r8d, r9d
mov r9, rax
and r9, 0xffffffffffffff00
shr r9, 8
mov qword [rdx + 0x48], rax
and rax, r11
and r9d, 1
add rdx, 0x30
shl r9d, 0x15
shr r10, 0x24
or r8d, r9d
shr rax, 0x28
and r8d, 0xfe1fffff
shl r10d, 0x15
shl eax, 0x19
or r8d, r10d
or r8d, eax
add r8d, 0x40000
mov rcx, qword [rsp + 0x98]
call fcn.14035b170
mov rdx, qword [rdi]
movabs rax, 0xf000000000
movabs r10, 0xffffff0fffffffff
lea rcx, [rsp + 0xa0]
mov r11, qword [rdx + 0xa0]
mov r9, r11
and r9, 0xffffffffffffff00
and r11, rax
shr r9, 8
mov eax, 4
shl r9, 0x3f
shr r9, 0x37
shr r11, 0x24
add r9, 0x85
shl r11, 0x3c
and r9, r10
movsxd r8, dword [rdx + 8]
test r8, r8
mov qword [rdx + 0x90], rax
cmovle r8, r12
shr r11, 0x18
or r9, r11
mov qword [rdx + 0xa0], r9
mov r9, rax
mov qword [rdx + 0xa8], r15
mov qword [rdx + 0x98], r12
mov qword [rdx + 0xc8], r15
mov qword [rdx + 0xb8], r8
mov qword [rdx + 0xc0], rax
mov edx, 2
call fcn.14035cbf0
mov r9d, eax
mov rdx, qword [rdi]
movabs rax, 0xfffffff00fffffff
and r9d, 1
movabs r10, 0xf000000000
shl r9d, 4
movabs r11, 0x10000000000
and rax, qword [rdx + 0xa0]
add rax, 0x40000000
mov r8d, eax
and r10, rax
and r8d, 1
add r8d, r8d
or r8d, r9d
mov r9, rax
and r9, 0xffffffffffffff00
shr r9, 8
mov qword [rdx + 0xa0], rax
and rax, r11
and r9d, 1
add rdx, 0x88
shl r9d, 0x15
shr r10, 0x24
or r8d, r9d
shr rax, 0x28
and r8d, 0xfe1fffff
shl r10d, 0x15
shl eax, 0x19
or r8d, r10d
or r8d, eax
add r8d, 0x40000
mov rcx, qword [rsp + 0xa0]
call fcn.14035b170
mov rdx, qword [rdi]
movabs rax, 0xf000000000
movabs r10, 0xffffff0fffffffff
lea rcx, [rsp + 0xa8]
mov r11, qword [rdx + 0x3c0]
mov r9, r11
and r9, 0xffffffffffffff00
and r11, rax
shr r9, 8
shl r9, 0x3f
shr r9, 0x37
shr r11, 0x24
add r9, 0x85
shl r11, 0x3c
and r9, r10
movsxd r8, dword [rdx + 8]
test r8, r8
mov qword [rdx + 0x3b0], rbp
cmovle r8, r12
shr r11, 0x18
or r9, r11
mov qword [rdx + 0x3c0], r9
mov r9d, 0x10
mov qword [rdx + 0x3c8], r15
mov qword [rdx + 0x3b8], r12
mov qword [rdx + 0x3e8], r15
mov qword [rdx + 0x3d8], r8
mov qword [rdx + 0x3e0], rbp
mov edx, 2
call fcn.14035cbf0
mov r9d, eax
mov rdx, qword [rdi]
movabs rax, 0xfffffff00fffffff
and r9d, 1
movabs r10, 0xf000000000
shl r9d, 4
movabs r11, 0x10000000000
and rax, qword [rdx + 0x3c0]
add rax, 0x40000000
mov r8d, eax
and r10, rax
and r8d, 1
add r8d, r8d
or r8d, r9d
mov r9, rax
and r9, 0xffffffffffffff00
shr r9, 8
mov qword [rdx + 0x3c0], rax
and rax, r11
and r9d, 1
add rdx, 0x3a8
shl r9d, 0x15
shr r10, 0x24
or r8d, r9d
shr rax, 0x28
and r8d, 0xfe1fffff
shl r10d, 0x15
shl eax, 0x19
or r8d, r10d
or r8d, eax
add r8d, 0x40000
mov rcx, qword [rsp + 0xa8]
call fcn.14035b170
mov rdx, qword [rdi]
movabs rax, 0xf000000000
movabs r10, 0xffffff0fffffffff
lea rcx, [rsp + 0xb0]
mov r11, qword [rdx + 0x128]
mov r9, r11
and r9, 0xffffffffffffff00
and r11, rax
shr r9, 8
mov eax, 4
shl r9, 0x3f
shr r9, 0x37
shr r11, 0x24
add r9, 0x85
shl r11, 0x3c
and r9, r10
movsxd r8, dword [rdx + 8]
test r8, r8
mov qword [rdx + 0x118], rax
cmovle r8, r12
shr r11, 0x18
or r9, r11
mov qword [rdx + 0x128], r9
mov r9, rax
mov qword [rdx + 0x130], r15
mov qword [rdx + 0x120], r12
mov qword [rdx + 0x150], r15
mov qword [rdx + 0x140], r8
mov qword [rdx + 0x148], rax
mov edx, 2
call fcn.14035cbf0
mov r9d, eax
mov rdx, qword [rdi]
movabs rax, 0xfffffff00fffffff
and r9d, 1
movabs r10, 0xf000000000
shl r9d, 4
movabs r11, 0x10000000000
and rax, qword [rdx + 0x128]
add rax, 0x40000000
mov r8d, eax
and r10, rax
and r8d, 1
add r8d, r8d
or r8d, r9d
mov r9, rax
and r9, 0xffffffffffffff00
shr r9, 8
mov qword [rdx + 0x128], rax
and rax, r11
and r9d, 1
add rdx, 0x110
shl r9d, 0x15
shr r10, 0x24
or r8d, r9d
shr rax, 0x28
and r8d, 0xfe1fffff
shl r10d, 0x15
shl eax, 0x19
or r8d, r10d
or r8d, eax
add r8d, 0x40000
mov rcx, qword [rsp + 0xb0]
call fcn.14035b170
mov rdx, qword [rdi]
movabs rax, 0xf000000000
movabs r10, 0xffffff0fffffffff
test rbx, rbx
lea rcx, [rsp + 0xb8]
mov r11, qword [rdx + 0x1b8]
mov r9, r11
cmovle rbx, r12
and r9, 0xffffffffffffff00
shr r9, 8
and r11, rax
shl r9, 0x3f
mov rax, rbx
shr r9, 0x37
mov r8, rbx
shr r11, 0x24
add r9, 0x85
shl r11, 0x3c
and r9, r10
shr r11, 0x18
mov r10, rsp
or r9, r11
mov qword [rdx + 0x1b8], r9
movsxd r9, dword [rdx + 8]
test r9, r9
mov qword [rdx + 0x1a8], rbp
cmovle r9, r12
shl rax, 4
mov qword [rdx + 0x1c0], 2
mov qword [rdx + 0x1b0], r12
mov qword [rdx + 0x1e0], r15
mov qword [rdx + 0x1d0], rbx
mov qword [rdx + 0x1f8], r15
mov qword [rdx + 0x1e8], r9
mov qword [rdx + 0x1d8], rbp
mov qword [rdx + 0x1f0], rax
mov edx, 3
mov qword [r10 + 0x20], rbp
call fcn.14035cbf0
mov ebx, eax
mov rdx, qword [rdi]
movabs rax, 0xfffffff00fffffff
and ebx, 1
movabs r9, 0xf000000000
shl ebx, 4
movabs r10, 0x10000000000
and rax, qword [rdx + 0x1b8]
add rax, 0x40000000
mov r8d, eax
and r9, rax
and r8d, 1
add r8d, r8d
or r8d, ebx
mov rbx, rax
and rbx, 0xffffffffffffff00
shr rbx, 8
mov qword [rdx + 0x1b8], rax
and rax, r10
and ebx, 1
add rdx, 0x1a0
shl ebx, 0x15
shr r9, 0x24
or r8d, ebx
shr rax, 0x28
and r8d, 0xfe1fffff
shl r9d, 0x15
shl eax, 0x19
or r8d, r9d
or r8d, eax
add r8d, 0x40000
mov rcx, qword [rsp + 0xb8]
call fcn.14035b170
mov r11, qword [rdi]
mov r9, r12
mov r8, qword [r11 + 0x1e8]
mov rbx, qword [r11 + 0x1f8]
test r8, r8
jle 0x140292dd6
mov r10, qword [r11 + 0x1a0]
mov rax, qword [r11 + 0x1d0]
mov qword [rsp + 0x60], rdi
mov qword [rsp + 0x68], rsi
mov qword [rsp + 0x70], r14
mov rsi, r12
mov r14, rsi
test rax, rax
jle 0x140292dbb
mov rdi, qword [r11 + 0x1f0]
lea rcx, [rbx + r9]
imul rcx, rdi
imul rdi, rbx
mov rdx, rcx
add rcx, r10
sub rdx, rdi
sub rcx, rdi
add rdx, r10
mov dil, 0x20
nop dword [rax + rax]
nop dword [rax]
inc rsi
mov byte [r14 + rcx], dil
mov byte [r14 + rdx + 1], dil
mov byte [r14 + rdx + 2], dil
mov byte [r14 + rdx + 3], dil
mov byte [r14 + rdx + 4], dil
mov byte [r14 + rdx + 5], dil
mov byte [r14 + rdx + 6], dil
mov byte [r14 + rdx + 7], dil
mov byte [r14 + rdx + 8], dil
mov byte [r14 + rdx + 9], dil
mov byte [r14 + rdx + 0xa], dil
mov byte [r14 + rdx + 0xb], dil
mov byte [r14 + rdx + 0xc], dil
mov byte [r14 + rdx + 0xd], dil
mov byte [r14 + rdx + 0xe], dil
mov byte [r14 + rdx + 0xf], dil
add r14, 0x10
cmp rsi, rax
jb 0x140292d60
inc r9
cmp r9, r8
jb 0x140292d1d
mov rdi, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
movabs r8, 0x801208384ff00
lea rcx, [rsp + 0x30]
mov edx, dword [r11 + 4]
mov qword [rcx], 0
call fcn.1403b2190
mov rdx, qword [rdi]
mov rax, r15
mov rbx, rbp
movsxd rcx, dword [rdx + 8]
test rcx, rcx
jle 0x1402930c4
mov dword [rsp + 0x60], r13d
mov r13, rax
mov r12, rcx
mov r15, r14
mov r14, rdi
mov rdi, rbp
mov r9, qword [r14 + 0x38]
mov rcx, r14
mov r8, rsi
lea rdx, [rsp + 0xc0]
call qword [r9 + 8]
mov rbp, qword [r14]
test byte [rsp + 0xc0], 1
je 0x1402930b9
mov r8d, 0x10
mov r9, qword [rbp + 0x70]
shl r9, 4
mov rcx, qword [rbp + 0x30]
add rbp, 0x20
sub rcx, r9
mov rdx, rbp
add rcx, rbx
call fcn.1404407e0
mov rdx, qword [r14]
mov r8d, 0x10
mov r11, qword [rdx + 0xc8]
shl r11, 2
mov r9, qword [rdx + 0x88]
neg r11
mov r10d, dword [rdx + 0x84]
mov rcx, qword [rdx + 0x3a8]
lea r9, [r9 + r13*4]
mov dword [r11 + r9], r10d
mov r9, qword [rdx + 0x3e8]
add rdx, 0x398
shl r9, 4
sub rcx, r9
add rcx, rbx
call fcn.1404407e0
mov rbp, qword [r14]
mov r11, qword [rbp + 0x150]
shl r11, 2
mov r9, qword [rbp + 0x110]
neg r11
mov r10d, dword [rbp + 0x10c]
lea r9, [r9 + r13*4]
mov dword [r11 + r9], r10d
movsxd r9, dword [rbp + 0x10c]
test r9, r9
jle 0x140292f6c
mov r10, qword [rbp + 0x198]
mov r11d, 1
shl r10, 4
mov rcx, rdi
test r9, r9
jle 0x140292f6c
mov rdx, qword [rbp + 0x1f8]
neg rdx
add rdx, r13
imul rdx, qword [rbp + 0x1f0]
mov rax, qword [rbp + 0x1e0]
shl rax, 4
mov r8, qword [rbp + 0x1a0]
sub r8, rax
mov rax, qword [rbp + 0x198]
add r8, rcx
shl rax, 4
mov rbp, qword [rbp + 0x158]
sub rbp, rax
movups xmm0, xmmword [rbp + r10]
movups xmmword [r8 + rdx], xmm0
inc r11
add r10, 0x10
add rcx, 0x10
cmp r11, r9
jg 0x140292f69
mov rbp, qword [r14]
jmp 0x140292f07
mov rbp, qword [r14]
mov r10, rsp
mov edx, 0x10
mov r9, rdx
lea rcx, [rbp + 0xe8]
lea r8, [rbp + 0x388]
mov qword [r10 + 0x20], 2
call fcn.140342560
test eax, eax
je 0x1402930a9
test byte [rbp + 0x268], 1
je 0x1402930a9
mov r11, qword [rbp + 0x280]
mov r9d, 0x80000000
test r11, r11
jle 0x14029309c
mov rdx, qword [rbp + 0x250]
cmp r11, 4
jl 0x140293199
mov rax, rdx
and rax, 0xf
je 0x140292fe2
neg rax
add rax, 0x10
shr rax, 2
lea r10, [rax + 4]
cmp r11, r10
jl 0x140293199
mov r10, r11
xor ecx, ecx
sub r10, rax
and r10, 3
neg r10
add r10, r11
test rax, rax
jbe 0x140293019
mov r8d, dword [rdx + rcx*4]
cmp r8d, r9d
cmovg r9d, r8d
inc rcx
cmp rcx, rax
jb 0x140293006
movd xmm0, r9d
pshufd xmm0, xmm0, 0
movdqu xmm1, xmmword [rdx + rax*4]
add rax, 4
movdqa xmm2, xmm1
pxor xmm1, xmm0
pcmpgtd xmm2, xmm0
pand xmm2, xmm1
pxor xmm0, xmm2
cmp rax, r10
jb 0x140293023
movdqa xmm1, xmm0
movdqa xmm2, xmm0
psrldq xmm1, 8
pcmpgtd xmm2, xmm1
pxor xmm0, xmm1
pand xmm2, xmm0
pxor xmm2, xmm1
movdqa xmm0, xmm2
movdqa xmm3, xmm2
psrldq xmm0, 4
pcmpgtd xmm3, xmm0
pxor xmm2, xmm0
pand xmm3, xmm2
pxor xmm3, xmm0
movd r9d, xmm3
cmp r10, r11
jae 0x14029309c
mov eax, dword [rdx + r10*4]
cmp eax, r9d
cmovg r9d, eax
inc r10
cmp r10, r11
jb 0x140293089
mov r10d, dword [r15]
cmp r10d, r9d
cmovg r9d, r10d
mov dword [r15], r9d
inc r13
add rbx, 0x10
cmp r13, r12
jle 0x140292e1f
mov r13d, dword [rsp + 0x60]
mov rdx, rbp
mov rdi, r14
movabs r8, 0x801208384ff00
lea rcx, [rsp + 0x30]
mov edx, dword [rdx + 4]
mov qword [rcx], 0
call fcn.1403b2190
test r13d, r13d
jle 0x140293185
mov rsi, rsp
lea rcx, [rsp + 0x30]
mov edx, r13d
movabs r8, 0x801208384ff00
lea r9, [0x140574d84]
lea rax, [0x140574e30]
lea rbp, [0x1416ce9c8]
lea rbx, [rsp + 0x60]
mov qword [rcx], 0
mov qword [rcx + 0x30], 9
mov qword [rcx + 0x38], rax
mov qword [rsi + 0x20], rbx
mov qword [rsi + 0x28], rbp
call fcn.140353740
mov rax, qword [rdi]
lea rcx, [rsp + 0x30]
lea r8, [rsp + 0x90]
mov edx, dword [rax + 8]
mov dword [rcx + 0x60], edx
lea rdx, [0x140574d8c]
call fcn.140356950
lea rdx, [0x140574d94]
lea rcx, [rsp + 0x30]
lea rax, str._unique_flow_terms_in_budget_file.
lea r8, [rsp + 0x70]
mov qword [rcx + 0x40], 0x22
mov qword [rcx + 0x48], rax
call fcn.140356950
add rsp, 0xc8
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
xor r10d, r10d
jmp 0x140293084
mov r8d, dword [rax + 8]
jmp 0x140292673