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

Disassembly:
mov eax, 0x1005f48d
call fcn.1005d8a0
sub esp, 0xfc
cmp byte [ebp + 8], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
je 0x1003f4c7
mov dword [ebp - 0x24], 2
lea ecx, [ebp - 0x94]
mov dword [ebp - 0x20], 0xfffffff7
push 3
call fcn.10001fe6
push 2
pop esi
xor ebx, ebx
lea ecx, [ebp - 0x6c]
mov dword [ebp - 4], ebx
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x1c], 0x2845
push 4
call fcn.10001fe6
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x88]
mov dword [ebp - 0x14], ebx
push esi
call fcn.10001fe6
mov byte [ebp - 4], 2
lea eax, [ebp - 0x94]
push eax
xor edi, edi
lea eax, [ebp - 0x30]
inc edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x2c], 0xffffffff
push ecx
mov dword [ebp - 0x18], 0xfffffff8
push ecx
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x40], 0xef404622
mov dword [ebp - 0x34], 6
push eax
call fcn.100404c2
add esp, 0x10
mov dword [ebp - 0x30], ebx
push 4
pop edx
jmp 0x1003eb52
mov eax, dword [ebp - 0x30]
mov dword [ebp + eax*4 - 0xa4], 0xfffffffd
inc dword [ebp - 0x30]
cmp dword [ebp - 0x30], edx
jl 0x1003eb41
mov dword [ebp - 0x30], ebx
jmp 0x1003eb6c
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x6c]
mov dword [eax + ecx*4], 0x1305
inc dword [ebp - 0x30]
cmp dword [ebp - 0x30], edx
jl 0x1003eb5c
push ebx
lea eax, [ebp - 0x30]
push eax
push ecx
lea edx, [ebp - 0x88]
mov ecx, 0x1b7d
call fcn.1003f5f9
mov eax, dword [ebp - 0x20]
add esp, 0xc
dec eax
mov ecx, 0xffff
neg eax
sbb eax, eax
xor edx, edx
neg eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax]
imul eax, esi, 0x121a5e51
sub ecx, eax
cmp ecx, 0xffffffff
setge dl
xor eax, eax
sub edx, 0xd4f9
cmp esi, edx
setne al
cmp eax, 0xffff
sbb eax, eax
or edx, 0xffffffff
inc eax
xor ecx, ecx
sub edx, eax
mov eax, dword [ebp - 0x88]
mov dword [eax], edx
mov eax, dword [ebp - 0x1c]
cmp edx, eax
setge cl
lea eax, [ecx + 0x5c24]
xor ecx, ecx
mov dword [ebp - 0x38], eax
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0xa4]
cmp edx, eax
mov esi, dword [ebp - 0x94]
setne cl
mov dword [esi + 4], edx
mov dword [ebp - 0x28], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x98]
dec dword [ebp - 0x14]
mov eax, dword [ebp - 0x6c]
cmp dword [eax], 0xffff5ec5
mov eax, dword [ebp - 0x14]
setg cl
add eax, ecx
xor ecx, ecx
cmp eax, 0xffffffff
setg cl
add ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x38]
mov eax, dword [ebp - 0x98]
mov eax, dword [ebp - 0x40]
cmp eax, 0x8d16
mov eax, dword [ebp - 0x6c]
setne cl
cmp ecx, dword [eax]
jle 0x1003ecc4
mov dword [ebp - 0x14], 6
jmp 0x1003ecbc
mov dword [ebp - 0x1c], ebx
jmp 0x1003ecb4
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x18], 3
cmp dword [ebp - 0x18], ebx
jl 0x1003ecb1
mov dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x1c]
lea eax, [ebp - 0x74]
mov dword [ebp - 0x40], 0xfffffffd
push eax
push ecx
call fcn.1004006f
dec dword [ebp - 0x18]
pop ecx
pop ecx
jns 0x1003ec8a
xor edi, edi
xor ebx, ebx
inc edi
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edi
jle 0x1003ec7b
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x2e
jne 0x1003ec76
jmp 0x1003ed2e
xor edx, edx
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], ebx
jmp 0x1003ece0
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xd8], 0xffffffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x1003eccf
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
test eax, eax
mov eax, dword [ebp - 0x94]
setle cl
add ecx, dword [eax + 8]
jne 0x1003ed05
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x34], ebx
jne 0x1003ed05
mov edx, ebx
mov eax, dword [ebp - 0x20]
xor ecx, ecx
cmp edx, eax
sete cl
sub ecx, dword [ebp - 0x24]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0xd4], ecx
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x88]
mov eax, dword [eax]
mov dword [esi + 4], eax
lea ecx, [ebp - 0x88]
call fcn.10002048
lea ecx, [ebp - 0x6c]
call fcn.10002048
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x94]
call fcn.10002048
mov ecx, dword [0x1044a7b8]
xor eax, eax
inc eax
test al, cl
jne 0x1003eda2
or ecx, eax
mov edx, eax
or dword [0x1044bb44], 0xffffffff
mov dword [0x1044a7b8], ecx
mov ecx, 0x1571
mov dword [0x1044a7c4], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1044a7c4], ecx
inc edx
cmp edx, 0x270
jl 0x1003ed79
mov dword [0x1044a7c0], 0x270
push 2
lea ecx, [ebp - 0xc8]
call fcn.10001fe6
lea eax, [ebp - 0xc8]
mov dword [ebp - 4], 3
push eax
mov dword [ebp - 0x20], 0x8d4081c2
lea edx, [ebp - 0xd0]
push 0x75f2
call fcn.1003f6ce
mov dword [ebp - 0x20], 1
pop ecx
pop ecx
cmp dword [ebp - 0x20], ebx
jl 0x1003edfb
push 0x4abc
push ebx
mov edx, 0x45c
mov cl, 1
call fcn.1003ea8d
dec dword [ebp - 0x20]
pop ecx
pop ecx
jns 0x1003ede2
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xc8]
call fcn.10002048
mov dword [ebp - 0x2c], 0x721c
mov esi, 0x100788d8
cmp dword [ebp - 0x2c], 0x741c
jle 0x1003ee60
mov edi, ebx
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x24], 0x4604
mov dword [ebp - 0x34], ebx
mov eax, edi
mov ecx, esi
xor eax, ebx
cdq
push edx
push eax
call fcn.10001e5c
inc ebx
cmp ebx, 0x3f24
jl 0x1003ee31
dec edi
dec dword [ebp - 0x24]
push 0
pop ebx
jne 0x1003ee2e
mov edi, dword [ebp - 0x28]
inc edi
mov dword [ebp - 0x28], edi
cmp edi, 0x10fe
jl 0x1003ee24
mov dword [ebp - 4], 4
cmp dword [ebp - 0x2c], 0x7131
jge 0x1003ee7c
mov edx, str.ghieaq_qzcrv_fela_bled_hha_nofncqhr_kuv
mov ecx, esi
call fcn.10003d65
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x14], ebx
xor edi, edi
mov dword [ebp - 0x50], 0x6d8bc0d
inc edi
mov dword [ebp - 0x7c], 0xffff
mov dword [ebp - 0x20], 0xeef
cmp dword [ebp - 0x20], 0x122d
jle 0x1003ef2f
mov esi, ebx
mov dword [ebp - 0x38], esi
mov eax, ebx
mov dword [ebp - 0x2c], ebx
mov ecx, eax
mov dword [ebp - 0x34], ebx
xor ecx, esi
mov esi, ebx
mov dword [ebp - 0x28], ecx
mov eax, ebx
mov dword [ebp - 0x24], ebx
and eax, esi
or eax, ecx
lea ecx, [ebp - 0x108]
cdq
push edx
push eax
call fcn.10001a75
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1003eedf
mov eax, dword [eax]
push eax
call fcn.10047084
pop ecx
push ebx
push edi
lea ecx, [ebp - 0x108]
call fcn.10002352
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x3a84
jl 0x1003eec3
inc esi
cmp esi, 0x48da
jl 0x1003eebe
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, 0x61b4
jl 0x1003eeb2
inc esi
mov dword [ebp - 0x38], esi
cmp esi, 0x7f14
jl 0x1003eead
mov esi, 0x100788d8
cmp dword [ebp - 0x14], ebx
jne 0x1003ef4e
mov eax, dword [ebp - 0x14]
dec eax
neg eax
sbb eax, eax
inc eax
imul eax, eax, 0x5c9e
test eax, eax
jne 0x1003ef4e
mov eax, ebx
cmp dword [ebp - 0x14], ebx
je 0x1003ef50
mov eax, edi
mov ecx, dword [ebp - 0x14]
xor edx, edx
imul ecx, eax
mov eax, dword [ebp - 0x14]
cmp ecx, eax
setne dl
sub edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x50]
add eax, edx
cmp eax, dword [ebp - 0x14]
je 0x1003f0a1
push 2
lea ecx, [ebp - 0xb0]
call fcn.10001fe6
push 0x79fc
push 0x1923
lea eax, [ebp - 0x78]
mov dword [ebp - 4], 6
push eax
push 0x7188
mov dword [ebp - 0x60], 0xb6bd0d42
lea edx, [ebp - 0xb0]
push 0x3c62
call fcn.100409c3
mov dword [ebp - 0x2c], 0x5bf9
add esp, 0x14
cmp dword [ebp - 0x2c], 0x5c18
jle 0x1003f00c
mov ecx, ebx
mov dword [ebp - 0x28], ebx
mov eax, ebx
mov dword [ebp - 0x24], ebx
xor eax, ecx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x40], eax
or eax, ebx
mov ecx, esi
cdq
push edx
push eax
call fcn.10001e5c
mov eax, dword [ebp - 0x40]
inc ebx
cmp ebx, 0x12be
jl 0x1003efd4
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x24], eax
push 0
pop ebx
cmp eax, 0x7ccf
jl 0x1003efcc
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 0x536d
jl 0x1003efc7
mov byte [ebp - 4], 7
cmp dword [ebp - 0x2c], 0x5b47
jge 0x1003f075
mov edx, str.smcrev_sdaosewl_ccy_xht_ljus_hudapffgr_oxtplgkq_grxhf_pmkphhqn
mov ecx, esi
call fcn.10003d65
jmp 0x1003f075
lea eax, [ebp - 0x60]
mov dword [ebp - 4], 6
push eax
push ecx
lea eax, [ebp - 0x50]
push eax
push ecx
lea ecx, [ebp - 0xb0]
call fcn.1003f728
add esp, 0x10
lea ecx, [ebp - 0xb0]
call fcn.10002048
jmp 0x1003f0e4
xor eax, eax
mov dword [ebp - 0x34], 0x7440
inc eax
mov byte [ebp - 0x3a], bl
push eax
push ebx
lea ecx, [ebp - 0x3a]
mov edx, 0x806
push ecx
push 0x71b1
push 0x29da
push 0x6379
push eax
push 0x967
mov ecx, 0x37b1
call fcn.1004031b
mov eax, dword [ebp - 0x50]
xor edi, edi
add esp, 0x20
mov dword [ebp - 0x34], eax
inc edi
cmp dword [ebp - 0x20], 0xcde
jge 0x1003f0f8
push str.sgynbml_kttmp_fwfpiwzlv_sttua_yruwemnl_ryneoaky
call fcn.10047084
pop ecx
or dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0x7c]
push ecx
push eax
push ecx
xor dl, dl
call fcn.1003ea61
add esp, 0xc
cmp byte [0x1044a5fd], 0
jne 0x1003f323
push dword [ebp - 0x78]
movdqa xmm0, xmmword [0x1006c4b0]
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0xe8]
mov dword [ebp - 0x4c], 0x5252cb13
push eax
push ebx
lea ecx, [ebp - 0x5c]
mov dword [ebp - 0x5c], ebx
movdqu xmmword [ebp - 0xe8], xmm0
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
call fcn.100046f5
push 3
lea ecx, [ebp - 0xbc]
mov dword [ebp - 4], 0xb
call fcn.10001fe6
lea eax, [ebp - 0xcc]
mov byte [ebp - 4], 0xc
push eax
lea edx, [ebp - 0xbc]
xor cl, cl
call fcn.1003f663
mov dword [ebp - 0x38], 0x349e
cmp dword [ebp - 0x38], 0x374e
pop ecx
jle 0x1003f1c8
mov dword [ebp - 0x2c], ebx
mov eax, ebx
mov dword [ebp - 0x28], 0x1ebd
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x24], eax
cdq
mov ecx, esi
push edx
push eax
call fcn.10001e5c
mov eax, dword [ebp - 0x24]
add eax, ebx
dec dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
jne 0x1003f1a2
inc ebx
push 0
mov dword [ebp - 0x2c], ebx
cmp ebx, 0x19f4
pop ebx
jl 0x1003f193
mov byte [ebp - 4], 0xd
cmp dword [ebp - 0x38], 0x342e
jge 0x1003f202
mov edx, str.akw_fcnsondy_syxxcpovb
mov ecx, esi
call fcn.10003d65
jmp 0x1003f202
mov dword [ebp - 4], 0xc
xor ecx, ecx
mov esi, dword [ebp - 0x5c]
cmp dword [esi + 4], 7
mov eax, dword [esi]
sete cl
inc eax
add eax, ecx
imul eax, dword [esi + 4]
cmp eax, edi
mov eax, dword [ebp - 0x4c]
sbb edx, edx
xor ecx, ecx
inc edx
cmp eax, 0x76ec
mov eax, dword [ebp - 0xbc]
setge cl
imul ecx, edx
xor edx, edx
cmp ecx, dword [esi + 4]
setl dl
xor ecx, ecx
mov dword [eax + 8], edx
mov eax, dword [ebp - 0x5c]
cmp edx, dword [eax]
mov eax, dword [ebp - 0x4c]
setg cl
add ecx, 5
imul eax, ecx
cmp edi, eax
mov eax, dword [ebp - 0x5c]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, dword [eax + 0xc]
setle dl
cmp dword [ebp - 0x4c], edx
je 0x1003f285
push edi
push 0xf0e
push ecx
mov edx, 0x19ab
lea ecx, [ebp - 0x4c]
call fcn.1003f5f9
add esp, 0xc
jmp 0x1003f299
push ebx
push ecx
lea edx, [ebp - 0x3b]
mov byte [ebp - 0x3b], bl
mov ecx, 0x7859
call fcn.1003fd3a
pop ecx
pop ecx
lea ecx, [ebp - 0xbc]
call fcn.10002048
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x5c]
call fcn.10002048
push ecx
mov edx, 0x3f8
mov ecx, 0x1044a7c0
call fcn.1003f797
pop ecx
mov dword [ebp - 0x18], ebx
jmp 0x1003f2d7
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0xf0], 0x124f01c0
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x1003f2c6
push 0x2975
push 0xd8e
push 0x5362
push 0x243f
mov edx, 0x22f9
call fcn.1003f529
add esp, 0xc
mov dl, 1
push 0x436
push ecx
call fcn.1003ea61
push 0x5cdb
push ebx
push 0x716b
mov edx, 0x1044a5fd
call fcn.1004048d
add esp, 0x18
mov dword [ebp - 0x1c], 0x60477862
mov dword [ebp - 0x20], 0x9e96bb64
mov dword [ebp - 0x18], ebx
jmp 0x1003f344
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x48], 0xfffffffa
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x1003f336
mov dword [ebp - 0x1c], ebx
jmp 0x1003f3b5
mov dword [ebp - 0x14], 4
mov dword [ebp - 0x14], 1
cmp dword [ebp - 0x14], ebx
jl 0x1003f3b2
mov dword [ebp - 0x70], 0xfffffffe
mov edx, 0x3524
mov eax, dword [ebp - 0x14]
push 1
mov eax, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x44]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + eax*4 - 0x48]
mov eax, dword [ebp - 0x14]
push ecx
mov dword [ebp + eax*4 - 0x48], ecx
lea ecx, [ebp - 0x70]
call fcn.1003fd3a
dec dword [ebp - 0x14]
pop ecx
pop ecx
jns 0x1003f362
xor ebx, ebx
dec dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0xfffffffb
jg 0x1003f34f
mov eax, dword [ebp - 0x44]
xor edx, edx
mov eax, dword [ebp - 0x48]
mov eax, dword [ebp - 0x1c]
push 8
pop ecx
sub ecx, eax
cmp ecx, 1
setle dl
xor ecx, ecx
add edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp edx, eax
mov eax, dword [ebp - 0x48]
setg cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x20]
setne dl
xor ecx, ecx
cmp edx, eax
setge cl
sub ecx, dword [ebp - 0x1c]
cmp ecx, 4
ja 0x1003f3fd
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ebx
je 0x1003f411
cmp dword [ebp - 0x20], ebx
je 0x1003f411
xor edx, edx
inc edx
mov ecx, edx
jmp 0x1003f416
xor edx, edx
mov ecx, ebx
inc edx
mov eax, dword [ebp - 0x20]
imul eax, ecx
test eax, eax
je 0x1003f427
cmp dword [ebp - 0x20], ebx
je 0x1003f427
mov ebx, edx
sub dword [ebp - 0x1c], ebx
mov eax, dword [0x1044a7c0]
cmp eax, 0x270
jne 0x1003f476
mov esi, 0x1044a7c8
mov ecx, dword [esi - 4]
xor ecx, dword [esi]
and ecx, 0x7fffffff
xor ecx, dword [esi - 4]
mov eax, ecx
and al, dl
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [esi + 0x630]
xor eax, ecx
mov dword [esi + 0x9bc], eax
add esi, 4
cmp esi, 0x1044b188
jl 0x1003f43b
jmp 0x1003f482
cmp eax, 0x4e0
jb 0x1003f487
call fcn.10040bc8
mov eax, dword [0x1044a7c0]
mov edx, dword [eax*4 + 0x1044a7c4]
inc eax
mov dword [0x1044a7c0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x1044bb44]
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
jmp 0x1003f4fa
xor ebx, ebx
lea eax, [ebp - 0x39]
push ebx
push ebx
push 0x4bdd
push 0xa82
push 0x5f10
push eax
push 1
push 0x494a
mov edx, 0x1c2a
mov byte [ebp - 0x39], bl
mov ecx, 0x62f6
call fcn.1004031b
add esp, 0x20
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret