Function at 0x403400
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x78
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
cmp edi, 0xf
ja 0x403657
je 0x403623
mov eax, edi
sub eax, 1
je 0x40348c
sub eax, 1
jne 0x40366f
push 1
push esi
call dword [sym.imp.USER32.dll_KillTimer]
xor edi, edi
cmp dword [0x4085d4], edi
jle 0x40347f
mov esi, 0x408624
push dword [esi + 0xc]
call fcn.00404885
add esp, 4
push dword [esi + 4]
push dword [esi - 4]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esi]
call dword [sym.imp.GDI32.dll_DeleteObject]
push dword [esi - 4]
call dword [sym.imp.GDI32.dll_DeleteDC]
inc edi
lea esi, [esi + 0x50]
cmp edi, dword [0x4085d4]
jl 0x403448
mov esi, dword [ebp + 8]
call fcn.00401c40
mov edi, dword [ebp + 0xc]
jmp 0x40366f
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
add esp, 4
mov dword [esp + 0x10], eax
mov esi, edx
mov dword [esp + 0xc], esi
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll_clock]
mov dword [esp + 0x14], eax
mov eax, esi
movzx ecx, al
imul esi, ecx, 0x101
mov ecx, eax
shr ecx, 8
movzx ecx, cl
add esi, ecx
mov ecx, eax
shr ecx, 0x10
movzx eax, cl
imul edx, esi, 0x101
mov esi, dword [esp + 0xc]
add edx, eax
mov eax, esi
imul edi, edx, 0x101
mov edx, dword [esp + 0x10]
mov ecx, edx
shrd ecx, eax, 8
movzx eax, cl
mov ecx, edx
imul eax, eax, 0x140f0601
add edi, eax
mov eax, esi
shrd ecx, eax, 0x10
movzx eax, cl
mov ecx, edx
imul eax, eax, 0xa0a0501
add edi, eax
mov eax, esi
shrd ecx, eax, 0x18
movzx eax, cl
imul eax, eax, 0x4060401
add edi, eax
movzx eax, dl
mov edx, dword [esp + 0x14]
imul eax, eax, 0x23150701
add edi, eax
mov eax, esi
shr eax, 0x18
mov esi, 1
add edi, eax
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
imul eax, eax, 0x101
add ecx, eax
mov eax, edx
imul ecx, ecx, 0x101
shr eax, 0x10
movzx eax, al
shr edx, 0x18
add ecx, eax
imul eax, ecx, 0x101
add eax, edx
mov edx, 0x409134
xor eax, edi
mov dword [0x409130], eax
nop dword [eax]
mov ecx, dword [edx - 4]
lea edx, [edx + 4]
shr ecx, 0x1e
xor ecx, dword [edx - 8]
imul eax, ecx, 0x6c078965
add eax, esi
inc esi
mov dword [edx - 4], eax
cmp esi, 0x270
jl 0x403570
call fcn.00401240
lea ecx, [esp + 0x18]
call fcn.004039a0
mov edx, eax
lea ecx, [esp + 0x2c]
call section..text
movups xmm0, xmmword [eax]
movups xmmword [0x4085c0], xmm0
mov edx, dword [eax + 0x10]
psrldq xmm0, 4
movd ecx, xmm0
mov dword [0x4085d0], edx
mov dword [0x4085d4], 0
mov dword [0x4085d8], 0
test ecx, ecx
jne 0x4035e4
mov eax, dword [0x4085cc]
jmp 0x4035f0
xor eax, eax
cmp ecx, 1
cmove eax, dword [0x4085c8]
mov esi, dword [ebp + 8]
push 0
push dword [0x4085c0]
mov dword [0x4085dc], eax
imul eax, edx, 0x3e8
push 1
push esi
mov dword [0x4085e0], 0
mov dword [0x4085e4], eax
call dword [sym.imp.USER32.dll_SetTimer]
mov edi, dword [ebp + 0xc]
jmp 0x40366f
lea eax, [esp + 0x40]
push eax
push esi
call dword [sym.imp.USER32.dll_BeginPaint]
push 0
push 0x403c10
push 0
push eax
mov dword [0x4085b0], 0
call dword [sym.imp.USER32.dll_EnumDisplayMonitors]
lea eax, [esp + 0x40]
push eax
push esi
call dword [sym.imp.USER32.dll_EndPaint]
jmp 0x40366f
cmp edi, 0x113
jne 0x40366f
call fcn.004017a0
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edi
push esi
call fcn.00403d94
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x10