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

Disassembly:
mov eax, 0x1006307c
call fcn.100616f8
sub esp, 0xb0
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov ebx, edx
je 0x10043cc3
mov eax, dword [ecx]
imul eax, dword [ecx]
xor ecx, ecx
mov edi, dword [ebp + 0x18]
cmp ecx, eax
mov eax, dword [edi]
sbb esi, esi
inc esi
cmp eax, 0x218e9934
mov eax, dword [edi]
setg cl
xor edx, edx
cmp esi, ecx
setg dl
xor ecx, ecx
cmp edx, eax
sete cl
cmp ecx, 1
sbb eax, eax
neg eax
mov dword [ebx], eax
jmp 0x10044298
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x40]
push 3
pop edi
push edi
mov dword [ebp - 0x5c], eax
call fcn.1000b34a
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x64], 0xfffffffb
mov dword [ebp - 0x70], 0xfffffff8
mov dword [ebp - 0x20], 0xffffffff
mov dword [ebp - 0x20], 6
mov dword [ebp - 0x60], 0xffffffff
mov dword [ebp - 0x14], esi
jmp 0x10043d12
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x40]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jl 0x10043d05
lea eax, [ebp - 0x60]
push eax
push ecx
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
lea edx, [ebp - 0x70]
call fcn.10043aa5
or dword [ebp - 4], 0xffffffff
add esp, 0x14
cmp dword [ebp - 0x40], esi
je 0x10043d4e
push dword [ebp - 0x40]
call fcn.1004aef9
pop ecx
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], esi
mov eax, dword [0x1007edc0]
xor ebx, ebx
inc ebx
test bl, al
jne 0x10043d9e
or eax, ebx
mov ecx, 0x1571
or dword [0x10080154], 0xffffffff
mov edx, ebx
mov dword [0x1007edc0], eax
mov dword [0x1007edd4], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1007edd4], ecx
inc edx
cmp edx, 0x270
jl 0x10043d75
mov dword [0x1007edd0], 0x270
mov dword [ebp - 0x1c], 0x25b9b55b
lea ecx, [ebp - 0x4c]
push edi
call fcn.1000b34a
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], 0x4dd6
cmp dword [ebp - 0x14], 0x4ece
jle 0x10043e04
mov edi, esi
mov dword [ebp - 0x1c], esi
mov ebx, esi
mov esi, dword [ebp - 0x1c]
mov ecx, ebx
mov eax, esi
shl eax, cl
mov ecx, 0x1007da98
and eax, edi
cdq
push edx
push eax
call fcn.1000b132
inc ebx
cmp ebx, 0x390a
jl 0x10043dcb
inc esi
push 0
mov dword [ebp - 0x1c], esi
cmp esi, 0x1a19
pop esi
jl 0x10043dc6
inc edi
cmp edi, 0x288b
jl 0x10043dc3
xor ebx, ebx
inc ebx
mov dword [ebp - 0x20], 0x4498b94b
mov byte [ebp - 4], 2
cmp dword [ebp - 0x14], 0x4c36
jge 0x10043e48
mov edx, str.qcpftk_otaurmnd_nvtu_ydcdz_bsjepf_tutnljby_sdgqqfnp_zqvsq
mov ecx, 0x1007da98
call fcn.1000d503
jmp 0x10043e48
push 0x68cc
push esi
push 0xb44
lea eax, [ebp - 0x24]
mov dword [ebp - 4], ebx
push eax
push ecx
push ecx
lea ecx, [ebp - 0x4c]
call fcn.10042af9
add esp, 0x18
mov dword [ebp - 0x24], esi
jmp 0x10043e7a
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x34], 5
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], ebx
jl 0x10043e6c
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0x1c], 0xc
jne 0x1004403d
mov dword [ebp - 0x14], 0xe1879501
mov dword [ebp - 0x18], 0x790f9584
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x14], 2
cmp dword [ebp - 0x14], esi
jl 0x1004401a
push ebx
lea ecx, [ebp - 0x58]
call fcn.1000b34a
mov byte [ebp - 4], 4
lea edx, [ebp - 0x68]
push ecx
mov dword [ebp - 0x18], 0xffffffff
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x18], 0xfffffffb
call fcn.100442c7
mov dword [ebp - 0x18], 0x5e61
cmp dword [ebp - 0x18], 0x5e9f
pop ecx
jle 0x10043f3b
mov edi, esi
mov ebx, esi
mov dword [ebp - 0x28], 0x20d1
mov eax, esi
mov dword [ebp - 0x30], esi
add eax, ebx
mov esi, 0x7496
mov dword [ebp - 0x2c], eax
cdq
mov ecx, 0x1007da98
push edx
push eax
call fcn.1000b132
mov eax, dword [ebp - 0x2c]
dec eax
mov dword [ebp - 0x2c], eax
dec esi
jne 0x10043f03
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
cmp eax, 0x1d32
jl 0x10043ef9
add ebx, edi
dec dword [ebp - 0x28]
jne 0x10043ef4
inc edi
cmp edi, 0x68d0
jl 0x10043eeb
xor ebx, ebx
inc ebx
mov byte [ebp - 4], 5
cmp dword [ebp - 0x18], 0x5c46
jge 0x10043f78
mov edx, str.iev_jmnal_vwnlvcvfc_rzgtmcnmp_tbamartuz_wim_qztcfysj_bpehaog_nfuxyp_zzpoa_yjsuuklr_lvwikyuu_cxmktv_unq
mov ecx, 0x1007da98
call fcn.1000d503
jmp 0x10043f78
mov dword [ebp - 4], 4
mov eax, dword [ebp - 0x58]
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x14]
add eax, dword [ecx + edx*4]
jne 0x10043fb6
mov eax, dword [ebp - 0x58]
mov edx, esi
cmp dword [eax], esi
je 0x10043fb8
mov edx, ebx
mov eax, dword [ebp - 0x14]
xor ecx, ecx
cmp edx, eax
setne cl
xor edx, edx
imul ecx, dword [ebp - 0x14]
imul eax, ecx, 0xffff220d
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
push ecx
setl dl
mov ecx, 0x7edf
mov dword [ebp - 0x18], edx
mov edx, 0x68f7
push 0x2f4d
push esi
call fcn.100436ef
mov byte [ebp - 4], bl
push dword [ebp - 0x58]
call fcn.1004aef9
add esp, 0x10
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x50], esi
dec dword [ebp - 0x14]
jmp 0x10043ea8
mov ecx, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x14]
cmp ecx, eax
setne dl
xor eax, eax
cmp edx, 0x3fa9a180
setge al
mov dword [ebp - 0x34], eax
inc dword [ebp - 0x1c]
jmp 0x10043e82
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x4c], 0
je 0x10044059
push dword [ebp - 0x4c]
call fcn.1004aef9
pop ecx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], esi
cmp byte [0x1007ec11], 0
jne 0x100441fd
push 0x3a0e
push esi
push 0x1b5a
push 0x1007edd0
push 0x2376
push ebx
push esi
push 0x48a8
push 0x2087
push 0x792b
mov edx, 0x16fa
mov ecx, 0xda9
call fcn.10042bdf
movdqa xmm0, xmmword [0x10070f00]
lea eax, [ebp - 0x94]
add esp, 0x28
mov dword [ebp - 0x7c], esi
lea ecx, [ebp - 0x7c]
mov dword [ebp - 0x78], esi
movdqu xmmword [ebp - 0xa4], xmm0
mov dword [ebp - 0x74], esi
push dword [ebp - 0x68]
push eax
lea eax, [ebp - 0xa4]
push eax
push esi
call fcn.1000da84
mov dword [ebp - 4], 7
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x20], 0xb2ab76d6
mov dword [ebp - 0x8c], 0xaccb24ce
mov dword [ebp - 0x94], 0x3f7e813a
mov dword [ebp - 0x2c], 0x6f8e
cmp dword [ebp - 0x2c], 0x703d
jle 0x1004418d
push 0x1f64
push 0x4d9
push 0xccb
push 0x2652
push esi
call dword [sym.imp.USER32.dll_SetRect]
mov dword [ebp - 0x30], esi
mov eax, esi
mov dword [ebp - 0x28], 0x2119
mov dword [ebp - 0x18], eax
mov edi, eax
mov dword [ebp - 0x20], 0x5b7d
mov eax, edi
lea ecx, [ebp - 0xbc]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10044157
mov eax, dword [eax]
push eax
call fcn.1004ad2c
pop ecx
push esi
push ebx
lea ecx, [ebp - 0xbc]
call fcn.1000b74b
dec edi
dec dword [ebp - 0x20]
jne 0x1004413d
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x30]
add eax, edi
dec dword [ebp - 0x28]
mov dword [ebp - 0x18], eax
jne 0x10044134
inc edi
mov dword [ebp - 0x30], edi
cmp edi, 0x765a
jl 0x10044128
mov dword [ebp - 0x20], 0xffffffff
cmp dword [ebp - 0x2c], 0x6d4e
jge 0x100441a8
push str.dyrwnnwuo_krjolln_sfke_igwhffzf_iyv_hvsntswg_wwgtysi_cfdiizt_tjndmfeoi_udw_mohcbqk_rlbz_vzeqqerp_ahqdfn
call fcn.1004ad2c
pop ecx
mov dword [ebp - 0x20], 7
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x90], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x84], 0xc064b57d
mov dword [ebp - 0x80], 0x7762
mov dword [ebp - 0x1c], esi
jmp 0x100441e2
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x88], 0x62d7bc35
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ebx
jl 0x100441d1
mov eax, dword [ebp - 0x7c]
push eax
mov dword [eax], 0xfffffff7
call fcn.1004aef9
pop ecx
mov byte [0x1007ec11], bl
mov eax, dword [0x1007edd0]
cmp eax, 0x270
jne 0x10044249
mov edx, 0x1007edd8
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, 0x1007f798
jl 0x1004420e
jmp 0x10044255
cmp eax, 0x4e0
jb 0x1004425a
call fcn.10044bca
mov eax, dword [0x1007edd0]
mov edx, dword [eax*4 + 0x1007edd4]
inc eax
mov dword [0x1007edd0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10080154]
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 - 0x5c]
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