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

Disassembly:
mov eax, 0x1006352c
call fcn.10061a48
sub esp, 0xfc
push ebx
push esi
xor ebx, ebx
mov dword [ebp - 0x20], ecx
push edi
mov dword [ebp - 0x10], esp
cmp byte [ebp + 0xc], bl
je 0x100382f4
mov dword [ebp - 0x1c], 0x71b1
cmp dword [ebp - 0x1c], 0x721b
jle 0x10038293
mov esi, ebx
mov edi, esi
mov ebx, 0x3a27
mov eax, edi
mov ecx, 0x1007d9f8
cdq
push edx
push eax
call fcn.10004c38
dec edi
dec ebx
jne 0x10038274
inc esi
cmp esi, 0xc5e
jl 0x1003826d
mov ecx, dword [ebp - 0x20]
push 0x1a
pop esi
cmp dword [ecx], esi
jge 0x100382a4
mov eax, dword [ebp + 8]
movzx edx, word [eax]
add edx, dword [ecx]
jmp 0x100382b1
mov eax, dword [ecx]
cdq
idiv esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax]
add edx, eax
mov ecx, dword [ebp + 0x1c]
push edx
call fcn.1001bb92
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x1c], 0x6f18
jge 0x100382d5
mov edx, str.csvybrmh_bcldgq_qhsiwkdla_mftkij_mohc_mymsm_gisrmpose_bnsjs
mov ecx, 0x1007d9f8
call fcn.100070aa
jmp 0x10038b8f
mov dword [ebp - 0x5c], 6
mov dword [ebp - 0x8c], 0xfffffff6
mov dword [ebp - 0x68], 0x48abb75d
mov dword [ebp - 0x60], 0x5c22c920
mov dword [ebp - 0x90], 0x5e0e2bf3
mov dword [ebp - 0x54], 0x82ba8d7d
mov dword [ebp - 0x20], 0xf21c9b6c
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x20], 0x1bed
cmp dword [ebp - 0x20], 0x101c
mov dword [ebp - 0x30], edx
jge 0x10038406
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x58]
push eax
push str._ld__ld__ld__ld__ld
call fcn.1004b4b3
movd xmm0, dword [ebp - 0x64]
add esp, 0x18
movsd xmm1, qword [0x10070790]
cvtdq2pd xmm0, xmm0
mov eax, dword [ebp - 0x58]
sub eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x88]
add edx, ecx
movd xmm3, dword [ebp - 0x34]
divsd xmm1, xmm0
cvtdq2pd xmm3, xmm3
movd xmm2, eax
mov eax, edx
mulsd xmm3, xmm1
cvtdq2pd xmm2, xmm2
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mulsd xmm2, xmm1
movaps xmm1, xmm3
divsd xmm1, xmm0
cvttsd2si esi, xmm1
movaps xmm1, xmm3
imul eax, esi
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
comisd xmm1, xmm0
jb 0x100383ee
lea eax, [esi + 1]
imul eax, edx
movd xmm3, eax
cvtdq2pd xmm3, xmm3
addsd xmm2, xmm3
push ecx
push ecx
movsd qword [esp], xmm2
push str._.7lf_n
call fcn.1004af7c
add esp, 0xc
push dword [ebp - 0x30]
movdqa xmm0, xmmword [0x10070800]
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0xe0]
mov dword [ebp - 0x70], 0xfffffff9
push eax
push ebx
lea ecx, [ebp - 0x7c]
mov dword [ebp - 0x7c], ebx
movdqu xmmword [ebp - 0xe0], xmm0
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], ebx
call fcn.10007962
push ecx
lea eax, [ebp - 0x54]
mov dword [ebp - 4], 2
push eax
lea eax, [ebp - 0x90]
mov dword [ebp - 0x48], 0x7a30
push eax
lea eax, [ebp - 0x5c]
mov dl, 1
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x8c]
call fcn.100375ad
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x7c]
add esp, 0x28
call fcn.10004ee5
mov eax, dword [0x1017d44c]
test al, 1
jne 0x100384e4
or dword [0x1017d444], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x1017d44c], eax
xor edx, edx
mov dword [0x1017c0c4], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1017c0c4], ecx
inc edx
cmp edx, 0x270
jl 0x100384bb
mov dword [0x1017c0c0], 0x270
movdqa xmm0, xmmword [0x100707d0]
lea eax, [ebp - 0xf0]
push 3
pop esi
push dword [ebp - 0x30]
mov dword [ebp - 0x1c], esi
lea ecx, [ebp - 0xa0]
push eax
lea eax, [ebp - 0x100]
mov dword [ebp - 0xa0], ebx
push eax
push ebx
movdqu xmmword [ebp - 0x100], xmm0
mov dword [ebp - 0x9c], ebx
mov dword [ebp - 0x98], ebx
call fcn.10007962
mov dword [ebp - 4], esi
mov dword [ebp - 0x24], 0x78d
cmp dword [ebp - 0x24], 0x8e2
jle 0x100385b1
mov ecx, ebx
mov dword [ebp - 0x14], ebx
mov eax, ebx
mov dword [ebp - 0x1c], ebx
mov edi, ebx
mov dword [ebp - 0x18], ebx
add edi, eax
mov dword [ebp - 0x20], ebx
add edi, ecx
mov ecx, ebx
mov eax, edi
sar eax, cl
mov ecx, 0x1007d9f8
cdq
push edx
push eax
call fcn.10004c38
inc ebx
cmp ebx, 0x1e47
jl 0x10038552
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
inc edi
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x18], edi
push 0
pop ebx
cmp edi, 0x6805
jl 0x1003854b
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, 0x6714
jl 0x10038546
inc ecx
mov dword [ebp - 0x14], ecx
cmp ecx, 0x2dfe
jl 0x10038541
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetBkColor]
mov dword [ebp - 0x14], 0x2b96ce02
mov byte [ebp - 4], 4
cmp dword [ebp - 0x24], 0x668
jge 0x100385f5
mov edx, str.sshmumpbl_uqvjjvhg_qeismdn_kwfnousch_bypxtjrim_quligfjs_jskdg_hcw_phifzg_tpsoy_rhfox_kwlx_lszsgtatk
mov ecx, 0x1007d9f8
call fcn.100070aa
jmp 0x100385f5
mov dword [ebp - 4], esi
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x1c], 0xffffffeb
cmp dword [ebp - 0x1c], 0x11
jl 0x10038893
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x2c], esi
cmp dword [ebp - 0x2c], ebx
jl 0x10038869
push dword [ebp - 0x30]
movdqa xmm0, xmmword [0x100707f0]
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0xf0]
mov dword [ebp - 0x44], ebx
push eax
push ebx
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x40], ebx
movdqu xmmword [ebp - 0xf0], xmm0
mov dword [ebp - 0x3c], ebx
call fcn.10007962
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x44]
add eax, 8
mov dword [eax], ebx
cmp dword [eax], 3
jg 0x10038855
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x18], 3
cmp dword [ebp - 0x18], ebx
jl 0x10038848
mov dword [ebp - 0x14], 0xfffffffe
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x14], 3
jg 0x1003873b
mov dword [ebp - 0x24], 0x25f6
cmp dword [ebp - 0x24], 0x2950
jle 0x100386cc
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x1007d9f8
xor eax, esi
cdq
push edx
push eax
call fcn.10004c38
inc edi
cmp edi, 0x360e
jl 0x100386a9
inc esi
cmp esi, 0x3393
jl 0x100386a7
mov dword [ebp - 0x80], 0x19a80bfb
mov byte [ebp - 4], 7
cmp dword [ebp - 0x24], 0x22a6
jge 0x10038710
mov edx, str.adzhi_rbnfdpgl_bgpgzthoj
mov ecx, 0x1007d9f8
call fcn.100070aa
jmp 0x10038710
push 0x5f61
push ecx
mov dword [ebp - 4], 6
lea edx, [ebp - 0x80]
mov dword [ebp - 0x20], 1
mov ecx, 0x8d2
call fcn.1003a586
inc dword [ebp - 0x14]
pop ecx
pop ecx
jmp 0x1003868b
mov dword [ebp - 0x20], 0x64b0
cmp dword [ebp - 0x20], 0x64ca
jle 0x10038794
mov edi, ebx
mov esi, ebx
mov ecx, ebx
mov dword [ebp - 0x24], ebx
lea eax, [esi + edi]
and eax, ecx
mov ecx, 0x1007d9f8
cdq
push edx
push eax
call fcn.10004c38
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0xd09
jl 0x10038754
inc esi
cmp esi, 0x216f
jl 0x1003874f
inc edi
cmp edi, 0x33e
jl 0x1003874d
push ebx
push 0x147
push ebx
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
mov dword [ebp - 0x14], 3
cmp dword [ebp - 0x14], ebx
jl 0x100387ff
push 0x2ecc
push 1
push 0x4b7c
push ebx
push 0x3cee
push 0x2485
push 0x1346
push 0x410f
mov byte [ebp - 0x27], bl
lea ecx, [ebp - 0x27]
push 0x586a
xor dl, dl
call fcn.10039fbc
push 0x5268
push 0x7806
push 1
push 0x7fa1
push 0x349f
push 1
mov edx, 0x5fa6
xor cl, cl
call fcn.10037814
add esp, 0x3c
dec dword [ebp - 0x14]
jns 0x100387a0
mov byte [ebp - 4], 9
cmp dword [ebp - 0x20], 0x6474
jge 0x10038839
mov edx, str.asykcwz_tdvzqb_uqo_llfreprd_iqscuropd_gxc_jkgsgs_boscwpyy_ykpu_llrhmt_fqmtq_iomrsuekl_nuv_nxzm
mov ecx, 0x1007d9f8
call fcn.100070aa
jmp 0x10038839
mov dword [ebp - 4], 6
dec dword [ebp - 0x18]
jmp 0x10038678
mov eax, dword [ebp - 0x44]
add eax, 8
inc dword [eax]
jmp 0x10038661
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 3
call fcn.10004ee5
dec dword [ebp - 0x2c]
jmp 0x10038619
lea eax, [ebp - 0x94]
xor dl, dl
push eax
lea eax, [ebp - 0x2c]
mov ecx, 0x4992
push 0x76a4
push eax
call fcn.10038f50
add esp, 0xc
inc dword [ebp - 0x1c]
push 3
pop esi
jmp 0x10038605
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xa0]
call fcn.10004ee5
mov dword [ebp - 0x14], 0x20624039
mov dword [ebp - 0x14], 0xfffffffc
cmp dword [ebp - 0x14], 0xfffffff2
jge 0x10038a1f
xor ecx, ecx
inc ecx
mov dword [ebp - 0x18], 0xc0f8067e
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x20], 0xde9ab5c2
mov dword [ebp - 0x18], ebx
jmp 0x100388e4
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x108], 0xff55e00f
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x100388d3
mov dword [ebp - 0x18], ebx
jmp 0x10038a09
mov dword [ebp - 0x1c], 0x79c4185a
mov dword [ebp - 0x20], 0xd0176df7
mov dword [ebp - 0x20], 0xd0f065f4
mov dword [ebp - 0x1c], ecx
cmp dword [ebp - 0x1c], ebx
jl 0x100389e7
push 2
lea ecx, [ebp - 0xb8]
call fcn.10004e62
mov dword [ebp - 4], 0xb
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0x20], 0x643b8a27
push 4
call fcn.10004e62
push 0x5d6f
push 0x4a58
push ebx
push 0x6502
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 0xc
push eax
push ebx
lea edx, [ebp - 0xb8]
mov cl, 1
call fcn.10037814
push 0xe4a
push 1
lea eax, [ebp - 0x4c]
mov dl, 1
push eax
push ebx
push 0x2c97
push 0x3382
push 0x4c19
lea eax, [ebp - 0xc4]
mov ecx, 0x6712
push 0x6115
push eax
call fcn.10039fbc
add esp, 0x3c
lea eax, [ebp - 0xb8]
mov edx, 0x1a06
push 0x4ff8
push ecx
push eax
push ecx
push ecx
push ebx
push ecx
call fcn.1003a095
add esp, 0x14
mov byte [ebp - 0x26], bl
lea ecx, [ebp - 0x26]
push ebx
call fcn.10037bde
add esp, 0xc
lea ecx, [ebp - 0xc4]
call fcn.10004ee5
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xb8]
call fcn.10004ee5
dec dword [ebp - 0x1c]
jns 0x10038913
push 0x5bec
lea eax, [ebp - 0x25]
mov byte [ebp - 0x25], bl
push eax
push ecx
push 0x4016
xor cl, cl
call fcn.10037563
add esp, 0x10
xor ecx, ecx
inc dword [ebp - 0x18]
inc ecx
cmp dword [ebp - 0x18], ecx
jle 0x100388f2
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xfffffff2
jl 0x100388bd
cmp byte [0x1017bf24], 0
jne 0x10038a3a
sub esp, 0xc
call fcn.10038e52
add esp, 0xc
mov byte [0x1017bf24], 1
push esi
lea ecx, [ebp - 0xd0]
call fcn.10004e62
push 2
lea ecx, [ebp - 0xac]
mov dword [ebp - 4], 0xd
call fcn.10004e62
lea eax, [ebp - 0x50]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp - 0xd0]
mov dword [ebp - 0x38], 0xc5416513
call fcn.10039c97
pop ecx
lea eax, [ebp - 0x50]
push eax
sub esp, 0xc
lea edx, [ebp - 0xac]
push 0x62f8
push ecx
push 0xfa4
push ebx
push 0x30e0
push 0x5b45
call fcn.100379fb
mov esi, dword [ebp - 0xac]
add esp, 0x28
mov dword [esi], ebx
push ebx
lea ecx, [ebp - 0x38]
call fcn.100380ae
inc dword [esi]
cmp dword [esi], 2
pop ecx
jle 0x10038aa8
push 0x24ac
lea eax, [ebp - 0x38]
mov edx, 0x56bf
push eax
push 1
push 0x7600
push 0x1c8f
push ebx
mov cl, 1
call fcn.10037814
add esp, 0x18
lea ecx, [ebp - 0xac]
call fcn.10004ee5
lea ecx, [ebp - 0xd0]
call fcn.10004ee5
mov eax, dword [0x1017c0c0]
cmp eax, 0x270
jne 0x10038b40
mov edx, 0x1017c0c8
mov ecx, dword [edx - 4]
xor ecx, dword [edx]
and ecx, 0x7fffffff
xor ecx, dword [edx - 4]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x630]
xor eax, ecx
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x1017ca88
jl 0x10038b05
jmp 0x10038b4c
cmp eax, 0x4e0
jb 0x10038b51
call fcn.1003a9b4
mov eax, dword [0x1017c0c0]
mov edx, dword [eax*4 + 0x1017c0c4]
inc eax
mov dword [0x1017c0c0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x1017d444]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov eax, dword [ebp - 0x30]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret