Function at 0x140023ad0
Capabilities:
Encrypt data using curve25519

Disassembly:
mov r11, rsp
push rbp
push rbx
push rdi
lea rbp, [r11 - 0x5f]
sub rsp, 0xe0
xorps xmm0, xmm0
mov qword [r11 - 0x40], r15
xor r15d, r15d
xor eax, eax
cmp byte [rcx + 0x2ff], 8
mov ebx, r15d
mov byte [rcx + 0x472], bl
mov rdi, rcx
movups xmmword [rbp - 0x39], xmm0
mov qword [rbp + 7], rax
movups xmmword [rbp - 0x29], xmm0
movups xmmword [rbp - 0x19], xmm0
movups xmmword [rbp - 9], xmm0
jne 0x140024618
cmp byte [rcx + 0x303], al
jne 0x140024618
cmp dword [rcx + 0x4d0], 0x16d
mov qword [r11 - 0x20], rsi
mov qword [r11 - 0x28], r12
mov r12d, 0x20
mov qword [r11 - 0x30], r13
mov qword [r11 - 0x38], r14
lea r14, [rcx + 0x4d8]
mov rax, qword [r14]
mov dword [rbp + 0x77], r12d
jne 0x140023c7d
test rax, rax
jne 0x140023bbf
test r14, r14
je 0x140023dde
mov rax, qword [0x140397868]
lea ecx, [r15 + 0x50]
test rax, rax
je 0x140023b7c
call rax
jmp 0x140023b81
call fcn.1400b85d8
mov qword [r14], rax
test rax, rax
jne 0x140023b91
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov qword [rax], r15
lea rcx, [0x1400ec198]
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], r15
mov qword [rax + 0x20], r15
mov qword [rax + 0x28], r15
mov qword [rax + 0x30], r15
mov qword [rax + 0x38], r15
mov qword [rax + 0x40], r15
mov qword [rax + 0x48], r15
mov qword [rax + 8], rcx
cmp byte [rdi + 0x4e0], bl
jne 0x140023d9c
mov r15, qword [r14]
test r15, r15
je 0x140023dde
mov rcx, qword [rdi + 0x90]
test rcx, rcx
je 0x140023dde
lea rsi, [r15 + 0x30]
test rsi, rsi
je 0x140023c61
mov r8d, r12d
mov rdx, rsi
call fcn.14000b930
mov ebx, eax
test eax, eax
je 0x140023c05
jns 0x140023c10
jmp 0x140023c66
and byte [rsi], 0xf8
and byte [rsi + 0x1f], 0x3f
or byte [rsi + 0x1f], 0x40
lea rcx, [r15 + 0x10]
test rcx, rcx
je 0x140023c37
test byte [rsi], 7
jne 0x140023c37
cmp byte [rsi + 0x1f], 0
jl 0x140023c37
lea r8, str.InternetOpenA
mov rdx, rsi
call fcn.140058a40
mov ebx, eax
jmp 0x140023c3c
mov ebx, 0xffffff56
mov eax, ebx
test ebx, ebx
jne 0x140023c68
xor eax, eax
mov dword [rdi + 0x4d0], 0x16d
mov word [rdi + 0x48a], ax
mov byte [rdi + 0x4e0], 0x45
jmp 0x140023d94
mov ebx, 0xffffff53
mov eax, ebx
cmp eax, 0xffffff94
jne 0x1400245f8
mov byte [rdi + 0x4e0], 0x45
jmp 0x140023d94
test rax, rax
jne 0x140023d67
test r14, r14
je 0x140023dde
mov rax, qword [0x140397868]
mov ecx, 0x10c8
test rax, rax
je 0x140023ca4
call rax
jmp 0x140023ca9
call fcn.1400b85d8
mov qword [r14], rax
mov rbx, rax
test rax, rax
jne 0x140023cbc
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov r13, qword [rdi + 0xa8]
xor edx, edx
mov r8d, 0x10c8
mov rcx, rbx
call fcn.1400b1300
lea rcx, [rbx + 0xc98]
lea rsi, [rbx + 0x870]
lea r12, [rbx + 0x448]
lea r15, [rbx + 0x20]
test rcx, rcx
je 0x140023d07
xor eax, eax
xor edx, edx
mov dword [rcx + 4], eax
mov r8d, 0x420
add rcx, 8
call fcn.1400b1300
test r15, r15
je 0x140023d22
xor eax, eax
lea rcx, [r15 + 8]
xor edx, edx
mov qword [r15], rax
mov r8d, 0x420
call fcn.1400b1300
test r12, r12
je 0x140023d40
xor r15d, r15d
lea rcx, [r12 + 8]
xor edx, edx
mov qword [r12], r15
mov r8d, 0x420
call fcn.1400b1300
test rsi, rsi
je 0x140023d5d
lea rcx, [rsi + 8]
mov qword [rsi], 0
xor edx, edx
mov r8d, 0x420
call fcn.1400b1300
mov qword [rbx + 0x18], r13
mov r12d, 0x20
cmp byte [rdi + 0x4e0], 0
jne 0x140023d9c
mov rdx, qword [r14]
xor r8d, r8d
mov rcx, rdi
call fcn.140013c60
mov ebx, eax
test eax, eax
je 0x140023d8d
cmp eax, 0xffffff94
jne 0x1400245f8
mov byte [rdi + 0x4e0], 0x25
test ebx, ebx
jne 0x1400245f8
cmp byte [rdi + 0x2ff], 8
mov byte [rdi + 0x472], 1
jne 0x14002427b
mov rax, qword [0x140397868]
mov r13d, 9
mov dword [rbp - 0x11], r13d
mov ebx, 4
mov dword [rbp - 9], ebx
mov ecx, 0x100
mov dword [rbp + 3], 0x100
test rax, rax
je 0x140023de8
call rax
jmp 0x140023ded
mov ebx, 0xffffff53
jmp 0x1400245f8
call fcn.1400b85d8
mov qword [rbp - 0x29], rax
test rax, rax
jne 0x140023dfe
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
cmp dword [rdi + 0x4d0], 0x16d
mov rcx, qword [r14]
jne 0x140023e27
test rcx, rcx
je 0x140023e37
movups xmm0, xmmword [rcx + 0x10]
mov dword [rbp + 3], r12d
movups xmmword [rax], xmm0
movups xmm1, xmmword [rcx + 0x20]
movups xmmword [rax + 0x10], xmm1
jmp 0x140023e50
lea r8, [rbp + 3]
mov rdx, rax
call fcn.140032d80
test eax, eax
je 0x140023e41
mov ebx, 0xfffffe9e
jmp 0x1400245f8
mov r12d, dword [rbp + 3]
mov ebx, dword [rbp - 9]
mov r13d, dword [rbp - 0x11]
mov dword [rbp + 0x77], r12d
cmp qword [rdi + 0x1e8], 0
lea esi, [r12 + rbx]
mov dword [rbp + 0x6f], esi
mov dword [rbp - 9], esi
mov dword [rbp + 0x7f], r13d
jne 0x140023e72
mov ebx, 0xfffffec3
jmp 0x1400245f8
mov rax, qword [rdi + 8]
movzx ecx, byte [rax + 0x156]
sub ecx, 1
je 0x140023ea6
sub ecx, 2
je 0x140023e96
cmp ecx, 5
je 0x140023ea6
mov ebx, 0xffffff7b
jmp 0x1400245f8
and byte [rdi + 0x1f0], 0xc3
or byte [rdi + 0x1f0], 3
jmp 0x140023eb4
and byte [rdi + 0x1f0], 0xc1
or byte [rdi + 0x1f0], 1
lea rdx, [rbp + 0x67]
mov rcx, rdi
call fcn.14001f7a0
mov ebx, eax
test eax, eax
jne 0x1400245f8
movzx eax, word [rbp + 0x67]
mov rcx, rdi
mov dword [rbp - 0xd], eax
mov dword [rbp + 0x67], eax
lea edx, [rax + 2]
add edx, esi
mov dword [rbp - 0x49], edx
mov dword [rbp - 9], edx
call fcn.140013020
test eax, eax
je 0x140023ef4
add edx, 2
mov dword [rbp - 0x49], edx
mov dword [rbp - 9], edx
test byte [rdi + 0x462], 1
lea r15d, [rdx + 9]
mov dword [rbp + 7], r15d
je 0x140023f15
add r15d, 0x10
add r13d, 0x10
mov dword [rbp + 7], r15d
mov dword [rbp + 0x7f], r13d
cmp byte [rdi + 0x45c], 0
je 0x140023f2f
cmp byte [rdi + 0x119], 0
je 0x140023f2f
add r15d, 0x66
mov dword [rbp + 7], r15d
mov edx, r15d
call fcn.1400169f0
mov ebx, eax
test eax, eax
jne 0x1400245f8
mov esi, dword [rdi + 0x180]
lea ecx, [r13 + 1]
add rsi, qword [rdi + 0x178]
lea edx, [rcx + 1]
mov eax, r13d
mov r12d, edx
mov qword [rbp - 0x39], rsi
mov byte [rax + rsi], 3
mov byte [rcx + rsi], bl
cmp dword [rdi + 0x4d0], 0x16d
jne 0x140023f7a
lea r12d, [rdx + 1]
mov cl, 0x1d
jmp 0x140023fb7
mov rcx, qword [r14]
test rcx, rcx
je 0x140023fb2
mov rcx, qword [rcx + 0x10]
test rcx, rcx
je 0x140023fb2
mov ecx, dword [rcx + 0x344]
sub ecx, 0xd2
je 0x140023fae
sub ecx, 1
je 0x140023faa
cmp ecx, 0x13b
jne 0x140023fb2
mov cl, reloc.WS2_32.dll_socket
jmp 0x140023fb4
mov cl, 0x19
jmp 0x140023fb4
mov cl, 0x18
jmp 0x140023fb4
xor cl, cl
inc r12d
mov byte [rdx + rsi], cl
movzx eax, byte [rbp + 3]
mov r14d, dword [rbp + 0x77]
mov rdx, qword [rbp - 0x29]
mov r8d, r14d
mov byte [r12 + rsi], al
inc r12d
mov ecx, r12d
add rcx, rsi
call fcn.1400b14c0
mov rcx, rdi
add r14d, r12d
call fcn.140013020
test eax, eax
je 0x14002435c
mov rax, qword [rdi + 8]
mov ecx, r14d
add rcx, rsi
movzx edx, byte [rax + 0x156]
movzx r8d, byte [rax + 0x155]
sub edx, 1
je 0x140024025
sub edx, 2
je 0x14002401f
cmp edx, 5
jne 0x14002402c
mov byte [rcx], 8
mov byte [rcx + 1], r8b
jmp 0x14002402c
mov byte [rcx + 1], 3
jmp 0x140024029
mov byte [rcx + 1], 1
mov byte [rcx], r8b
mov rax, qword [rdi + 8]
add r14d, 2
mov dword [rbp - 0x11], r14d
movzx ecx, byte [rax + 0x155]
call fcn.1400136f0
mov r12d, eax
test eax, eax
jne 0x140024055
mov ebx, 0xffffff7b
jmp 0x1400245f8
mov eax, dword [rbp + 0x6f]
add eax, 0x40
mov dword [rbp - 1], eax
mov ecx, eax
mov rax, qword [0x140397868]
test rax, rax
je 0x140024070
call rax
jmp 0x140024075
call fcn.1400b85d8
mov qword [rbp - 0x31], rax
mov r13, rax
test rax, rax
jne 0x140024089
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov rax, qword [rdi + 0x10]
lea rcx, [r13 + 0x40]
mov edx, dword [rbp + 0x7f]
mov r8d, dword [rbp + 0x6f]
add rdx, rsi
movups xmm0, xmmword [rax + 0x1c]
movups xmmword [r13], xmm0
movups xmm1, xmmword [rax + 0x2c]
movups xmmword [r13 + 0x10], xmm1
mov rax, qword [rdi + 0x10]
movups xmm0, xmmword [rax + 0x3c]
movups xmmword [r13 + 0x20], xmm0
movups xmm1, xmmword [rax + 0x4c]
movups xmmword [r13 + 0x30], xmm1
call fcn.1400b14c0
mov rax, qword [rdi + 8]
movzx ecx, byte [rax + 0x156]
sub cl, 9
test cl, 0xfd
je 0x14002414c
mov ecx, r12d
call fcn.140027f10
mov dword [rdi + 0x1b8], eax
test eax, eax
jns 0x1400240f7
mov ebx, 0xffffff18
jmp 0x1400245f8
mov ecx, eax
mov rax, qword [0x140397868]
test rax, rax
je 0x140024109
call rax
jmp 0x14002410e
call fcn.1400b85d8
mov qword [rdi + 0x1b0], rax
mov r9, rax
test rax, rax
jne 0x140024125
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov r8d, dword [rbp + 0x6f]
mov rdx, r13
mov eax, dword [rdi + 0x1b8]
add r8d, 0x40
mov ecx, r12d
mov dword [rsp + 0x20], eax
call fcn.140027fc0
mov ebx, eax
test eax, eax
jne 0x1400245f8
mov edx, dword [rbp + 0x67]
mov r12d, edx
mov rax, qword [rdi + 8]
mov dword [rbp - 5], edx
movzx ecx, byte [rax + 0x156]
sub ecx, 1
je 0x140024183
cmp ecx, 7
jne 0x140024234
movzx eax, dx
mov byte [r14 + rsi + 1], dl
shr ax, 8
mov byte [r14 + rsi], al
jmp 0x14002422c
mov rcx, rdi
call fcn.140013020
test eax, eax
je 0x140024217
mov rax, qword [0x140397868]
mov ecx, 0x200
test rax, rax
je 0x1400241a8
call rax
jmp 0x1400241ad
call fcn.1400b85d8
mov r13, rax
test rax, rax
jne 0x1400241bd
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov rax, qword [rdi + 8]
movzx ecx, byte [rax + 0x155]
call fcn.1400137b0
mov r8d, dword [rdi + 0x1b8]
mov r9d, eax
mov rdx, qword [rdi + 0x1b0]
mov rcx, r13
call fcn.14003e7f0
mov rcx, qword [rdi + 0x1b0]
mov dword [rdi + 0x1b8], eax
test rcx, rcx
je 0x14002420d
mov rax, qword [0x140398920]
test rax, rax
je 0x140024208
call rax
jmp 0x14002420d
call fcn.1400b8268
mov edx, dword [rbp + 0x67]
mov qword [rdi + 0x1b0], r13
movzx eax, word [rbp - 0xd]
shr ax, 8
mov byte [r14 + rsi], al
movzx eax, byte [rbp - 0xd]
mov byte [r14 + rsi + 1], al
add r14d, 2
mov dword [rbp - 0x11], r14d
test ebx, ebx
jne 0x1400245f8
mov r13d, dword [rbp - 0x49]
cmp byte [rdi + 0x2ff], 8
mov byte [rdi + 0x472], 2
jne 0x14002432d
mov r8, qword [rdi + 8]
movzx edx, byte [r8 + 0x156]
mov ecx, edx
sub ecx, 1
je 0x1400242cb
sub ecx, 2
je 0x140024294
cmp ecx, 5
je 0x1400242cb
mov ebx, 0xffffff7b
jmp 0x1400245f8
mov r15d, dword [rbp + 7]
mov r12d, dword [rbp - 5]
mov r13d, dword [rbp - 9]
mov edx, dword [rbp - 0xd]
mov r14d, dword [rbp - 0x11]
mov rsi, qword [rbp - 0x39]
jmp 0x140024240
mov rcx, qword [rdi + 0xd0]
lea rax, [rbp - 5]
mov r8d, dword [rdi + 0x1b8]
mov rdx, qword [rdi + 0x1b0]
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov r9d, r14d
add r9, 2
mov qword [rsp + 0x20], rax
add r9, rsi
call fcn.140013a90
jmp 0x14002430c
movzx ecx, byte [r8 + 0x155]
mov rax, qword [rdi + 0xd0]
mov r8d, dword [rdi + 0x1b8]
mov qword [rsp + 0x38], rax
lea rax, [rbp - 5]
mov dword [rsp + 0x30], ecx
mov rcx, rdi
mov dword [rsp + 0x28], edx
mov rdx, qword [rdi + 0x1b0]
mov r9d, r14d
add r9, rsi
mov qword [rsp + 0x20], rax
call fcn.1400137f0
mov ebx, eax
test eax, eax
jne 0x1400245f8
mov r15d, dword [rbp + 7]
mov r12d, dword [rbp - 5]
mov r13d, dword [rbp - 9]
mov edx, dword [rbp - 0xd]
mov r14d, dword [rbp - 0x11]
mov rsi, qword [rbp - 0x39]
cmp byte [rdi + 0x2ff], 8
mov byte [rdi + 0x472], 3
jne 0x140024433
mov r8, qword [rdi + 8]
movzx ecx, byte [r8 + 0x156]
sub ecx, 1
je 0x14002438a
sub ecx, 2
je 0x140024366
cmp ecx, 5
je 0x14002438a
mov ebx, 0xffffff7b
jmp 0x1400245f8
movzx eax, word [rbp - 5]
sub r12d, edx
shr ax, 8
add r13d, r12d
mov ecx, r14d
add r15d, r12d
mov byte [rcx + rsi], al
movzx eax, byte [rbp - 5]
mov byte [rcx + rsi + 1], al
jmp 0x140024433
cmp qword [rbp - 0x21], 0
mov rax, qword [rdi + 0xd0]
mov qword [rbp + 0x67], rax
jne 0x1400243eb
test r12d, r12d
jne 0x1400243ab
mov ebx, 0xffffff1a
jmp 0x1400245f8
mov rax, qword [0x140397868]
mov ebx, r12d
mov ecx, ebx
test rax, rax
je 0x1400243c0
call rax
jmp 0x1400243c5
call fcn.1400b85d8
mov qword [rbp - 0x21], rax
test rax, rax
jne 0x1400243d6
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
mov edx, r14d
mov r8, rbx
add rdx, rsi
mov rcx, rax
call fcn.1400b14c0
mov r8, qword [rdi + 8]
movzx eax, byte [r8 + 0x155]
movzx ecx, byte [r8 + 0x156]
mov r8d, r12d
mov rdx, qword [rbp + 0x67]
mov r9, qword [rdi + 0x1b0]
mov qword [rsp + 0x38], rdx
mov rdx, qword [rbp - 0x21]
mov dword [rsp + 0x30], eax
mov eax, dword [rdi + 0x1b8]
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], eax
call fcn.1400138f0
mov ebx, eax
test eax, eax
jne 0x1400245f8
movzx eax, byte [rdi + 0x2ff]
sub al, 6
mov byte [rdi + 0x472], 4
test al, 0xfd
jne 0x14002445d
test rsi, rsi
je 0x1400244c0
mov r9, rdi
mov r8b, listen
mov edx, r13d
mov rcx, rsi
call fcn.1400165a0
cmp byte [rdi + 0x45c], 0
je 0x14002456f
cmp byte [rdi + 0x119], 0
je 0x14002456f
movzx eax, word [rdi + 0x462]
lea r13d, [r13 + 4]
and ax, 1
je 0x14002448c
add r13d, 8
mov rax, qword [0x140397868]
movsxd rbx, r13d
mov rcx, rbx
test rax, rax
je 0x1400244a2
call rax
jmp 0x1400244a7
call fcn.1400b85d8
mov qword [rbp - 0x19], rax
mov r14, rax
test rax, rax
jne 0x1400244bb
lea ebx, [rax - 0x7d]
jmp 0x1400245f8
test rsi, rsi
jne 0x1400244ca
mov ebx, 0xfffffeb8
jmp 0x1400245f8
test byte [rdi + 0x462], 1
lea rdx, [rsi + 5]
mov r8, rbx
mov rcx, r14
je 0x1400244e1
lea rdx, [rsi + 0xd]
call fcn.1400b14c0
test byte [rdi + 0x462], 1
je 0x14002450d
mov r9d, listen
mov r8d, r13d
mov rdx, r14
mov rcx, rdi
call fcn.140015f10
mov ebx, eax
test eax, eax
jne 0x1400245f8
xor r12d, r12d
mov r9, r14
mov dword [rsp + 0x48], r12d
mov r8d, r15d
mov dword [rsp + 0x40], r12d
mov rdx, rsi
mov dword [rsp + 0x38], r12d
mov rcx, rdi
mov dword [rsp + 0x30], 1
mov dword [rsp + 0x28], reloc.WS2_32.dll_shutdown
mov dword [rsp + 0x20], r13d
call fcn.14001d470
mov ebx, eax
mov rcx, r14
mov rax, qword [0x140398920]
test rax, rax
je 0x14002455a
call rax
jmp 0x14002455f
call fcn.1400b8268
mov qword [rbp - 0x19], r12
test ebx, ebx
js 0x1400245d0
mov r15d, ebx
mov ebx, r12d
jmp 0x1400245d0
movzx eax, word [rdi + 0x462]
and ax, 1
je 0x140024596
mov r9d, listen
mov r8d, r15d
mov rdx, rsi
mov rcx, rdi
call fcn.140015f10
mov ebx, eax
test eax, eax
jne 0x1400245f8
test byte [rdi + 0x462], 1
je 0x1400245b9
mov ecx, dword [rdi + 0x444]
lea eax, [rcx + 1]
mov dword [rdi + 0x444], eax
cmp ecx, eax
jbe 0x1400245b9
inc word [rdi + 0x442]
xor r9d, r9d
mov r8d, r15d
mov rdx, rsi
mov rcx, rdi
call fcn.140016300
mov ebx, eax
test eax, eax
jne 0x1400245f8
add dword [rdi + 0x180], r15d
test byte [rdi + 0x464], 0x40
mov byte [rdi + 0x472], 5
jne 0x1400245f1
mov rcx, rdi
call fcn.140016910
mov ebx, eax
mov byte [rdi + 0x46b], 7
mov r13, qword [rsp + 0xc8]
mov r12, qword [rsp + 0xd0]
mov rsi, qword [rsp + 0xd8]
mov r14, qword [rsp + 0xc0]
mov rcx, qword [rbp - 0x19]
mov r15, qword [rsp + 0xb8]
test rcx, rcx
je 0x140024642
mov rax, qword [0x140398920]
test rax, rax
je 0x140024639
call rax
jmp 0x140024642
mov rcx, qword [rbp - 0x19]
call fcn.1400b8268
mov rcx, qword [rbp - 0x29]
test rcx, rcx
je 0x140024664
mov rax, qword [0x140398920]
test rax, rax
je 0x14002465b
call rax
jmp 0x140024664
mov rcx, qword [rbp - 0x29]
call fcn.1400b8268
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x140024686
mov rax, qword [0x140398920]
test rax, rax
je 0x14002467d
call rax
jmp 0x140024686
mov rcx, qword [rbp - 0x31]
call fcn.1400b8268
mov rcx, qword [rbp - 0x21]
test rcx, rcx
je 0x1400246a8
mov rax, qword [0x140398920]
test rax, rax
je 0x14002469f
call rax
jmp 0x1400246a8
mov rcx, qword [rbp - 0x21]
call fcn.1400b8268
mov rcx, rdi
call fcn.140014a40
mov eax, ebx
add rsp, 0xe0
pop rdi
pop rbx
pop rbp
ret