Function at 0x14005ba80
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rdi
push r13
lea rbp, [rsp - 0x3d8]
sub rsp, 0x4d8
xor r13d, r13d
mov dword [rbp - 0x64], 0xff
lea rdx, [rbp - 0x80]
mov dword [rsp + 0x20], r13d
mov edi, r13d
mov rbx, rcx
call fcn.14005b470
test rax, rax
je 0x14005baf8
mov eax, dword [rbx + 4]
mov dword [rsp + 0x6c], eax
cdq
xor eax, edx
sub eax, edx
mov dword [rbx + 4], eax
cmp eax, 0x1000000
jbe 0x14005bb07
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.too_large
mov qword [rdx + rcx], rax
xor eax, eax
add rsp, 0x4d8
pop r13
pop rdi
pop rbx
pop rbp
ret
cmp dword [rbx], 0x1000000
ja 0x14005badc
mov eax, dword [rbp - 0x74]
mov r8d, dword [rbp - 0x68]
mov dword [rsp + 0x30], eax
mov eax, dword [rbp - 0x70]
mov dword [rbp + 0x428], eax
mov eax, dword [rbp - 0x6c]
mov qword [rsp + 0x500], rsi
mov esi, dword [rbp - 0x80]
mov dword [rsp + 0x34], eax
mov eax, dword [rbp - 0x64]
mov qword [rsp + 0x4d0], r12
mov r12d, dword [rbp - 0x7c]
mov qword [rsp + 0x4c0], r15
mov r15d, dword [rbp - 0x78]
mov dword [rsp + 0x28], eax
mov eax, dword [rbp - 0x60]
mov dword [rsp + 0x38], eax
mov dword [rbp + 0x418], r8d
mov dword [rsp + 0x2c], r12d
mov dword [rsp + 0x24], r15d
mov dword [rbp + 0x420], esi
cmp r15d, 0xc
jne 0x14005bb95
cmp esi, 0x18
jge 0x14005bbb1
mov ecx, r12d
sub ecx, eax
mov eax, 0x55555556
sub ecx, 0x18
imul ecx
mov edi, edx
shr edi, 0x1f
add edi, edx
jmp 0x14005bba5
cmp esi, 0x10
jge 0x14005bbb1
mov edi, r12d
sub edi, eax
sub edi, r15d
sar edi, 2
mov dword [rsp + 0x20], edi
test edi, edi
jne 0x14005bc44
mov edx, dword [rbx + 0xb8]
sub edx, dword [rbx + 0xd0]
mov r8d, dword [rbx + 0xc0]
add edx, r8d
lea eax, [rdx - 1]
cmp eax, 0x3ff
ja 0x14005cee6
cmp r12d, edx
jl 0x14005cec3
mov ecx, r12d
sub ecx, edx
cmp ecx, 0x400
jg 0x14005cec3
test ecx, ecx
je 0x14005bc3d
jns 0x14005bc05
mov rax, qword [rbx + 0xc8]
mov qword [rbx + 0xc0], rax
jmp 0x14005bc3d
cmp qword [rbx + 0x10], r13
je 0x14005bc33
mov edx, dword [rbx + 0xc8]
sub edx, r8d
cmp edx, ecx
jge 0x14005bc33
mov rax, qword [rbx + 0xc8]
sub ecx, edx
mov edx, ecx
mov qword [rbx + 0xc0], rax
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x18]
jmp 0x14005bc3d
movsxd rax, ecx
add qword [rbx + 0xc0], rax
mov r8d, dword [rbp + 0x418]
cmp esi, 0x18
jne 0x14005bc57
cmp r8d, 0xff000000
jne 0x14005bc57
lea eax, [rsi - 0x15]
jmp 0x14005bc63
test r8d, r8d
mov eax, r13d
setne al
add eax, 3
mov dword [rbx + 8], eax
mov ecx, dword [rbx]
mov r9d, dword [rbx + 4]
test ecx, ecx
js 0x14005cea0
jne 0x14005bc83
lea r8d, [rcx*4]
mov r10d, r8d
jmp 0x14005bca8
mov eax, 0x7fffffff
cdq
idiv ecx
cmp eax, 4
jl 0x14005cea0
lea r8d, [rcx*4]
mov r10d, r8d
test r8d, r8d
js 0x14005cea0
test r9d, r9d
js 0x14005cea0
je 0x14005bcc5
mov eax, 0x7fffffff
cdq
idiv r9d
cmp r10d, eax
jg 0x14005cea0
mov qword [rsp + 0x4c8], r14
test ecx, ecx
je 0x14005bcec
xor edx, edx
mov eax, 0x7fffffff
div ecx
cmp eax, 4
jl 0x14005ce83
test r8d, r8d
js 0x14005ce83
test r9d, r9d
je 0x14005bd04
xor edx, edx
mov eax, 0x7fffffff
div r9d
cmp r8d, eax
jg 0x14005ce83
imul ecx, r9d
shl ecx, 2
movsxd rcx, ecx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [rsp + 0x70], rax
mov r14, rax
test rax, rax
je 0x14005ce83
cmp esi, 0x10
mov esi, r13d
jge 0x14005c5cd
test edi, edi
je 0x14005c5aa
cmp edi, 0x100
jg 0x14005c5aa
movsxd rax, edi
mov qword [rbp + 0x418], rax
test edi, edi
jle 0x14005bfec
mov rax, qword [rbx + 0xc0]
mov r14d, dword [rsp + 0x24]
mov r12, qword [rbp + 0x418]
nop word [rax + rax]
mov rcx, qword [rbx + 0xc8]
cmp rax, rcx
jb 0x14005bdec
cmp dword [rbx + 0x30], esi
je 0x14005be13
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005bdd5
lea rax, [rbx + 0x39]
mov dword [rbx + 0x30], esi
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], sil
mov rcx, qword [rbx + 0xc8]
jmp 0x14005bde5
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx edx, byte [rax]
lea r15, [r13*4]
inc rax
mov byte [rbp + r15 - 0x3e], dl
mov qword [rbx + 0xc0], rax
mov r8, r15
cmp rax, rcx
jae 0x14005be23
jmp 0x14005be93
lea r15, [r13*4]
mov byte [rbp + r15 - 0x3e], sil
mov r8, r15
cmp dword [rbx + 0x30], esi
je 0x14005beb9
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005be7c
lea rax, [rbx + 0x39]
mov dword [rbx + 0x30], esi
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], sil
mov rcx, qword [rbx + 0xc8]
jmp 0x14005be8c
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx edx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
mov byte [rbp + r15 - 0x3f], dl
cmp rax, rcx
jae 0x14005bebe
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005bf34
mov byte [rbp + r8 - 0x3f], sil
cmp dword [rbx + 0x30], esi
je 0x14005bf32
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005bf0c
lea rax, [rbx + 0x39]
mov dword [rbx + 0x30], esi
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], sil
jmp 0x14005bf1c
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005bf34
xor cl, cl
mov byte [rbp + r15 - 0x40], cl
cmp r14d, 0xc
je 0x14005bfc4
cmp rax, qword [rbx + 0xc8]
jae 0x14005bf58
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005bfc4
cmp dword [rbx + 0x30], esi
je 0x14005bfc4
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005bfa6
lea rax, [rbx + 0x39]
mov dword [rbx + 0x30], esi
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], sil
jmp 0x14005bfb6
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
inc qword [rbx + 0xc0]
mov rax, qword [rbx + 0xc0]
inc r13
mov byte [rbp + r15 - 0x3d], 0xff
cmp r13, r12
jl 0x14005bd70
mov r14, qword [rsp + 0x70]
xor r13d, r13d
mov r12d, dword [rsp + 0x2c]
mov edi, dword [rsp + 0x20]
mov r15d, dword [rsp + 0x24]
cmp r15d, 0xc
mov eax, r13d
setne al
add eax, 3
imul eax, edi
sub r12d, eax
sub r12d, dword [rsp + 0x38]
sub r12d, r15d
je 0x14005c05c
test r12d, r12d
jns 0x14005c01e
mov rax, qword [rbx + 0xc8]
mov qword [rbx + 0xc0], rax
jmp 0x14005c05c
cmp qword [rbx + 0x10], rsi
je 0x14005c052
mov ecx, dword [rbx + 0xc8]
sub ecx, dword [rbx + 0xc0]
cmp ecx, r12d
jge 0x14005c052
mov rax, qword [rbx + 0xc8]
sub r12d, ecx
mov rcx, qword [rbx + 0x28]
mov edx, r12d
mov qword [rbx + 0xc0], rax
call qword [rbx + 0x18]
jmp 0x14005c05c
movsxd rax, r12d
add qword [rbx + 0xc0], rax
mov r11d, dword [rbp + 0x420]
cmp r11d, 1
jne 0x14005c076
mov r12d, dword [rbx]
add r12d, 7
shr r12d, 3
jmp 0x14005c094
cmp r11d, 4
jne 0x14005c087
mov r12d, dword [rbx]
inc r12d
shr r12d, 1
jmp 0x14005c094
cmp r11d, 8
jne 0x14005c556
mov r12d, dword [rbx]
mov eax, dword [rbx + 4]
neg r12d
and r12d, 3
mov ecx, eax
cmp r11d, 1
jne 0x14005c2e8
mov dword [rbp + 0x420], r13d
test eax, eax
jle 0x14005cda1
mov rsi, r13
jmp 0x14005c0c3
xor r13d, r13d
mov rax, qword [rbx + 0xc0]
mov r15d, 7
cmp rax, qword [rbx + 0xc8]
jae 0x14005c0e8
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005c160
cmp dword [rbx + 0x30], 0
je 0x14005c15e
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005c138
lea rax, [rbx + 0x39]
mov dword [rbx + 0x30], r13d
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005c148
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005c160
xor cl, cl
mov edx, dword [rbx]
movzx r9d, cl
test edx, edx
jle 0x14005c285
mov r8d, edx
mov eax, r9d
mov ecx, r15d
sar eax, cl
and eax, 1
lea rcx, [rax*4]
movzx eax, byte [rbp + rcx - 0x40]
mov byte [rsi + r14], al
movzx eax, byte [rbp + rcx - 0x3f]
mov byte [rsi + r14 + 1], al
movzx eax, byte [rbp + rcx - 0x3e]
mov byte [rsi + r14 + 2], al
mov byte [rsi + r14 + 3], 0xff
add rsi, 4
inc r13d
cmp r13d, edx
je 0x14005c285
sub r15d, 1
jns 0x14005c276
mov rax, qword [rbx + 0xc0]
mov r15d, 7
cmp rax, qword [rbx + 0xc8]
jae 0x14005c1f0
movzx ecx, byte [rax]
mov edx, r8d
inc rax
movzx r9d, cl
mov qword [rbx + 0xc0], rax
jmp 0x14005c279
cmp dword [rbx + 0x30], 0
je 0x14005c26b
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005c23f
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005c24f
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
mov edx, dword [rbx]
movzx r9d, cl
jmp 0x14005c279
xor cl, cl
mov edx, r8d
movzx r9d, cl
jmp 0x14005c279
mov edx, r8d
mov r8d, edx
cmp r13d, edx
jl 0x14005c171
test r12d, r12d
je 0x14005c2c8
cmp qword [rbx + 0x10], 0
je 0x14005c2be
mov ecx, dword [rbx + 0xc8]
sub ecx, dword [rbx + 0xc0]
cmp ecx, r12d
jge 0x14005c2be
mov rax, qword [rbx + 0xc8]
mov edx, r12d
sub edx, ecx
mov qword [rbx + 0xc0], rax
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x18]
jmp 0x14005c2c8
mov eax, r12d
add qword [rbx + 0xc0], rax
mov edx, dword [rbp + 0x420]
mov eax, dword [rbx + 4]
inc edx
mov dword [rbp + 0x420], edx
mov ecx, eax
cmp edx, eax
jl 0x14005c0c0
jmp 0x14005cda1
test eax, eax
jle 0x14005cda1
xor r15d, r15d
cmp dword [rbx], r15d
jle 0x14005c4f6
nop dword [rax]
mov r8, qword [rbx + 0xc0]
cmp r8, qword [rbx + 0xc8]
jae 0x14005c320
movzx ecx, byte [r8]
inc r8
mov qword [rbx + 0xc0], r8
jmp 0x14005c39f
cmp dword [rbx + 0x30], 0
je 0x14005c39d
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005c36f
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005c37f
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
mov r11d, dword [rbp + 0x420]
movzx ecx, byte [rax]
lea r8, [rax + 1]
mov qword [rbx + 0xc0], r8
jmp 0x14005c39f
xor cl, cl
xor r10d, r10d
movzx eax, cl
cmp r11d, 4
jne 0x14005c3b5
mov r10d, eax
and r10d, 0xf
shr eax, 4
mov r9d, dword [rbx]
lea rdx, [rax*4]
movzx eax, byte [rbp + rdx - 0x40]
movsxd rcx, esi
inc esi
mov byte [rcx + r14], al
movzx eax, byte [rbp + rdx - 0x3f]
movsxd rcx, esi
inc esi
mov byte [rcx + r14], al
movzx eax, byte [rbp + rdx - 0x3e]
movsxd rcx, esi
inc esi
mov byte [rcx + r14], al
movsxd rax, esi
inc esi
mov byte [rax + r14], 0xff
lea eax, [r15 + 1]
cmp eax, r9d
je 0x14005c4f6
cmp r11d, 8
jne 0x14005c4ad
cmp r8, qword [rbx + 0xc8]
jae 0x14005c428
movzx ecx, byte [r8]
lea rax, [r8 + 1]
mov qword [rbx + 0xc0], rax
jmp 0x14005c4a9
cmp dword [rbx + 0x30], 0
je 0x14005c4a7
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005c477
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005c487
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
mov r11d, dword [rbp + 0x420]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
mov r9d, dword [rbx]
jmp 0x14005c4a9
xor cl, cl
movzx r10d, cl
movsxd rcx, esi
lea rdx, [r10*4]
movzx eax, byte [rbp + rdx - 0x40]
inc esi
add r15d, 2
mov byte [rcx + r14], al
movzx eax, byte [rbp + rdx - 0x3f]
movsxd rcx, esi
inc esi
mov byte [rcx + r14], al
movzx eax, byte [rbp + rdx - 0x3e]
movsxd rcx, esi
inc esi
mov byte [rcx + r14], al
movsxd rax, esi
inc esi
mov byte [rax + r14], 0xff
cmp r15d, r9d
jl 0x14005c300
test r12d, r12d
je 0x14005c539
cmp qword [rbx + 0x10], 0
je 0x14005c52f
mov ecx, dword [rbx + 0xc8]
sub ecx, dword [rbx + 0xc0]
cmp ecx, r12d
jge 0x14005c52f
mov rax, qword [rbx + 0xc8]
mov edx, r12d
sub edx, ecx
mov qword [rbx + 0xc0], rax
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x18]
jmp 0x14005c539
mov eax, r12d
add qword [rbx + 0xc0], rax
mov eax, dword [rbx + 4]
inc r13d
mov r11d, dword [rbp + 0x420]
mov ecx, eax
cmp r13d, eax
jl 0x14005c2f0
jmp 0x14005cda1
mov rcx, r14
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.bad_bpp
mov qword [rdx + rcx], rax
xor eax, eax
mov r14, qword [rsp + 0x4c8]
mov r12, qword [rsp + 0x4d0]
mov rsi, qword [rsp + 0x500]
mov r15, qword [rsp + 0x4c0]
add rsp, 0x4d8
pop r13
pop rdi
pop rbx
pop rbp
ret
mov rcx, r14
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.invalid
jmp 0x14005c577
sub r12d, dword [rsp + 0x38]
mov r11d, r13d
mov dword [rsp + 0x3c], r13d
mov r10d, r13d
mov dword [rsp + 0x40], r13d
mov r9d, r13d
mov dword [rsp + 0x2c], r13d
mov edi, r13d
mov dword [rsp + 0x24], r13d
sub r12d, r15d
je 0x14005c653
test r12d, r12d
jns 0x14005c60c
mov rax, qword [rbx + 0xc8]
mov qword [rbx + 0xc0], rax
jmp 0x14005c653
cmp qword [rbx + 0x10], rsi
je 0x14005c649
mov ecx, dword [rbx + 0xc8]
sub ecx, dword [rbx + 0xc0]
cmp ecx, r12d
jge 0x14005c649
mov rax, qword [rbx + 0xc8]
sub r12d, ecx
mov rcx, qword [rbx + 0x28]
mov edx, r12d
mov qword [rbx + 0xc0], rax
call qword [rbx + 0x18]
mov r9d, esi
mov r10d, esi
mov r11d, esi
jmp 0x14005c653
movsxd rax, r12d
add qword [rbx + 0xc0], rax
mov ecx, dword [rbp + 0x420]
cmp ecx, 0x18
jne 0x14005c666
mov eax, dword [rbx]
lea r12d, [rax + rax*2]
jmp 0x14005c676
cmp ecx, 0x10
jne 0x14005c673
mov r12d, dword [rbx]
add r12d, r12d
jmp 0x14005c676
xor r12d, r12d
neg r12d
and r12d, 3
mov dword [rsp + 0x68], r12d
cmp ecx, 0x18
jne 0x14005c696
mov edx, 1
mov qword [rsp + 0x48], rdx
jmp 0x14005c8a2
mov eax, dword [rbp + 0x428]
cmp ecx, 0x20
jne 0x14005c6db
cmp dword [rsp + 0x34], 0xff
jne 0x14005c6db
cmp eax, 0xff00
jne 0x14005c6db
cmp dword [rsp + 0x30], 0xff0000
jne 0x14005c6db
mov r15d, dword [rbp + 0x418]
cmp r15d, 0xff000000
jne 0x14005c708
mov edx, 2
mov qword [rsp + 0x48], rdx
jmp 0x14005c8a2
mov r9d, dword [rsp + 0x30]
test r9d, r9d
je 0x14005ce5d
test eax, eax
je 0x14005ce5d
mov r11d, dword [rsp + 0x34]
test r11d, r11d
je 0x14005ce5d
mov r15d, dword [rbp + 0x418]
jmp 0x14005c712
mov r9d, dword [rsp + 0x30]
mov r11d, dword [rsp + 0x34]
mov ecx, r9d
call fcn.14005b400
sub eax, 7
mov edx, r9d
shr edx, 1
mov ecx, r9d
mov r9d, dword [rbp + 0x428]
and edx, 0x55555555
and ecx, 0x55555555
mov dword [rsp + 0x3c], eax
add edx, ecx
mov ecx, edx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
mov ecx, r9d
and edx, 0xf0f0f0f
mov eax, edx
shr eax, 8
add edx, eax
mov eax, edx
shr eax, 0x10
add eax, edx
movzx r10d, al
call fcn.14005b400
sub eax, 7
mov edx, r9d
shr edx, 1
mov ecx, r9d
and edx, 0x55555555
mov dword [rsp + 0x40], eax
and ecx, 0x55555555
add edx, ecx
mov ecx, edx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
mov ecx, r11d
and edx, 0xf0f0f0f
mov eax, edx
shr eax, 8
add edx, eax
mov eax, edx
shr eax, 0x10
add eax, edx
movzx r9d, al
call fcn.14005b400
sub eax, 7
mov edx, r11d
shr edx, 1
mov ecx, r11d
and edx, 0x55555555
mov dword [rsp + 0x2c], eax
and ecx, 0x55555555
add edx, ecx
mov ecx, edx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
mov ecx, r15d
and edx, 0xf0f0f0f
mov eax, edx
shr eax, 8
add edx, eax
mov eax, edx
shr eax, 0x10
add eax, edx
movzx edi, al
call fcn.14005b400
lea r11d, [rax - 7]
mov edx, r15d
shr edx, 1
mov ecx, r15d
and edx, 0x55555555
mov dword [rsp + 0x24], r11d
and ecx, 0x55555555
add edx, ecx
mov ecx, edx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
and edx, 0xf0f0f0f
mov eax, edx
shr eax, 8
add edx, eax
mov eax, edx
shr eax, 0x10
add eax, edx
movzx esi, al
cmp r10d, 8
ja 0x14005ce5d
cmp r9d, 8
ja 0x14005ce5d
cmp edi, 8
ja 0x14005ce5d
xor edx, edx
mov qword [rsp + 0x48], rdx
cmp esi, 8
ja 0x14005ce5d
mov eax, dword [rbx + 4]
xor r8d, r8d
mov dword [rsp + 0x20], r8d
mov ecx, eax
test eax, eax
jle 0x14005cda1
mov eax, dword [rsp + 0x3c]
neg eax
mov dword [rsp + 0x44], eax
mov eax, 8
mov ecx, eax
sub ecx, r10d
mov dword [rsp + 0x38], ecx
mov ecx, dword [rsp + 0x40]
neg ecx
mov dword [rsp + 0x50], ecx
mov ecx, eax
sub ecx, r9d
mov dword [rsp + 0x54], ecx
mov ecx, dword [rsp + 0x2c]
neg ecx
mov dword [rsp + 0x58], ecx
mov ecx, eax
sub ecx, edi
mov dword [rsp + 0x5c], ecx
mov ecx, r11d
neg ecx
sub eax, esi
mov dword [rsp + 0x60], ecx
mov dword [rsp + 0x64], eax
mov eax, r10d
mov qword [rbp - 0x58], rax
mov eax, edi
mov edi, esi
mov ecx, r9d
mov qword [rsp + 0x78], rdi
mov qword [rbp - 0x50], rcx
mov qword [rbp - 0x48], rax
nop
mov eax, dword [rbx]
xor r15d, r15d
movsxd rcx, r13d
test rdx, rdx
je 0x14005cbaf
test eax, eax
jle 0x14005cd39
lea rsi, [rcx + r14]
nop dword [rax]
mov rcx, qword [rbx + 0xc8]
mov rax, qword [rbx + 0xc0]
cmp rax, rcx
jb 0x14005c9c0
cmp dword [rbx + 0x30], 0
je 0x14005c9d7
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005c9a9
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
mov rcx, qword [rbx + 0xc8]
jmp 0x14005c9b9
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx edx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
mov byte [rsi + 2], dl
cmp rax, rcx
jae 0x14005c9db
jmp 0x14005ca4c
mov byte [rsi + 2], 0
cmp dword [rbx + 0x30], 0
je 0x14005ca70
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005ca35
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
mov rcx, qword [rbx + 0xc8]
jmp 0x14005ca45
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx edx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
mov byte [rsi + 1], dl
cmp rax, rcx
jae 0x14005ca74
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005caeb
mov byte [rsi + 1], 0
cmp dword [rbx + 0x30], 0
je 0x14005cae9
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005cac3
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005cad3
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005caeb
xor cl, cl
cmp qword [rsp + 0x48], 2
mov byte [rsi], cl
jne 0x14005cb8a
cmp rax, qword [rbx + 0xc8]
jae 0x14005cb11
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005cb8c
cmp dword [rbx + 0x30], 0
je 0x14005cb86
mov r8d, dword [rbx + 0x34]
lea rdi, [rbx + 0x38]
mov rcx, qword [rbx + 0x28]
mov rdx, rdi
call qword [rbx + reloc.WS2_32.dll_recv]
mov ecx, dword [rbx + 0xc0]
sub ecx, dword [rbx + 0xd0]
add dword [rbx + 0xb8], ecx
mov qword [rbx + 0xc0], rdi
test eax, eax
jne 0x14005cb60
mov dword [rbx + 0x30], eax
lea rax, [rbx + 0x39]
mov qword [rbx + 0xc8], rax
mov rax, qword [rbx + 0xc0]
mov byte [rax], 0
jmp 0x14005cb70
cdqe
lea rcx, [rbx + 0x38]
add rcx, rax
mov qword [rbx + 0xc8], rcx
mov rax, qword [rbx + 0xc0]
movzx ecx, byte [rax]
inc rax
mov qword [rbx + 0xc0], rax
jmp 0x14005cb8c
xor cl, cl
jmp 0x14005cb8c
mov cl, 0xff
movzx eax, cl
add r13d, 4
or dword [rsp + 0x28], eax
inc r15d
mov byte [rsi + 3], cl
add rsi, 4
cmp r15d, dword [rbx]
jl 0x14005c940
jmp 0x14005cd34
test eax, eax
jle 0x14005cd39
mov r12d, dword [rbp + 0x418]
lea rsi, [rcx + r14]
mov r14d, dword [rbp + 0x420]
nop dword [rax]
mov rcx, rbx
call fcn.140050cf0
cmp r14d, 0x10
jne 0x14005cbe3
mov r8d, eax
jmp 0x14005cbfc
mov rcx, rbx
mov edi, eax
call fcn.140050cf0
mov r8d, eax
shl r8d, 0x10
add r8d, edi
mov rdi, qword [rsp + 0x78]
mov r9d, dword [rsp + 0x3c]
lea r11, [0x140000000]
mov r10, qword [rbp - 0x58]
mov ecx, r9d
mov edx, r8d
and edx, dword [rsp + 0x30]
mov eax, edx
shr eax, cl
mov ecx, dword [rsp + 0x44]
shl edx, cl
mov ecx, dword [rsp + 0x38]
test r9d, r9d
mov r9d, dword [rsp + 0x40]
cmovns edx, eax
shr edx, cl
imul edx, dword [r11 + r10*4 + 0x94ba8]
mov ecx, dword [r11 + r10*4 + 0x95f80]
mov r10, qword [rbp - 0x50]
sar edx, cl
mov ecx, r9d
mov byte [rsi], dl
mov edx, r8d
and edx, dword [rbp + 0x428]
mov eax, edx
shr eax, cl
mov ecx, dword [rsp + 0x50]
shl edx, cl
mov ecx, dword [rsp + 0x54]
test r9d, r9d
mov r9d, dword [rsp + 0x2c]
cmovns edx, eax
shr edx, cl
imul edx, dword [r11 + r10*4 + 0x94ba8]
mov ecx, dword [r11 + r10*4 + 0x95f80]
sar edx, cl
mov ecx, r9d
mov byte [rsi + 1], dl
mov edx, r8d
and edx, dword [rsp + 0x34]
mov eax, edx
shr eax, cl
mov ecx, dword [rsp + 0x58]
shl edx, cl
mov ecx, dword [rsp + 0x5c]
test r9d, r9d
mov r9, qword [rbp - 0x48]
cmovns edx, eax
shr edx, cl
imul edx, dword [r11 + r9*4 + 0x94ba8]
mov ecx, dword [r11 + r9*4 + 0x95f80]
sar edx, cl
mov byte [rsi + 2], dl
test r12d, r12d
je 0x14005cd07
mov r11d, dword [rsp + 0x24]
and r8d, r12d
mov eax, r8d
mov ecx, r11d
shr eax, cl
mov ecx, dword [rsp + 0x60]
shl r8d, cl
mov ecx, dword [rsp + 0x64]
test r11d, r11d
cmovns r8d, eax
lea rax, [0x140000000]
shr r8d, cl
imul r8d, dword [rax + rdi*4 + 0x94ba8]
mov ecx, dword [rax + rdi*4 + 0x95f80]
sar r8d, cl
jmp 0x14005cd0d
mov r8d, 0xff
or dword [rsp + 0x28], r8d
add r13d, 4
mov byte [rsi + 3], r8b
inc r15d
add rsi, 4
cmp r15d, dword [rbx]
jl 0x14005cbd0
mov r14, qword [rsp + 0x70]
mov r12d, dword [rsp + 0x68]
mov r8d, dword [rsp + 0x20]
test r12d, r12d
je 0x14005cd81
cmp qword [rbx + 0x10], 0
je 0x14005cd77
mov ecx, dword [rbx + 0xc8]
sub ecx, dword [rbx + 0xc0]
cmp ecx, r12d
jge 0x14005cd77
mov rax, qword [rbx + 0xc8]
mov edx, r12d
sub edx, ecx
mov qword [rbx + 0xc0], rax
mov rcx, qword [rbx + 0x28]
call qword [rbx + 0x18]
mov r8d, dword [rsp + 0x20]
jmp 0x14005cd81
mov eax, r12d
add qword [rbx + 0xc0], rax
mov eax, dword [rbx + 4]
inc r8d
mov rdx, qword [rsp + 0x48]
mov ecx, eax
mov rdi, qword [rsp + 0x78]
mov dword [rsp + 0x20], r8d
cmp r8d, eax
jl 0x14005c920
cmp dword [rsp + 0x28], 0
jne 0x14005cdce
imul eax, dword [rbx]
lea eax, [rax*4 - 1]
movsxd rdx, eax
test eax, eax
js 0x14005cdce
nop dword [rax]
mov byte [rdx + r14], 0xff
sub rdx, 4
jns 0x14005cdc0
mov ecx, dword [rbx + 4]
cmp dword [rsp + 0x6c], 0
jle 0x14005ce41
xor r10d, r10d
mov edx, ecx
test ecx, 0xfffffffe
jle 0x14005ce41
mov ecx, dword [rbx]
sub edx, r10d
dec edx
mov r9d, ecx
imul edx, ecx
xor r8d, r8d
imul r9d, r10d
lea eax, [rcx*4]
shl edx, 2
mov r11d, edx
add rdx, r14
shl r9d, 2
test eax, eax
jle 0x14005ce30
sub r9, r11
movzx eax, byte [rdx]
inc r8d
movzx ecx, byte [r9 + rdx]
mov byte [r9 + rdx], al
mov byte [rdx], cl
lea rdx, [rdx + 1]
mov eax, dword [rbx]
shl eax, 2
cmp r8d, eax
jl 0x14005ce11
mov ecx, dword [rbx + 4]
inc r10d
mov eax, ecx
mov edx, ecx
sar eax, 1
cmp r10d, eax
jl 0x14005cde2
mov eax, dword [rbx]
mov rdx, qword [rbp + 0x408]
mov dword [rdx], eax
mov rax, qword [rbp + 0x410]
mov dword [rax], ecx
mov rax, r14
jmp 0x14005c57d
mov rcx, r14
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.bad_masks
jmp 0x14005c577
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.outofmem
jmp 0x14005c577
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.too_large
mov qword [rdx + rcx], rax
xor eax, eax
jmp 0x14005c585
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.bad_offset
mov qword [rdx + rcx], rax
xor eax, eax
jmp 0x14005c585
mov rax, qword gs:[0x58]
mov edx, 0x28
mov rcx, qword [rax]
lea rax, str.bad_header
mov qword [rdx + rcx], rax
xor eax, eax
jmp 0x14005c585