Function at 0x431c30
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x88
lea rbp, [rsp + 0x80]
mov eax, dword [rbp + 0x70]
sar eax, 4
mov dword [rbp - 0x40], eax
shl eax, 4
mov rsi, rcx
mov dword [rbp + 0x58], edx
mov ecx, eax
mov dword [rbp + 0x60], r8d
mov qword [rbp + 0x68], r9
mov qword [rbp - 0x20], 0
mov qword [rbp - 0x18], 0
mov qword [rbp - 0x10], 0
mov qword [rbp - 8], 0
cmp eax, dword [rbp + 0x70]
jge 0x431ea0
cmp dword [rbp + 0x70], 0x78
jne 0x4321eb
mov rax, qword [rbp + 0x68]
mov dword [rbp - 0x40], 8
mov ecx, pe_nt_image_headers64
sub rsp, 0x200
lea rbx, [rsp + 0x30]
mov r8d, 0x20
mov qword [rax + 0x78], 0
mov qword [rax + 0x80], 0
mov r9, qword [rbp + 0x68]
xor eax, eax
movsx edx, byte [r9 + rax]
mov r10d, edx
sar r10d, 0x1f
xor edx, r10d
mov dword [rbx + rax*4], edx
movsx edx, byte [r9 + rax + 1]
sub dword [rbx + rax*4], r10d
mov r10d, edx
sar r10d, 0x1f
xor edx, r10d
mov dword [rbx + rax*4 + 4], edx
movsx edx, byte [r9 + rax + 2]
sub dword [rbx + rax*4 + 4], r10d
mov r10d, edx
sar r10d, 0x1f
xor edx, r10d
mov dword [rbx + rax*4 + 8], edx
movsx edx, byte [r9 + rax + 3]
sub dword [rbx + rax*4 + 8], r10d
mov r10d, edx
sar r10d, 0x1f
xor edx, r10d
mov dword [rbx + rax*4 + 0xc], edx
sub dword [rbx + rax*4 + 0xc], r10d
add rax, 4
cmp ecx, eax
jg 0x431cd5
lea rdx, [r8 + 0xf]
and rdx, 0xfffffffffffffff0
mov rax, rdx
call fcn.004582d0
sub rsp, rax
lea rax, [rsp + 0x30]
mov qword [rbp - 0x48], rax
mov rax, rdx
call fcn.004582d0
mov r8d, dword [rbp - 0x40]
sub rsp, rax
lea rax, [rsp + 0x30]
mov qword [rbp - 0x30], rax
test r8d, r8d
jle 0x431f24
mov edx, dword [rbp - 0x40]
mov qword [rbp - 0x50], rbx
lea r10, [rbx + 4]
lea r12, [rbp - 0x20]
mov r13, qword [rbp - 0x30]
mov r15, qword [rbp - 0x48]
mov qword [rbp + 0x50], rsi
mov r8, rbp
sub edx, 1
mov rax, qword [0x0047ce10]
mov rsi, rbx
add rdx, 1
shl rdx, 6
movzx ecx, byte [rax]
movzx edi, byte [rax + 1]
add rdx, rbx
movzx r14d, byte [rax + 2]
movzx eax, byte [rax + 3]
mov qword [rbp - 0x38], rdx
mov dword [rbp - 0x28], eax
lea rax, [rbx + 0x40]
mov dword [r13], 0
mov r11, r12
mov r9, r10
nop word [rax + rax]
mov edx, dword [r9]
add edx, dword [r9 - 4]
cmp ecx, edx
jl 0x431ed0
mov dword [r11], edx
add r11, 4
add r9, 8
cmp r11, r8
jne 0x431de0
mov r9d, dword [rbp - 0x1c]
mov edx, dword [rbp - 0x20]
xor ebx, ebx
add edx, r9d
cmp edi, edx
jl 0x431ee7
mov r11d, dword [rbp - 0x14]
add r11d, dword [rbp - 0x18]
mov dword [rbp - 0x20], edx
cmp edi, r11d
jl 0x4321dd
mov r9d, dword [rbp - 0xc]
add r9d, dword [rbp - 0x10]
mov dword [rbp - 0x1c], r11d
add edx, r11d
cmp edi, r9d
jl 0x4321ca
mov dword [rbp - 0x18], r9d
mov r9d, dword [rbp - 4]
add r9d, dword [rbp - 8]
cmp edi, r9d
jl 0x4321ca
mov dword [rbp - 0x14], r9d
cmp r14d, edx
jl 0x431ef6
mov r9d, dword [rbp - 0x14]
add r9d, dword [rbp - 0x18]
mov dword [rbp - 0x20], edx
cmp r14d, r9d
jl 0x4321d2
mov dword [rbp - 0x1c], r9d
add edx, r9d
cmp dword [rbp - 0x28], edx
jl 0x431e88
mov dword [r15], edx
test ebx, ebx
je 0x431efe
add dword [r13], 1
mov rdx, rsi
sar dword [rdx], 1
add rdx, 4
cmp rdx, rax
jne 0x431e90
jmp 0x431dd4
cdqe
shl rax, 2
call fcn.004582d0
movsxd r8, dword [rbp - 0x40]
shl r8, 2
sub rsp, rax
lea rbx, [rsp + 0x30]
test ecx, ecx
jg 0x431ccf
jmp 0x431d3e
mov r9d, dword [rbp - 0x1c]
mov edx, dword [rbp - 0x20]
mov ebx, 1
add edx, r9d
cmp edi, edx
jge 0x431e13
add ebx, 1
mov r11d, r9d
cmp r14d, edx
jge 0x431e61
add ebx, 1
jmp 0x431e7c
add rsi, 0x40
add rax, 0x40
add r13, 4
add r15, 4
add r10, 0x40
cmp rsi, qword [rbp - 0x38]
jne 0x431dcc
mov rbx, qword [rbp - 0x50]
mov rsi, qword [rbp + 0x50]
mov eax, dword [rbp + 0x58]
mov r13, qword [0x0047ceb0]
xor r11d, r11d
xor r14d, r14d
mov qword [rbp - 0x28], rbx
mov r8, qword [0x0047ce90]
mov edi, 0x7fffffff
sar eax, 1
mov rbx, qword [rbp - 0x48]
mov r10, qword [rbp - 0x30]
mov qword [rbp + 0x50], rsi
cdqe
lea r15, [rax + rax*8]
mov eax, dword [rbp - 0x40]
add r13, r15
lea r9d, [rax - 1]
mov esi, eax
mov r12d, r11d
movzx edx, byte [r13 + r11]
test esi, esi
jle 0x431fa4
xor eax, eax
jmp 0x431f88
movzx ecx, byte [r8 + 0x11]
add edx, ecx
lea rcx, [rax + 1]
cmp r9, rax
je 0x431fa4
mov rax, rcx
mov ecx, dword [r10 + rax*4]
test ecx, ecx
jg 0x431f75
movsxd rcx, dword [rbx + rax*4]
movzx ecx, byte [r8 + rcx]
add edx, ecx
lea rcx, [rax + 1]
cmp r9, rax
jne 0x431f85
cmp edi, edx
jle 0x431fad
mov edi, edx
movsxd r14, r12d
add r11, 1
add r8, 0x12
cmp r11, 9
jne 0x431f64
mov rsi, qword [rbp + 0x50]
add r15, qword [0x0047cec0]
mov edx, r14d
xor edi, edi
mov r9d, 8
mov r8, r15
mov rbx, qword [rbp - 0x28]
mov rcx, rsi
call fcn.00428e90
mov r12, qword [0x0047cea0]
lea rax, [r14 + r14*8]
lea rax, [r12 + rax*2]
add r12, 0xa2
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 0x40]
lea r13d, [rax - 1]
test eax, eax
jle 0x432194
mov qword [rbp - 0x40], rbx
mov r15, qword [rbp - 0x48]
jmp 0x432035
mov edx, dword [r15 + rdi*4]
mov r8, qword [rbp - 0x28]
mov r9d, 8
mov rcx, rsi
call fcn.00428e90
lea rax, [rdi + 1]
cmp r13, rdi
je 0x4320ac
mov rdi, rax
mov rax, qword [rbp - 0x30]
mov r10d, dword [rax + rdi*4]
test r10d, r10d
je 0x432013
mov r8, qword [rbp - 0x28]
mov r9d, 8
mov rcx, rsi
xor ebx, ebx
mov edx, 0x11
mov dword [rbp - 0x38], r10d
call fcn.00428e90
mov r10d, dword [rbp - 0x38]
lea r14d, [r10 - 1]
cmp r10d, 1
jle 0x43208e
nop dword [rax]
mov r9d, 8
mov r8, r12
mov rcx, rsi
add ebx, 1
mov edx, 0x11
call fcn.00428e90
cmp ebx, r14d
jne 0x432070
mov edx, dword [r15 + rdi*4]
mov r9d, 8
mov r8, r12
mov rcx, rsi
call fcn.00428e90
lea rax, [rdi + 1]
cmp r13, rdi
jne 0x432032
mov rax, qword [rbp - 0x48]
mov rbx, qword [rbp - 0x40]
mov rdi, rax
lea r12, [rax + r13*4 + 4]
mov eax, dword [rdi]
test eax, eax
jle 0x4320cd
mov rdx, rbx
mov rcx, rsi
call 0x432210
add rdi, 4
add rbx, 0x40
cmp r12, rdi
jne 0x4320bc
mov rax, qword [rbp + 0x68]
shl r13, 4
mov rdi, qword [0x0047ce00]
lea r14, [rax + 0x10]
lea rax, [rax + r13 + 0x20]
mov qword [rbp - 0x28], rdi
mov qword [rbp - 0x38], rax
jmp 0x43210f
add qword [rbp - 0x30], 4
add r14, 0x10
cmp qword [rbp - 0x38], r14
je 0x432194
mov rax, qword [rbp - 0x30]
mov r13d, dword [rax]
test r13d, r13d
jle 0x4320fc
sub r13d, 1
lea r12, [r14 - 0x10]
movsx edx, byte [r12]
mov r15d, r13d
mov ebx, edx
neg ebx
test dl, dl
movsx ebx, bl
cmovg ebx, edx
test r13d, r13d
je 0x432161
nop dword [rax]
mov ecx, r15d
mov edx, ebx
mov r9d, 8
sar edx, cl
mov r8, rdi
mov rcx, rsi
and edx, 1
call fcn.00428e90
sub r15d, 1
jne 0x432140
and ebx, 1
mov r8, qword [rbp - 0x28]
mov r9d, 8
mov rcx, rsi
mov edx, ebx
add r12, 1
call fcn.00428e90
cmp r14, r12
jne 0x432123
add qword [rbp - 0x30], 4
add r14, 0x10
cmp qword [rbp - 0x38], r14
jne 0x43210f
mov rax, qword [rbp - 0x48]
mov r9d, dword [rbp + 0x58]
mov rcx, rsi
mov r8d, dword [rbp + 0x70]
mov rdx, qword [rbp + 0x68]
mov qword [rsp + 0x28], rax
mov eax, dword [rbp + 0x60]
mov dword [rsp + 0x20], eax
call fcn.0043c540
nop
lea rsp, [rbp + 8]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
add ebx, 1
jmp 0x431e58
add ebx, 1
add edx, r11d
jmp 0x431e7c
add ebx, 1
add edx, r9d
mov r11d, r9d
jmp 0x431e58
mov r8d, 0x59
lea rdx, str..._silk_encode_pulses.c
lea rcx, [0x00473f78]
call fcn.0040b720
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov rsi, rdx
lea r8, [rsp + 0x60]
lea rdx, [rsp + 0x40]
mov rbx, rcx
lea rax, [rsi + 4]
mov ecx, dword [rax]
add ecx, dword [rax - 4]
add rdx, 4
add rax, 8
mov dword [rdx - 4], ecx
cmp r8, rdx
jne 0x432234
mov edi, dword [rsp + 0x4c]
movsxd r13, dword [rsp + 0x48]
movsxd rbp, dword [rsp + 0x50]
mov ecx, dword [rsp + 0x5c]
lea r15d, [r13 + rdi]
mov dword [rsp + 0x24], edi
mov edi, dword [rsp + 0x54]
movsxd r14, dword [rsp + 0x40]
movsxd r11, dword [rsp + 0x44]
mov dword [rsp + 0x2c], ecx
lea r12d, [rbp + rdi]
mov dword [rsp + 0x28], edi
movsxd rdi, dword [rsp + 0x58]
lea eax, [r14 + r11]
add ecx, edi
lea r10d, [rax + r15]
lea edx, [r12 + rcx]
mov dword [rsp + 0x30], ecx
mov dword [rsp + 0x20], edx
add edx, r10d
test edx, edx
jle 0x4322e4
mov rcx, qword [0x0047cf20]
movsxd rdx, edx
mov r9d, 8
mov dword [rsp + 0x3c], eax
mov dword [rsp + 0x38], r11d
movzx r8d, byte [rcx + rdx]
mov edx, r10d
mov rcx, rbx
mov dword [rsp + 0x34], r10d
add r8, qword [0x0047cf10]
call fcn.00428e90
mov eax, dword [rsp + 0x3c]
movsxd r11, dword [rsp + 0x38]
mov r10d, dword [rsp + 0x34]
test r10d, r10d
jle 0x432321
movsxd r10, r10d
mov r9d, 8
mov rcx, rbx
mov dword [rsp + 0x34], eax
mov rdx, qword [0x0047cf20]
mov dword [rsp + 0x38], r11d
movzx r8d, byte [rdx + r10]
mov edx, eax
add r8, qword [0x0047cf00]
call fcn.00428e90
movsxd r11, dword [rsp + 0x38]
mov eax, dword [rsp + 0x34]
test eax, eax
jle 0x432355
cdqe
mov r9d, 8
mov rcx, rbx
mov dword [rsp + 0x34], r11d
mov rdx, qword [0x0047cf20]
movzx r8d, byte [rdx + rax]
mov edx, r14d
add r8, qword [0x0047cef0]
call fcn.00428e90
movsxd r11, dword [rsp + 0x34]
test r14d, r14d
jle 0x432387
mov edx, dword [rsi]
mov r9d, 8
mov rcx, rbx
mov dword [rsp + 0x34], r11d
mov rax, qword [0x0047cf20]
movzx r8d, byte [rax + r14]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd r11, dword [rsp + 0x34]
test r11d, r11d
jle 0x4323b0
mov rax, qword [0x0047cf20]
mov edx, dword [rsi + 8]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rax + r11]
add r8, qword [0x0047cee0]
call fcn.00428e90
test r15d, r15d
jle 0x4323dc
mov rax, qword [0x0047cf20]
movsxd r15, r15d
mov edx, r13d
mov rcx, rbx
mov r9d, 8
movzx r8d, byte [rax + r15]
add r8, qword [0x0047cef0]
call fcn.00428e90
test r13d, r13d
jle 0x432405
mov rax, qword [0x0047cf20]
mov edx, dword [rsi + 0x10]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rax + r13]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd rax, dword [rsp + 0x24]
test eax, eax
jle 0x432432
mov rdx, qword [0x0047cf20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rdx + rax]
mov edx, dword [rsi + 0x18]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd rax, dword [rsp + 0x20]
test eax, eax
jle 0x43245f
mov rdx, qword [0x0047cf20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rdx + rax]
mov edx, r12d
add r8, qword [0x0047cf00]
call fcn.00428e90
test r12d, r12d
jle 0x43248a
mov rax, qword [0x0047cf20]
movsxd r12, r12d
mov edx, ebp
mov rcx, rbx
mov r9d, 8
movzx r8d, byte [rax + r12]
add r8, qword [0x0047cef0]
call fcn.00428e90
test ebp, ebp
jle 0x4324b2
mov rax, qword [0x0047cf20]
mov edx, dword [rsi + 0x20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rax + rbp]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd rax, dword [rsp + 0x28]
test eax, eax
jle 0x4324df
mov rdx, qword [0x0047cf20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rdx + rax]
mov edx, dword [rsi + 0x28]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd rax, dword [rsp + 0x30]
test eax, eax
jle 0x43250b
mov rdx, qword [0x0047cf20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rdx + rax]
mov edx, edi
add r8, qword [0x0047cef0]
call fcn.00428e90
test edi, edi
jle 0x432533
mov rax, qword [0x0047cf20]
mov edx, dword [rsi + 0x30]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rax + rdi]
add r8, qword [0x0047cee0]
call fcn.00428e90
movsxd rax, dword [rsp + 0x2c]
test eax, eax
jg 0x432550
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [0x0047cf20]
mov r9d, 8
mov rcx, rbx
movzx r8d, byte [rdx + rax]
mov edx, dword [rsi + 0x38]
add r8, qword [0x0047cee0]
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.00428e90