Function at 0x1000b8c9
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x1005d14a
push eax
mov dword fs:[0], esp
sub esp, 0xd8
push ebx
push esi
mov esi, edx
push edi
test cl, cl
je 0x1000b94b
cmp byte [ebp + 0x18], 0
je 0x1000b91f
xor edx, edx
mov dword [esi], 0
inc edx
cmp dword [esi], edx
jge 0x1000c10c
mov edi, dword [ebp + 0x14]
mov ecx, dword [esi]
mov eax, dword [edi]
mov dword [eax + ecx*4], edx
inc dword [esi]
cmp dword [esi], edx
jl 0x1000b90d
jmp 0x1000c10c
mov edx, dword [ebp + 0x1c]
mov dword [edx], 0
cmp dword [edx], 1
jge 0x1000c10c
mov esi, dword [ebp + 0x10]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0xfffd
inc dword [edx]
cmp dword [edx], 1
jl 0x1000b934
jmp 0x1000c10c
cmp byte [ebp + 8], 0
je 0x1000b9e6
mov byte [esp + 0x2b], 0
cmp byte [esp + 0x2b], 0
je 0x1000c10c
mov dword [esp + 0x20], 0x63eb
cmp dword [esp + 0x20], 0x642d
jle 0x1000b9c1
xor esi, esi
xor edi, edi
mov eax, edi
lea ecx, [esp + 0xb0]
xor eax, esi
cdq
push edx
push eax
call fcn.10001ac9
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1000b998
mov eax, dword [eax]
push eax
call fcn.10045f6d
pop ecx
push 0
push 1
lea ecx, [esp + 0xb8]
call fcn.10007132
inc edi
cmp edi, 0xf85
jl 0x1000b97b
inc esi
cmp esi, 0x679b
jl 0x1000b979
push ecx
call fcn.1000cf73
cmp dword [esp + 0x24], 0x6094
pop ecx
jge 0x1000c10c
push str.kha_inhrmv_glt_xlwdeskfq_uhclm
call fcn.10045f6d
pop ecx
jmp 0x1000c10c
mov eax, dword [0x102c4130]
mov ebx, 0x270
test al, 1
jne 0x1000ba32
or dword [0x102c54e4], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x102c4130], eax
xor edx, edx
mov dword [0x102c4164], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x102c4164], ecx
inc edx
cmp edx, ebx
jl 0x1000ba11
mov dword [0x102c4160], ebx
push 1
lea ecx, [esp + 0x5c]
call fcn.10006ab6
push 2
pop esi
push 0x78b4
push 0xcbc
push ecx
xor ebx, ebx
mov dword [esp + 0xf8], esi
lea eax, [esp + 0x38]
mov dword [esp + 0x20], esi
push ebx
mov dword [esp + 0x28], 0xaa41a80d
lea edx, [esp + 0x68]
push eax
call fcn.1000c121
add esp, 0x14
mov dword [esp + 0x2c], ebx
jmp 0x1000ba8b
mov eax, dword [esp + 0x2c]
mov dword [esp + eax*4 + 0x8c], 0x8bd921b0
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], 3
jl 0x1000ba78
mov dword [esp + 0x14], ebx
jmp 0x1000bd38
xor ecx, ecx
inc ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x84], 0xfffffffa
mov dword [esp + 0x1c], 0x3896
cmp dword [esp + 0x1c], 0x38c3
jle 0x1000bb43
mov edi, ebx
mov dword [esp + 0x10], ebx
mov esi, ebx
mov dword [esp + 0x20], ebx
mov eax, edi
mov dword [esp + 0x38], ebx
cdq
mov edi, ebx
idiv esi
mov esi, edx
mov eax, esi
lea ecx, [esp + 0xc8]
cdq
idiv edi
mov eax, edx
cdq
push edx
push eax
call fcn.10001ac9
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1000bafc
mov eax, dword [eax]
push eax
call fcn.10045f6d
pop ecx
push ebx
push 1
lea ecx, [esp + 0xd0]
call fcn.10007132
inc edi
cmp edi, 0x19bc
jl 0x1000badc
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
inc esi
mov dword [esp + 0x20], esi
cmp esi, 0x5e2c
jl 0x1000bacf
inc edi
mov dword [esp + 0x10], edi
cmp edi, 0x6806
jl 0x1000bac9
xor ecx, ecx
push 2
inc ecx
pop esi
mov dword [esp + 0x80], ecx
cmp dword [esp + 0x1c], 0x3665
jge 0x1000bb62
push str.iiambc_mrjak_qvmzfgni
call fcn.10045f6d
pop ecx
xor ecx, ecx
inc ecx
mov dword [esp + 0xec], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x54], 0xfffffff9
mov dword [esp + 0x50], 0x78470ed9
mov dword [esp + 0x1c], 0xfffffffa
mov dword [esp + 0xc], ebx
jmp 0x1000bcc5
mov dword [esp + 0x10], 7
mov dword [esp + 0x38], 0xfffffff6
mov dword [esp + 0x10], ebx
jmp 0x1000bbb4
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x40], ecx
inc dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jl 0x1000bba8
inc dword [esp + 0x18]
jne 0x1000bc2e
mov eax, dword [esp + 0xc]
xor ebx, ebx
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x8c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x8c]
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x18]
cmp dword [ecx + edx*4], eax
mov eax, dword [esp + 0x38]
setge bl
xor ecx, ecx
cmp ebx, eax
mov eax, dword [esp + 0x20]
setne cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x58]
setle dl
xor ecx, ecx
cmp edx, 0x3e629bad
setge cl
sub ecx, dword [eax]
jne 0x1000bc2e
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x54]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
mov eax, dword [esp + 0x84]
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x14]
sub ecx, eax
mov eax, dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0xc]
cmp eax, 0xffff
mov eax, dword [esp + 0x58]
push 1
sbb ecx, ecx
xor ebx, ebx
neg ecx
cmp ecx, dword [eax + edx*4]
mov eax, dword [esp + 0x44]
setl bl
xor edx, edx
cmp ebx, eax
mov eax, dword [esp + 0x84]
sete dl
xor ecx, ecx
cmp eax, edx
setle cl
mov dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x5c]
mov eax, dword [ecx + eax*4]
mov dword [ecx + edx*4], eax
inc dword [esp + 0x10]
xor ebx, ebx
pop ecx
cmp dword [esp + 0xc], ebx
jle 0x1000bb92
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x58]
cmp dword [eax + ecx*4], ebx
je 0x1000bd15
push 0x549c
push 0x5092
push ebx
push 0x7a0a
push 0x5ff6
push 0x548f
push ecx
push ecx
lea eax, [esp + 0x4a]
mov byte [esp + 0x4a], bl
push eax
push 0x53b3
mov edx, 0x45b3
call fcn.1000b453
add esp, 0x28
jmp 0x1000bd34
mov dword [esp + 0x1c], ebx
jmp 0x1000bd2e
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x90], eax
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ebx
jle 0x1000bd1b
inc dword [esp + 0x14]
cmp dword [esp + 0x14], ebx
jle 0x1000ba9b
or dword [esp + 0xec], 0xffffffff
lea ecx, [esp + 0x58]
call fcn.10006b13
push ecx
push 0x700a
push ecx
push ecx
mov edx, 0x271c
xor cl, cl
call fcn.1000a5e9
add esp, 0x10
cmp byte [0x102c40f8], 0
jne 0x1000bf9f
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 0x24], ebx
mov dword [esp + 0x34], 0xd2eb2fc2
mov dword [esp + 0x9c], 0xfffffffd
mov dword [esp + 0x44], 0x5008d6d
mov dword [esp + 0x30], 0x8ce324e8
mov dword [esp + 0x48], 0xfffffffc
cmp dword [esp + 0xc], ebx
jne 0x1000be23
mov eax, dword [esp + 0xc]
xor edx, edx
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
cmp ecx, eax
mov eax, dword [esp + 0x24]
setle dl
add eax, edx
jne 0x1000bdd7
mov edx, ebx
jmp 0x1000bdda
xor edx, edx
inc edx
mov eax, dword [esp + 0x24]
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0xc]
sete cl
xor edx, edx
cmp ecx, eax
setg dl
imul edx, dword [esp + 0xc]
neg edx
sbb edx, edx
neg edx
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0xc]
neg eax
sbb eax, eax
inc eax
cmp eax, dword [esp + 0x24]
jne 0x1000be16
mov eax, dword [esp + 0xc]
cmp dword [esp + 0xc], ebx
jne 0x1000be23
xor ecx, ecx
mov edx, ebx
inc ecx
jmp 0x1000be28
xor ecx, ecx
inc ecx
mov edx, ecx
mov eax, dword [esp + 0x24]
add eax, edx
je 0x1000be7c
lea eax, [esp + 0x34]
mov dword [esp + 0x70], ecx
push eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x8c], 0xcbaa6f4e
push eax
push ecx
lea eax, [esp + 0x7c]
push eax
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x38]
push eax
push ecx
push ecx
lea eax, [esp + 0x50]
push 0x72e6
push eax
lea edx, [esp + 0xc4]
call fcn.1000b453
add esp, 0x28
jmp 0x1000bf60
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], ebx
jmp 0x1000be9d
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xa4], 0x9ac04bb9
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 3
jl 0x1000be8a
mov dword [esp + 0xc], ebx
jmp 0x1000beb6
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x3c], ebx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], ecx
jl 0x1000beaa
mov dword [esp + 0x10], 0x87d7a760
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x18], ebx
jne 0x1000bee2
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
xor edx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x34]
mov dword [esp + 0xac], edi
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x10]
cmp eax, ecx
mov eax, dword [esp + 0x30]
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x3c]
sete cl
xor edx, edx
cmp ecx, eax
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
setne dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x30]
setle cl
imul esi, ecx
xor ecx, ecx
cmp eax, edi
mov eax, dword [esp + 0x30]
setl cl
xor edx, edx
cmp ecx, esi
setle dl
xor ecx, ecx
cmp edx, eax
setge cl
xor eax, eax
cmp ecx, 0x1ee328db
setg al
mov dword [esp + 0x44], eax
push ebx
push 0x4cfc
push 0x4433
push 0x609b
push 1
push 0x55e6
push 0x2dd6
push 0x102c4160
xor dl, dl
mov ecx, 0x330a
call fcn.1000c806
add esp, 0x20
push ebx
push 0x102c40f8
push ecx
call fcn.1000a6ed
add esp, 0xc
push 0x7280
lea eax, [esp + 0x7c]
mov dword [esp + 0x78], 0xffffffff
push eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x70], 0x891f782a
push eax
lea eax, [esp + 0x70]
mov dword [esp + 0xa4], 0x6968939f
push eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x88], ebx
push eax
push ecx
lea eax, [esp + 0x80]
mov dword [esp + 0xb8], 0xfffffff6
push eax
lea eax, [esp + 0x88]
mov dword [esp + 0x88], 6
push eax
mov dword [esp + 0x6c], 0xe5809974
lea eax, [esp + 0x6c]
mov dword [esp + 0x84], 0x39384257
lea edx, [esp + 0x94]
push eax
mov ecx, 0x1032
mov dword [esp + 0xa0], 0xe2e4ed
call fcn.1000cd4a
add esp, 0x24
lea eax, [esp + 0x4c]
mov dl, 1
mov ecx, 0x7b22
push ebx
push 0x1f03
push eax
push 0x15f9
push 1
push 0x4fd4
lea eax, [esp + 0x94]
push eax
push 0x13f2
call fcn.1000c806
mov eax, dword [0x102c4160]
add esp, 0x20
cmp eax, 0x270
jne 0x1000c0bd
mov edx, 0x102c4168
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, 0x102c4b28
jl 0x1000c082
jmp 0x1000c0c9
cmp eax, 0x4e0
jb 0x1000c0ce
call fcn.1000d344
mov eax, dword [0x102c4160]
mov edx, dword [eax*4 + 0x102c4164]
inc eax
mov dword [0x102c4160], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x102c54e4]
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 + 0xc]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret