Function at 0x10005d00
Capabilities:
Encode data using xor
Generate random numbers via winapi

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x7a0
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
test byte [0x10059abd], 0x40
mov eax, dword [edx]
push esi
push edi
mov edi, dword [edx + 0x40]
mov esi, ecx
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x17c], edi
je 0x10005d53
push esi
push eax
mov edx, 0x1004cca8
call fcn.10004850
add esp, 8
mov eax, dword [edi + 4]
lea edx, [ebp - 0x178]
mov ecx, dword [ebp - 0x194]
mov dword [ebp - 0x178], eax
xor eax, eax
mov dword [ebp - 0x174], eax
mov ecx, dword [ecx + 0x18]
call fcn.10042970
mov dword [ebp - 0x190], eax
test eax, eax
jne 0x10005db1
test byte [0x10059ab8], 2
je 0x1000669f
push eax
push eax
push str.stateless_send_data
call fcn.10001500
add esp, 0xc
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100483f7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
cmp esi, 9
jne 0x10005f62
mov eax, dword [0x100584c8]
and eax, 0x8000000
or eax, 0
je 0x10005ddc
mov eax, dword [0x100584d0]
mov esi, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x180], esi
jmp 0x10005deb
mov dword [ebp - 0x180], 0x1004db88
mov eax, 4
mov ecx, dword [ebp - 0x190]
lea edx, [eax*4]
mov dword [ebp - 0x18c], eax
movzx eax, byte [edi + 0x3b]
add dx, ax
movzx eax, byte [edi + 0x3a]
add ax, 0xb
add dx, ax
movzx esi, dx
call fcn.10042bf0
mov dword [ebp - 0x188], eax
test eax, eax
jne 0x10005e43
test byte [0x10059ab8], 2
je 0x10006694
mov eax, esi
cdq
push edx
push eax
push str.vn_datagram
call fcn.10001500
jmp 0x10006691
mov esi, dword [eax + 4]
mov ecx, dword [ebp - 0x17c]
or byte [esi], 0x80
lea edi, [esi + 6]
mov dword [esi + 1], 0
movzx eax, byte [ecx + 0x3b]
mov byte [esi + 5], al
movzx eax, byte [ecx + 0x3b]
push eax
push dword [ecx + 0x30]
push edi
call fcn.10049810
mov ecx, dword [ebp - 0x17c]
add esp, 0xc
movzx eax, byte [ecx + 0x3b]
add edi, eax
movzx eax, byte [ecx + 0x3a]
mov byte [edi], al
inc edi
movzx eax, byte [ecx + 0x3a]
push eax
push dword [ecx + 0x2c]
push edi
call fcn.10049810
mov ecx, dword [ebp - 0x17c]
add esp, 0xc
mov byte [ebp - 0x169], 0
movzx eax, byte [ecx + 0x3a]
push 2
add edi, eax
lea eax, [ebp - 0x169]
push 1
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
movzx eax, byte [esi]
xor al, byte [ebp - 0x169]
and al, 0x7f
xor byte [esi], al
mov eax, dword [ebp - 0x194]
mov eax, dword [eax + 0x10]
mov dword [edi], eax
mov eax, dword [ebp - 0x18c]
shl eax, 2
push eax
push dword [ebp - 0x180]
lea eax, [edi + 4]
push eax
call fcn.10049810
mov edi, dword [ebp - 0x17c]
add esp, 0xc
and byte [edi + 0x41], 0xfe
test byte [0x10059abe], 0x80
je 0x10005f2e
push str._S__TX_____VN
push 0xffffffffffffffff
lea eax, [ebp - 0x98]
push 0x80
push eax
call fcn.100015f0
lea eax, [ebp - 0x98]
mov edx, 0x1004cf78
push eax
call fcn.10001490
add esp, 0x14
mov esi, dword [ebp - 0x188]
mov edx, dword [edi + 4]
mov ecx, dword [ebp - 0x194]
push 1
push dword [esi]
push dword [ebp - 0x190]
call fcn.10007790
add esp, 0xc
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100483f7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
cmp esi, 0xa
jne 0x100060a6
push 2
push 1
lea eax, [ebp - 0x169]
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov cl, byte [ebp - 0x169]
movzx edx, word [edi + 0x34]
shr cl, 5
add cl, 0x29
movzx eax, cl
mov byte [ebp - 0x169], cl
cmp ax, dx
jb 0x10005fa5
lea ecx, [edx - 1]
mov byte [ebp - 0x169], cl
cmp cl, 0x15
jb 0x10006694
movzx edx, cl
mov ecx, dword [ebp - 0x190]
call fcn.10042bf0
mov dword [ebp - 0x188], eax
test eax, eax
jne 0x10005fec
test byte [0x10059ab8], 2
je 0x10006694
movzx eax, byte [ebp - 0x169]
cdq
push edx
push eax
push str.reset_datagram
call fcn.10001500
jmp 0x10006691
mov esi, dword [eax + 4]
movzx eax, byte [ebp - 0x169]
push 2
sub eax, 0x10
push eax
push esi
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov cl, byte [esi]
and cl, 0x3f
or cl, 0x40
mov byte [esi], cl
mov eax, dword [edi + 0x28]
mov al, byte [eax]
xor al, cl
and al, 4
xor al, cl
mov byte [esi], al
mov esi, dword [ebp - 0x188]
movzx ecx, byte [ebp - 0x169]
add ecx, 0xfffffff0
mov edx, dword [esi + 4]
add edx, ecx
mov ecx, dword [edi + 0x2c]
call fcn.100045c0
test byte [0x10059abe], 0x80
je 0x10006090
movzx ecx, byte [ebp - 0x169]
lea eax, [ebp - 0x3a0]
add ecx, 0xfffffff0
mov dl, 0x10
add ecx, dword [esi + 4]
push eax
call fcn.10004a30
add esp, 4
push eax
push str._S__TX_____SR__s
push 0xffffffffffffffff
lea eax, [ebp - 0x98]
push 0x80
push eax
call fcn.100015f0
add esp, 0x14
lea eax, [ebp - 0x98]
mov edx, 0x1004cf78
push eax
call fcn.10001490
add esp, 4
push 0
push 1
mov ecx, 0x1d
call fcn.10004ab0
add esp, 8
jmp 0x10005f34
cmp esi, 0xb
jne 0x10006674
mov edx, 0x93
mov ecx, eax
call fcn.10042bf0
mov dword [ebp - 0x188], eax
test eax, eax
jne 0x100060e7
test byte [0x10059ab8], 2
je 0x10006694
push eax
push 0x93
push str.retry_datagram
call fcn.10001500
jmp 0x10006691
push 2
push 0xe
lea eax, [ebp - 0x14]
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
xorps xmm0, xmm0
lea eax, [ebp - 0x178]
push eax
movlpd qword [ebp - 0x60], xmm0
movlpd qword [ebp - 0x58], xmm0
movlpd qword [ebp - 0x50], xmm0
movlpd qword [ebp - 0x48], xmm0
movlpd qword [ebp - 0x40], xmm0
movlpd qword [ebp - 0x38], xmm0
movlpd qword [ebp - 0x30], xmm0
movlpd qword [ebp - 0x28], xmm0
movlpd qword [ebp - 0x20], xmm0
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov ecx, dword [ebp - 0x178]
mov eax, dword [ebp - 0x174]
sub ecx, 0xd53e8000
push 0
push 0x2710
sbb eax, 0x19db1de
push eax
push ecx
call fcn.1004a1d0
shld edx, eax, 1
add eax, eax
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x68], eax
mov eax, dword [edi + 4]
movups xmm0, xmmword [eax + 4]
movups xmmword [ebp - 0x60], xmm0
movq xmm0, qword [eax + 0x14]
movq qword [ebp - 0x50], xmm0
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x48], eax
movzx eax, byte [edi + 0x3a]
push eax
push dword [edi + 0x2c]
lea eax, [ebp - 0x44]
push eax
call fcn.10049810
mov cl, byte [0x1005858c]
add esp, 0xc
mov al, byte [edi + 0x3a]
mov byte [ebp - 0x30], al
cmp cl, 0xc
jb 0x100061f7
movq xmm0, qword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
movq qword [ebp - 0xc8], xmm0
mov dword [ebp - 0xc0], eax
jbe 0x10006223
sub cl, 0xc
mov esi, 0xc
movzx edi, cl
mov ecx, esi
mov dword [ebp - 0x180], ecx
mov eax, esi
xor edx, edx
div ecx
mov al, byte [ebp + esi - 0x14]
lea ecx, [ebp - 0xc8]
inc esi
xor byte [ecx + edx], al
mov ecx, dword [ebp - 0x180]
sub edi, 1
jne 0x100061d0
mov edi, dword [ebp - 0x17c]
jmp 0x10006223
movzx eax, cl
xorps xmm0, xmm0
push eax
lea eax, [ebp - 0x14]
movq qword [ebp - 0xc8], xmm0
push eax
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xc0], 0
push eax
call fcn.10049810
add esp, 0xc
push 0x100585cc
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [ebp - 0x178]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov ecx, dword [ebp - 0x178]
mov eax, dword [ebp - 0x174]
sub ecx, 0xd53e8000
push 0
push 0x11e1a300
sbb eax, 0x19db1de
push eax
push ecx
call fcn.1004a1d0
push 0
push 0x7530
push edx
push eax
call fcn.1004a280
movzx ecx, byte [0x100584b3]
mov esi, eax
mov eax, edx
cmp eax, dword [ecx*8 + 0x100585f4]
jg 0x10006299
jl 0x1000628d
cmp esi, dword [ecx*8 + 0x100585f0]
jae 0x10006299
mov ecx, dword [ecx*4 + 0x100585e4]
jmp 0x100063b7
add esi, 0x7530
push 2
adc eax, 0
mov dword [ebp - 0x18c], eax
lea eax, [ebp - 0xe8]
push 0x20
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
push 0
push 0x20
lea eax, [ebp - 0xe8]
push eax
push 0
push 0
lea eax, [ebp - 0x17c]
push eax
push 0x1e1
call dword [sym.imp.bcrypt.dll_BCryptGenerateSymmetricKey]
mov dword [ebp - 0x180], eax
test eax, eax
jns 0x10006306
test byte [0x10059ab8], 4
je 0x10006306
push 0x10054e00
push eax
lfence
call fcn.10001400
mov eax, dword [ebp - 0x180]
add esp, 8
push eax
call dword [sym.imp.ntdll.dll_RtlNtStatusToDosError]
test eax, eax
jle 0x1000631b
movzx eax, ax
or eax, 0x80070000
test eax, eax
jns 0x1000634b
test byte [0x10059ab8], 4
je 0x100063bb
push str.Create_stateless_retry_key
push eax
lfence
call fcn.10001400
add esp, 8
push 0x100585cc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x10006694
xor eax, eax
mov ecx, 8
cmp byte [0x100584b3], al
cmove eax, ecx
mov ecx, dword [ebp - 0x18c]
mov dword [eax + 0x100585f0], esi
mov esi, 4
mov dword [eax + 0x100585f4], ecx
xor eax, eax
mov cl, byte [0x100584b3]
test cl, cl
cmove eax, esi
mov eax, dword [eax + 0x100585e4]
test eax, eax
je 0x10006396
push eax
call dword [sym.imp.bcrypt.dll_BCryptDestroyKey]
mov cl, byte [0x100584b3]
xor eax, eax
test cl, cl
mov ecx, dword [ebp - 0x17c]
cmove eax, esi
mov dword [eax + 0x100585e4], ecx
cmp byte [0x100584b3], 0
sete byte [0x100584b3]
test ecx, ecx
jne 0x100063cb
push 0x100585cc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x10006694
lea eax, [ebp - 0x60]
push eax
push 0x44
lea eax, [ebp - 0x68]
push eax
push 8
lea edx, [ebp - 0xc8]
call fcn.1003ee80
add esp, 0x10
mov esi, eax
push 0x100585cc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test esi, esi
js 0x10006694
mov al, byte [edi + 0x3a]
mov dl, byte [0x1005858c]
mov cl, byte [edi + 0x3b]
mov byte [ebp - 0x183], al
mov eax, dword [edi + 0x2c]
mov dword [ebp - 0x174], eax
mov eax, dword [edi + 0x30]
mov dword [ebp - 0x198], eax
mov eax, dword [edi + 0x28]
mov byte [ebp - 0x181], cl
movzx ecx, cl
mov byte [ebp - 0x182], dl
mov esi, dword [eax + 1]
movzx eax, dl
add ax, 0x67
mov dword [ebp - 0x19c], esi
add cx, ax
mov eax, dword [ebp - 0x188]
movzx ecx, cx
mov dword [ebp - 0x18c], ecx
cmp word [eax], cx
jae 0x1000645e
xor eax, eax
jmp 0x100065c6
push 2
lfence
mov eax, dword [eax + 4]
mov dword [ebp - 0x180], eax
lea eax, [ebp - 0x169]
push 1
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov edx, dword [ebp - 0x180]
cmp esi, 0xcf43336b
mov eax, 0xc0
mov ecx, 0xf0
cmove ecx, eax
movzx eax, byte [ebp - 0x169]
and al, 0xf
or cl, al
mov dword [edx + 1], esi
mov al, byte [ebp - 0x181]
mov byte [edx], cl
lea ecx, [edx + 6]
mov byte [edx + 5], al
mov dword [ebp - 0x17c], ecx
test al, al
je 0x100064d7
movzx esi, al
push esi
push dword [ebp - 0x198]
push ecx
call fcn.10049810
mov ecx, dword [ebp - 0x17c]
add esp, 0xc
add ecx, esi
mov al, byte [ebp - 0x182]
mov byte [ecx], al
inc ecx
mov dword [ebp - 0x17c], ecx
test al, al
je 0x10006503
movzx esi, al
lea eax, [ebp - 0x14]
push esi
push eax
push ecx
call fcn.10049810
mov ecx, dword [ebp - 0x17c]
add esp, 0xc
add ecx, esi
movups xmm0, xmmword [ebp - 0x68]
mov esi, dword [ebp - 0x19c]
xor edx, edx
movups xmmword [ecx], xmm0
movups xmm0, xmmword [ebp - 0x58]
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [ebp - 0x48]
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [ebp - 0x38]
movups xmmword [ecx + 0x30], xmm0
movups xmm0, xmmword [ebp - 0x28]
movups xmmword [ecx + 0x40], xmm0
add ecx, 0x50
xor eax, eax
mov dword [ebp - 0x17c], ecx
nop dword [eax]
cmp dword [eax + 0x1004da50], esi
je 0x10006557
add eax, 0x48
inc edx
cmp eax, 0x120
jb 0x10006540
xor esi, esi
jmp 0x10006565
lea eax, [edx + edx*8]
lea esi, [eax*8 + 0x1004da50]
test esi, esi
jne 0x1000658d
test byte [0x10059ab8], 4
je 0x1000658b
push str.VersionInfo_____void__0_
push str.C:__w1_s_srccorepacket.c
push 0x1d1
call fcn.1003e120
mov ecx, dword [ebp - 0x17c]
add esp, 0xc
int 0x2c
mov eax, dword [ebp - 0x180]
mov dl, byte [ebp - 0x183]
push ecx
push eax
mov eax, dword [ebp - 0x18c]
mov ecx, esi
add eax, 0xfffffff0
push eax
push dword [ebp - 0x174]
call fcn.1000bb60
add esp, 0x10
test eax, eax
jns 0x100065bd
xor eax, eax
jmp 0x100065c6
mov eax, dword [ebp - 0x18c]
movzx eax, ax
mov esi, dword [ebp - 0x188]
movzx eax, ax
mov dword [esi], eax
test eax, eax
je 0x10006694
test byte [0x10059abe], 0x80
je 0x1000665e
mov dl, byte [edi + 0x3a]
lea eax, [ebp - 0x3a0]
mov ecx, dword [edi + 0x2c]
push 0x50
push eax
call fcn.10004a30
mov dl, byte [0x1005858c]
lea ecx, [ebp - 0x14]
add esp, 4
push eax
lea eax, [ebp - 0x5a0]
push eax
call fcn.10004a30
mov dl, byte [edi + 0x3b]
add esp, 4
mov ecx, dword [edi + 0x30]
push eax
lea eax, [ebp - 0x7a0]
push eax
call fcn.10004a30
add esp, 4
push eax
mov eax, dword [edi + 0x28]
push dword [eax + 1]
lea eax, [ebp - 0x168]
push str._S__TX_____LH_Ver:0x_x_DestCid:_s_SrcCid:_s_Type:R_OrigDestCid:_s__Token__hu_bytes_
push 0xffffffffffffffff
push 0x80
push eax
call fcn.100015f0
add esp, 0x24
lea eax, [ebp - 0x168]
mov edx, 0x1004cf78
push eax
call fcn.10001490
add esp, 4
push 0
push 1
mov ecx, 0x1e
call fcn.10004ab0
add esp, 8
jmp 0x10005f34
test byte [0x10059ab8], 4
je 0x10006694
push 0x1004bf7c
push str.C:__w1_s_srccore_binding.c
push 0x423
call fcn.1003e120
add esp, 0xc
mov ecx, dword [ebp - 0x190]
call fcn.10042a70
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.100483f7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret