Function at 0x1801c28b0
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r15
lea rbp, [rsp - 0x2b0]
mov eax, 0x3b0
call fcn.1800b9c10
sub rsp, rax
mov rax, qword [0x1802e4710]
xor rax, rsp
mov qword [rbp + 0x290], rax
mov rax, qword [rbp + 0x310]
mov rsi, qword [rbp + 0x320]
mov r15d, 0x28
mov qword [rsp + 0x60], rax
mov rax, qword [rbp + 0x328]
xor ebx, ebx
mov qword [rsp + 0x68], r9
mov r13, r8
mov qword [rbp - 0x58], r8
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x68], rdx
mov r12, rcx
mov qword [rbp - 0x48], rcx
mov edi, 0x40
mov qword [rbp - 0x80], r15
mov qword [rsp + 0x50], 8
mov byte [rsp + 0x20], 1
cmp rsi, 0x100000
jb 0x1801c2945
xor eax, eax
jmp 0x1801c3147
lea rdx, [0x180228ee4]
mov qword [rsp + 0x3a8], r14
call fcn.1800cca80
test eax, eax
je 0x1801c2999
lea rcx, [rbp - 0x20]
call fcn.1800c1b80
test eax, eax
jle 0x1801c313d
mov r14d, reloc.WS2_32.dll_recv
mov r15d, gethostbyaddr
lea rax, [0x1801c2660]
lea r13, [0x1800c2710]
mov byte [rsp + 0x20], bl
lea r10d, [r14 - 8]
mov qword [rbp - 0x80], r15
jmp 0x1801c2acd
lea rdx, str.SHA1
mov rcx, r12
call fcn.1800cca80
test eax, eax
je 0x1801c29da
lea rcx, [rbp - 0x20]
call fcn.1801e4750
test eax, eax
jle 0x1801c313d
mov r14d, shutdown
lea rax, [0x1801c26e0]
lea r13, [0x18018e660]
lea r10d, [r14 - 0xc]
jmp 0x1801c2acd
lea rdx, str.SHA2_224
mov rcx, r12
call fcn.1800cca80
test eax, eax
je 0x1801c2a1b
lea rcx, [rbp - 0x20]
call fcn.1800c56a0
test eax, eax
jle 0x1801c313d
mov r14d, 0x1c
lea rax, [0x1801c2770]
lea r13, [0x1800c6990]
lea r10d, [r14 - 0x14]
jmp 0x1801c2acd
lea rdx, str.SHA2_256
mov rcx, r12
call fcn.1800cca80
test eax, eax
je 0x1801c2a59
lea rcx, [rbp - 0x20]
call fcn.1800c5710
test eax, eax
jle 0x1801c313d
mov r14d, 0x20
lea rax, [0x1801c2770]
lea r13, [0x1800c6990]
lea r10d, [r14 - 0x18]
jmp 0x1801c2acd
lea rdx, str.SHA2_384
mov rcx, r12
call fcn.1800cca80
test eax, eax
je 0x1801c2a85
lea rcx, [rbp - 0x20]
call fcn.1801a3e70
test eax, eax
jle 0x1801c313d
mov r14d, gethostbyaddr
jmp 0x1801c2ab0
lea rdx, str.SHA2_512
mov rcx, r12
call fcn.1800cca80
test eax, eax
je 0x1801c3134
lea rcx, [rbp - 0x20]
call fcn.1801a3f00
test eax, eax
jle 0x1801c313d
mov r14, rdi
mov r10d, reloc.WS2_32.dll_recv
lea r13, [0x1801a6510]
lea rax, [0x1801c2850]
lea edi, [r10 + 0x70]
mov qword [rsp + 0x50], r10
movzx r11d, byte [rbp + 0x338]
mov r12d, select
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x30], r12
test r11b, r11b
je 0x1801c2b0d
mov rax, qword [rbp + 0x330]
lea r12, [r15 + rax + 0xb]
mov r15d, 2
mov qword [rsp + 0x30], r12
jmp 0x1801c2b1e
lea rax, [r14 + rdi + 0xff]
xor edx, edx
div rdi
lea r15, [rax + 1]
xor edx, edx
mov rcx, r12
mov qword [rsp + 0x58], rbx
sub rcx, r14
add rcx, r10
add rcx, rdi
lea rax, [rcx + rsi - 1]
xor ecx, ecx
div rdi
xor edx, edx
mov r8, rax
mov rax, qword [rbp + 0x318]
lea rsi, [r12 + rax]
mov rax, rsi
div rdi
mov qword [rbp - 0x70], rax
mov qword [rsp + 0x78], rdx
xor edx, edx
lea rax, [rsi + r10]
div rdi
test r11b, r11b
setne cl
mov qword [rbp - 0x60], rax
add rcx, r15
cmp r8, rcx
jbe 0x1801c2b87
mov r9, r8
sub r9, r15
mov rbx, r9
mov qword [rsp + 0x58], r9
imul rbx, rdi
shl rsi, 3
test r11b, r11b
jne 0x1801c2c04
lea rcx, [rbp + 0x110]
mov r8, rdi
xor edx, edx
lea rsi, [rsi + rdi*8]
call fcn.1800b45b0
mov rax, qword [rbp + 0x330]
cmp rax, 0x80
ja 0x1801c313d
mov rdx, qword [rbp - 0x78]
lea rcx, [rbp + 0x110]
mov r8, rax
call fcn.1800acfd0
xor r11d, r11d
test rdi, rdi
je 0x1801c2bf1
nop word [rax + rax]
xor byte [rbp + r11 + 0x110], 0x36
inc r11
cmp r11, rdi
jb 0x1801c2be0
lea rdx, [rbp + 0x110]
lea rcx, [rbp - 0x20]
call r13
mov r10, qword [rsp + 0x50]
xor edx, edx
lea rcx, [rbp + 0xc0]
cmp byte [rsp + 0x20], dl
je 0x1801c2c55
lea r8, [r10 - 4]
call fcn.1800b45b0
mov rcx, qword [rsp + 0x50]
mov rax, rsi
shr rax, 0x18
mov byte [rbp + rcx + 0xbf], sil
mov byte [rbp + rcx + 0xbc], al
mov rax, rsi
shr rax, 0x10
mov byte [rbp + rcx + 0xbd], al
mov rax, rsi
shr rax, 8
mov byte [rbp + rcx + 0xbe], al
jmp 0x1801c2c94
mov r8, r10
call fcn.1800b45b0
mov rcx, qword [rsp + 0x50]
mov rax, rsi
shr rax, 0x18
mov byte [rbp + rcx + 0xb8], sil
mov byte [rbp + rcx + 0xbb], al
mov rax, rsi
shr rax, 0x10
mov byte [rbp + rcx + 0xba], al
mov rax, rsi
shr rax, 8
mov byte [rbp + rcx + 0xb9], al
test rbx, rbx
je 0x1801c2dc7
cmp byte [rbp + 0x338], 0
je 0x1801c2d44
cmp r12, rdi
jbe 0x1801c313d
mov rdx, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x28]
lea rcx, [rbp - 0x20]
mov r13, r12
sub r13, rdi
call rsi
mov rdx, qword [rsp + 0x68]
lea rcx, [rbp + 0x190]
mov r8, r13
add rdx, rdi
call fcn.1800acfd0
mov rdx, qword [rsp + 0x60]
mov r8, rdi
lea rcx, [rbp + r13 + 0x190]
sub r8, r13
call fcn.1800acfd0
lea rdx, [rbp + 0x190]
lea rcx, [rbp - 0x20]
call rsi
xor edx, edx
mov rax, rbx
div rdi
dec rax
cmp rax, 1
jbe 0x1801c2dc7
mov rsi, qword [rsp + 0x60]
mov r12, qword [rsp + 0x28]
sub rsi, r13
lea r13, [rax - 1]
add rsi, rdi
nop
lea rcx, [rbp - 0x20]
mov rdx, rsi
call r12
add rsi, rdi
dec r13
jne 0x1801c2d30
jmp 0x1801c2dc2
mov rcx, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x60]
lea r8, [rdi - 0xd]
mov rax, qword [rcx]
mov rdx, rsi
mov qword [rbp + 0x190], rax
mov eax, dword [rcx + 8]
mov dword [rbp + 0x198], eax
movzx eax, byte [rcx + 0xc]
lea rcx, [rbp + 0x19d]
mov byte [rbp + 0x19c], al
call fcn.1800acfd0
lea rdx, [rbp + 0x190]
lea rcx, [rbp - 0x20]
call r13
xor edx, edx
mov rax, rbx
div rdi
cmp rax, 1
jbe 0x1801c2dc7
mov r12, qword [rsp + 0x28]
lea rsi, [rsi + rdi - 0xd]
lea r13, [rax - 1]
nop dword [rax + rax]
lea rcx, [rbp - 0x20]
mov rdx, rsi
call r12
add rsi, rdi
dec r13
jne 0x1801c2db0
mov r12, qword [rsp + 0x30]
xor eax, eax
mov qword [rbp + 0xd0], rax
mov qword [rbp + 0xd8], rax
mov qword [rbp + 0xe0], rax
mov qword [rbp + 0xe8], rax
mov qword [rbp + 0xf0], rax
mov qword [rbp + 0xf8], rax
mov qword [rbp + 0x100], rax
mov qword [rbp + 0x108], rax
mov rax, qword [rsp + 0x58]
add rax, r15
mov r15, qword [rsp + 0x58]
mov qword [rbp - 0x38], rax
cmp r15, rax
ja 0x1801c3011
nop dword [rax + rax]
mov rax, r15
xor r10d, r10d
xor rax, qword [rbp - 0x70]
lea r13, [rax - 1]
not rax
shr rax, 0x3f
shr r13, 0x3f
and r13b, al
mov rax, r15
xor rax, qword [rbp - 0x60]
neg r13b
lea rsi, [rax - 1]
not rax
shr rsi, 0x3f
shr rax, 0x3f
and sil, al
neg sil
test rdi, rdi
je 0x1801c2fb8
mov rdx, qword [rsp + 0x78]
movzx ecx, r13b
mov dword [rsp + 0x74], ecx
mov rcx, qword [rsp + 0x50]
lea rax, [rdx + 1]
shr rax, 0x3f
mov r9, rdx
mov qword [rbp - 0x40], rax
movzx eax, sil
shr r9, 0x3f
not al
mov qword [rbp - 0x30], r9
or al, r13b
mov byte [rsp + 0x20], al
mov rax, rdi
movzx r15d, byte [rsp + 0x20]
sub rax, rcx
mov qword [rbp - 0x50], rax
mov rax, rdx
sub rax, rdi
add rax, rcx
mov rcx, rdx
lea rax, [rbp + rax + 0xc0]
neg rcx
mov r14, rax
mov qword [rbp - 0x28], rcx
xor r8b, r8b
cmp rbx, r12
jae 0x1801c2ed7
mov rax, qword [rsp + 0x68]
jmp 0x1801c2eee
mov rax, qword [rbp + 0x320]
add rax, r12
cmp rbx, rax
jae 0x1801c2ef3
mov rax, qword [rsp + 0x60]
sub rax, r12
movzx r8d, byte [rax + rbx]
lea r11, [rcx + r10]
mov rdx, r10
inc rbx
shr rdx, 0x3f
mov rcx, r11
shr rcx, 0x3f
movzx eax, dl
xor cl, r9b
xor al, r9b
or cl, al
xor cl, dl
dec cl
movzx eax, cl
mov rcx, r10
and eax, dword [rsp + 0x74]
mov dword [rsp + 0x30], eax
not eax
mov dword [rsp + 0x38], eax
mov r9d, dword [rsp + 0x38]
mov eax, dword [rsp + 0x30]
and al, 0x80
and r9b, r8b
mov r8, qword [rsp + 0x78]
or r9b, al
lea rax, [r8 + 1]
sub rcx, rax
mov rax, qword [rbp - 0x40]
shr rcx, 0x3f
xor cl, al
xor al, dl
or cl, al
xor cl, dl
dec cl
and cl, r13b
not cl
and cl, r15b
and r9b, cl
cmp r10, qword [rbp - 0x50]
jb 0x1801c2f8e
movzx eax, sil
mov dword [rsp + 0x30], eax
not eax
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0x30]
movzx ecx, byte [r11 + r14]
and cl, al
mov eax, dword [rsp + 0x38]
and r9b, al
or r9b, cl
mov rcx, qword [rbp - 0x28]
lea rax, [rbp + r8 + 0x210]
inc r10
mov byte [r11 + rax], r9b
mov r9, qword [rbp - 0x30]
cmp r10, rdi
jb 0x1801c2ec8
mov r14, qword [rsp + 0x40]
mov r15, qword [rsp + 0x58]
lea rdx, [rbp + 0x210]
lea rcx, [rbp - 0x20]
call qword [rsp + 0x28]
lea rdx, [rbp + 0x210]
lea rcx, [rbp - 0x20]
call qword [rsp + 0x48]
xor r13d, r13d
mov r11d, r13d
test r14, r14
je 0x1801c2ffd
movzx eax, byte [rbp + r11 + 0x210]
inc r11
and al, sil
or byte [rbp + r11 + 0xcf], al
cmp r11, r14
jb 0x1801c2fe1
inc r15
mov qword [rsp + 0x58], r15
cmp r15, qword [rbp - 0x38]
jbe 0x1801c2e20
jmp 0x1801c3014
xor r13d, r13d
call fcn.1800de700
mov rbx, rax
test rax, rax
je 0x1801c3127
mov rdx, qword [rbp - 0x48]
xor r8d, r8d
mov rcx, rax
call fcn.1800e0240
test eax, eax
jle 0x1801c3127
cmp byte [rbp + 0x338], 0
je 0x1801c30b8
mov rdi, qword [rbp - 0x80]
lea rcx, [rbp + 0x110]
mov edx, 0x5c
mov r8, rdi
call fcn.1800b45b0
mov r8, qword [rbp + 0x330]
mov rdx, qword [rbp - 0x78]
mov rcx, rbx
call fcn.1800de730
test eax, eax
jle 0x1801c3127
lea rdx, [rbp + 0x110]
mov r8, rdi
mov rcx, rbx
call fcn.1800de730
test eax, eax
jle 0x1801c3127
lea rdx, [rbp + 0xd0]
mov r8, r14
mov rcx, rbx
call fcn.1800de730
test eax, eax
jg 0x1801c30fc
mov rcx, rbx
call fcn.1800def40
mov eax, r13d
jmp 0x1801c313f
mov rax, r13
test rdi, rdi
je 0x1801c30d0
xor byte [rbp + rax + 0x110], 0x6a
inc rax
cmp rax, rdi
jb 0x1801c30c0
lea rdx, [rbp + 0x110]
mov r8, rdi
mov rcx, rbx
call fcn.1800de730
test eax, eax
jle 0x1801c3127
lea rdx, [rbp + 0xd0]
mov r8, r14
mov rcx, rbx
call fcn.1800de730
test eax, eax
jle 0x1801c3127
mov rdx, qword [rbp - 0x68]
lea r8, [rsp + 0x70]
mov rcx, rbx
call fcn.1800defb0
test eax, eax
je 0x1801c3121
mov rcx, qword [rbp - 0x58]
test rcx, rcx
je 0x1801c3121
mov eax, dword [rsp + 0x70]
mov qword [rcx], rax
mov r13d, 1
mov rcx, rbx
call fcn.1800def40
mov eax, r13d
jmp 0x1801c313f
test r13, r13
je 0x1801c313d
mov qword [r13], rbx
xor eax, eax
mov r14, qword [rsp + 0x3a8]
mov rcx, qword [rbp + 0x290]
xor rcx, rsp
call fcn.1800acfa0
add rsp, 0x3b0
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret