Function at 0x403efb
Capabilities:
Authenticate hmac
Encode data using xor
Generate random numbers via winapi

Disassembly:
push ebp
mov eax, 0x125c
mov ebp, esp
push edi
push esi
push ebx
call fcn.00405300
mov esi, str.DR25R
mov ecx, 0x4a
sub esp, eax
imul eax, dword [ebp + 0xc], 0x25
lea edi, [ebp - 0x10aa]
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x1211]
lea esi, [ebp + eax - 0x10aa]
lea eax, [ebp - 0x1211]
mov ebx, ecx
mov ecx, 0x25
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
lea eax, [ebp - 0x1060]
mov byte [ebp - 0x1060], 0
mov esi, dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov eax, dword [0x41e2cc]
mov dword [esp], eax
call esi
movzx eax, byte [ebp - 0x1060]
mov ecx, 0x64
mov edi, dword [ebp + 8]
sub esp, 0xc
cdq
idiv ecx
mov ecx, 0xa
mov eax, edx
cdq
idiv ecx
mov ecx, 0x10
add edx, 0x30
add eax, 0x30
mov byte [edi + 5], al
mov eax, ebx
mov byte [edi + 6], dl
lea edi, [ebp - 0x11ec]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x11ec]
mov dword [esp + 4], 5
lea edi, [ebp - 0x11ac]
mov dword [esp + 8], eax
mov eax, dword [0x41e2cc]
mov dword [esp], eax
call esi
mov ecx, 0x10
mov eax, ebx
lea edx, [ebp - 0x11ac]
rep stosd dword es:[edi], eax
sub esp, 0xc
mov ebx, dword [ebp + 8]
mov cl, byte [ebx + eax]
mov byte [edx + eax], cl
inc eax
cmp eax, 7
jne 0x403fe5
xor ebx, ebx
mov al, byte [ebp + ebx - 0x120b]
mov byte [ebp + ebx - 0x11a5], al
inc ebx
cmp ebx, 9
jne 0x403ff6
xor eax, eax
lea edi, [ebp - 0x116c]
mov ecx, 0x10
mov word [ebp - 0x119c], 0x3276
rep stosd dword es:[edi], eax
lea esi, [ebp - 0x1202]
lea edi, [ebp - 0x119a]
mov ecx, 0xb
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x118f]
lea esi, [ebp - 0x11f7]
mov ecx, 0xb
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x112c]
mov ecx, 0x10
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0x112c]
mov dword [esp], edx
lea edi, [ebp - 0x1234]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x28
call fcn.00403cc5
xor eax, eax
mov ecx, 8
lea edx, [ebp - 0x1060]
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x1060]
mov ecx, ebx
rep stosd dword es:[edi], eax
mov cl, byte [ebp + eax - 0x112c]
xor ecx, 0x36
mov byte [edx + eax], cl
inc eax
cmp eax, 0x10
jne 0x40408e
mov eax, dword [ebp + 8]
lea edi, [ebp - 0x10ec]
mov ecx, 8
mov eax, dword [eax]
mov dword [ebp - 0x1050], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 3]
mov dword [ebp - 0x104d], eax
mov eax, dword [ebp - 0x11ec]
mov dword [ebp - 0x1049], eax
mov al, byte [ebp - 0x11e8]
mov byte [ebp - 0x1045], al
xor eax, eax
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x1244]
mov ecx, 4
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x1244]
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x24
call fcn.00403cc5
xor edx, edx
lea eax, [ebp - 0x10ec]
mov cl, byte [ebp + edx - 0x112c]
xor ecx, 0x5c
mov byte [eax + edx], cl
inc edx
cmp edx, 0x10
jne 0x40410e
lea edi, [ebp - 0x10dc]
lea esi, [ebp - 0x1244]
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
lea edi, [ebp - 0x1234]
mov dword [esp], eax
mov dword [esp + 8], edi
mov dword [esp + 4], 0x20
call fcn.00403cc5
xor eax, eax
mov dl, byte [edi + eax*2]
xor dl, byte [edi + eax]
mov byte [ebp + eax - 0x116c], dl
inc eax
cmp eax, 8
jne 0x404150
mov eax, dword [ebp - 0x116c]
lea ebx, [ebp - 0x10ec]
lea esi, [ebp - 0x11ec]
mov dword [ebp - 0x11e7], eax
mov eax, dword [ebp - 0x1168]
mov dword [ebp - 0x11e3], eax
lea eax, [ebp - 0x112c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x1060]
mov dword [esp], eax
mov dword [esp + 8], 0x10
call fcn.00403dbb
mov edx, dword [ebp - 0x11ec]
lea eax, [ebp - 0x1060]
mov dword [ebp - 0x1234], edx
mov edx, dword [ebp - 0x11e8]
mov dword [ebp - 0x10ec], edx
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov edi, ebx
xor ebx, ebx
mov dword [esp], eax
call fcn.00403d58
mov eax, dword [ebp - 0x1234]
xor edx, edx
mov dword [ebp - 0x1254], esp
mov dword [ebp - 0x124c], edx
mov ecx, 0x10
mov dword [ebp - 0x11ec], eax
mov eax, dword [ebp - 0x10ec]
mov word [ebp - 0x1227], 0
mov dword [ebp - 0x11e8], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, 0xd
lea edi, [ebp - 0x1234]
rep movsb byte es:[edi], byte [esi]
xor edi, edi
mov eax, dword [ebp - 0x124c]
lea edx, [eax + 5]
and edx, 7
cmp eax, 3
mov dword [ebp - 0x124c], edx
mov dl, byte [ebp + ebx - 0x1234]
movzx eax, dl
jle 0x4042ad
mov cl, byte [ebp - 0x124c]
lea esi, [ebx + 1]
shl eax, cl
mov ecx, 8
mov dword [ebp - 0x1258], eax
mov al, byte [ebp + ebx - 0x1233]
mov byte [ebp - 0x124d], al
mov eax, dword [ebp - 0x124c]
sub ecx, eax
movzx eax, byte [ebp - 0x124d]
sar eax, cl
mov edx, eax
add eax, dword [ebp - 0x1258]
shl edx, cl
movzx eax, al
mov ecx, edx
mov dl, byte [ebp - 0x124d]
sub edx, ecx
mov cl, byte [ebp - 0x124c]
mov byte [ebp + ebx - 0x1233], dl
mov edx, eax
sar edx, cl
sub byte [ebp + ebx - 0x1234], dl
mov ebx, esi
call fcn.00403e98
jmp 0x4042da
cmp dword [ebp - 0x124c], 0
je 0x4042d4
mov esi, dword [ebp - 0x124c]
mov ecx, 8
sub ecx, esi
sar eax, cl
mov esi, eax
shl esi, cl
sub edx, esi
mov byte [ebp + ebx - 0x1234], dl
jmp 0x4042d5
inc ebx
call fcn.00403e98
mov byte [ebp + edi - 0x10ec], al
lea esi, [ebp - 0x10ec]
lea eax, [edi + 1]
cmp ebx, 0xf
je 0x4042f6
mov edi, eax
jmp 0x404220
xor eax, eax
mov ecx, 0x15
mov dword [ebp + edi - 0x10ee], eax
mov eax, dword [ebp + 8]
mov esp, dword [ebp - 0x1254]
add eax, 7
mov edi, eax
mov eax, 0x1e
rep movsb byte es:[edi], byte [esi]
mov edi, 0x1b
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 8]
mov edx, 7
add esi, edi
add ebx, eax
mov cl, byte [esi + edx - 7]
mov byte [ebx + edx - 7], cl
dec edx
jne 0x40432d
mov ebx, dword [ebp + 8]
sub eax, 8
sub edi, 7
mov byte [ebx + eax + 1], 0x2d
cmp eax, 6
jne 0x40431e
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret