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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10062dec
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x110
push ebx
mov byte [esp + 0x2c], dl
mov ebx, ecx
mov dword [esp + 0x18], 0x44db
cmp dword [esp + 0x18], 0x480b
push esi
push edi
mov dword [esp + 0x24], ebx
jle 0x10001bb5
xor esi, esi
xor edi, edi
xor ebx, ebx
mov eax, edi
cdq
idiv ebx
mov eax, esi
mov ecx, edx
sar eax, cl
lea ecx, [esp + 0xe8]
cdq
push edx
push eax
call fcn.10001a8a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10001b75
mov eax, dword [eax]
push eax
call fcn.1004b583
pop ecx
push 0
push 1
lea ecx, [esp + 0xf0]
call fcn.10004d7a
inc ebx
cmp ebx, 0x20c4
jl 0x10001b51
inc edi
cmp edi, 0x4273
jl 0x10001b4f
inc esi
cmp esi, 0x4800
jl 0x10001b4d
push 0
push 0
call dword [sym.imp.GDI32.dll_GetNearestPaletteIndex]
mov ebx, dword [esp + 0x24]
cmp dword [esp + 0x20], 0x4284
jge 0x10001bca
push str.mtebedssg_suqc_tvn_msa_gqpnjfwk_vktdl_cgf_kbuvtpkp_ytfapdjkp_crvrsrrdw_duxc
call fcn.1004b583
pop ecx
or edi, 0xffffffff
mov dword [esp + 0x124], edi
cmp byte [esp + 0x34], 0
je 0x10001bfd
mov edx, dword [ebp + 8]
mov dword [edx], 0
jmp 0x10001bf3
mov ecx, dword [edx]
mov eax, dword [ebx]
mov dword [eax + ecx*4], 0x212908cd
inc dword [edx]
cmp dword [edx], 1
jl 0x10001be6
jmp 0x1000259b
mov dword [esp + 0x14], 0x7d8e6e83
xor edx, edx
mov dword [esp + 0x1c], 0xc2251554
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp ecx, eax
setg dl
xor ebx, ebx
cmp edx, 0x2071
jge 0x10001e3a
mov dword [esp + 0x10], ebx
jmp 0x10001c40
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x44], 0x5059b8bc
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 1
jl 0x10001c30
push 1
push 0x7c5b
push 0x76ce
push 0x71d7
xor dl, dl
xor cl, cl
call fcn.10003c3e
mov dword [esp + 0x38], 0x6468
add esp, 0x10
cmp dword [esp + 0x28], 0x67de
jle 0x10001cd1
mov esi, ebx
mov edi, ebx
mov eax, ebx
lea ecx, [esp + 0xa0]
or eax, edi
or eax, esi
cdq
push edx
push eax
call fcn.10001a8a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10001c99
mov eax, dword [eax]
push eax
call fcn.1004b583
pop ecx
push 0
push 1
lea ecx, [esp + 0xa8]
call fcn.10004d7a
inc ebx
cmp ebx, 0x11c6
jl 0x10001c7a
inc edi
push 0
pop ebx
cmp edi, 0x4253
jl 0x10001c7a
inc esi
cmp esi, 0x61a3
jl 0x10001c78
or edi, 0xffffffff
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], ebx
jl 0x10001db9
mov dword [esp + 0x24], 0x923ccde6
mov dword [esp + 0x20], 0x431b
cmp dword [esp + 0x20], 0x46ac
jle 0x10001d53
push ebx
push 0x1b3c
push ebx
push 0x201c
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov esi, ebx
mov edi, esi
mov ebx, 0x47d7
mov eax, edi
lea ecx, [esp + 0xb8]
cdq
push edx
push eax
call fcn.10001a8a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10001d2f
mov eax, dword [eax]
push eax
call fcn.1004b583
pop ecx
push 0
push 1
lea ecx, [esp + 0xc0]
call fcn.10004d7a
dec edi
dec ebx
jne 0x10001d14
inc esi
cmp esi, 0x34f0
jl 0x10001d0d
cmp dword [esp + 0x20], 0x423d
jge 0x10001d68
push str.qdergtdom_wulto_nvs_tyr_wjmt
call fcn.1004b583
pop ecx
or edi, 0xffffffff
xor ecx, ecx
mov dword [esp + 0x124], edi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + eax*4 + 0x44]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + eax*4 + 0x44]
cmp edx, eax
mov eax, dword [esp + 0x14]
setg cl
add ecx, 0xfffe
mov dword [esp + eax*4 + 0x44], ecx
lea eax, [ecx + 0x52bf3388]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
cmp dword [esp + 0x1c], ebx
jne 0x10001db9
dec dword [esp + 0x14]
jns 0x10001cdf
cmp dword [esp + 0x28], 0x60d0
jge 0x10001dce
push str.kutkl_wgu_nbododify_nhnjppqta_grpy_kbnndprew_vbramh
call fcn.1004b583
pop ecx
mov dword [esp + 0x124], edi
mov eax, dword [0x10115e3c]
mov esi, 0x270
test al, 1
jne 0x10001e20
or eax, 1
mov dword [0x10115e34], edi
mov ecx, 0x1571
mov dword [0x10115e3c], eax
xor edx, edx
mov dword [0x10114ab4], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10114ab4], ecx
inc edx
cmp edx, esi
jl 0x10001dff
mov dword [0x10114ab0], esi
mov dword [esp + 0x10], 0xe1757117
mov dword [esp + 0x5c], 0xf1dbeccc
mov dword [esp + 0x10], 0x10
jmp 0x10001e7c
mov dword [esp + 0x1c], 0xffffffee
cmp dword [esp + 0x1c], 0x10
jg 0x10001dd5
lea eax, [esp + 0x3b]
mov byte [esp + 0x3b], bl
push eax
push ecx
call fcn.10003a45
inc dword [esp + 0x24]
pop ecx
pop ecx
jmp 0x10001e42
xor dl, dl
lea ecx, [esp + 0x5c]
call fcn.10003467
mov byte [esp + 0x32], bl
lea edx, [esp + 0x32]
call fcn.10003275
dec dword [esp + 0x10]
cmp dword [esp + 0x10], 0xffffffea
jl 0x10001e60
mov dword [esp + 0x1c], 0x730f94f3
mov dword [esp + 0x28], 0x8382bdb9
mov dword [esp + 0x18], 0x34859bb
mov dword [esp + 0x40], 2
mov dword [esp + 0x60], edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x10], ebx
jmp 0x10001ec1
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x64], 0x4ec2e0cf
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x10001eb1
push 3
pop esi
mov dword [esp + 0x1c], esi
cmp dword [esp + 0x1c], ebx
jl 0x10001fe2
mov dword [esp + 0x24], 0xe3580d4
mov dword [esp + 0x14], 0xfffffffa
mov dword [esp + 0x14], ebx
jmp 0x10001f02
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x94], 0xd8b9dbea
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x10001eef
mov dword [esp + 0x14], ebx
jmp 0x10001f21
mov eax, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x80], 5
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jl 0x10001f0e
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + eax*4 + 0x64]
mov eax, dword [esp + 0x80]
imul ecx, eax
mov eax, dword [esp + 0x28]
dec dword [esp + 0x28]
cmp eax, ecx
jl 0x10001f4a
xor edx, edx
inc edx
jmp 0x10001f4c
mov edx, ebx
mov dword [esp + 0x18], 0xcc099a56
cmp dword [esp + 0x18], ebx
je 0x10001f5f
xor ecx, ecx
inc ecx
jmp 0x10001f61
mov ecx, ebx
xor eax, eax
cmp edx, ecx
setl al
mov dword [esp + 0x64], eax
mov dword [esp + 0x18], 0xfffffff0
jmp 0x10001fd1
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x14], esi
jg 0x10001fcd
mov eax, dword [esp + 0x1c]
xor ebx, ebx
mov ecx, 0x585c
mov eax, dword [esp + eax*4 + 0x64]
test eax, eax
mov dword [esp + 0x9c], ecx
mov eax, dword [esp + 0x80]
setne bl
xor edx, edx
cmp eax, ecx
mov eax, dword [esp + 0x80]
setge dl
xor ecx, ecx
cmp eax, edx
mov eax, dword [esp + 0x14]
setl cl
add ecx, ebx
mov dword [esp + eax*4 + 0x64], ecx
inc dword [esp + 0x14]
cmp dword [esp + 0x14], esi
jle 0x10001f80
xor ebx, ebx
inc dword [esp + 0x18]
cmp dword [esp + 0x18], 9
jne 0x10001f76
dec dword [esp + 0x1c]
jns 0x10001ed9
mov dword [esp + 0x18], ebx
jmp 0x100020e0
mov dword [esp + 0x24], 0x265a
cmp dword [esp + 0x24], 0x2690
jle 0x10002086
mov edi, ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], 0x4043
mov esi, dword [esp + 0x20]
mov eax, esi
lea ecx, [esp + 0xd0]
cdq
idiv ebx
or edx, edi
mov eax, edx
cdq
push edx
push eax
call fcn.10001a8a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10002039
mov eax, dword [eax]
push eax
call fcn.1004b583
pop ecx
push 0
push 1
lea ecx, [esp + 0xd8]
call fcn.10004d7a
inc ebx
cmp ebx, 0x4db8
jl 0x10002017
mov esi, dword [esp + 0x14]
add dword [esp + 0x20], esi
dec dword [esp + 0x10]
push 0
pop ebx
jne 0x10002013
inc esi
mov dword [esp + 0x14], esi
cmp esi, 0x3702
jl 0x10002007
inc edi
cmp edi, 0x3a27
jl 0x10002003
push 3
pop esi
or edi, 0xffffffff
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x64]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
sub ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + eax*4 + 0x64], ecx
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x64]
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x60]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x24], 0x2276
jge 0x100020d5
push str.mjcd_htthqku_wkrhk_njrdjgfxe_xiozbqss_zvf_peelchsl
call fcn.1004b583
pop ecx
mov dword [esp + 0x124], edi
inc dword [esp + 0x18]
cmp dword [esp + 0x18], esi
jle 0x10001feb
cmp byte [0x100803ec], 0
jne 0x1000213b
mov edx, 0x75c0
call fcn.10003c24
push 0x31
push 0x980
push 0x6dd5
xor edi, edi
xor dl, dl
inc edi
mov ecx, 0x6dbd
push edi
push ebx
push 0x10114ab0
push 0x57bc
call fcn.10003ea2
add esp, 0x1c
mov edx, 0x4320
xor cl, cl
push 0x100803ec
call fcn.1000321a
pop ecx
jmp 0x1000213e
xor edi, edi
inc edi
mov dword [esp + 0x18], 0xc04ccb63
lea ecx, [esp + 0x50]
mov dword [esp + 0x10], 0x7278fa8f
or eax, 0xffffffff
mov dword [esp + 0x1c], 6
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], 0x3090707e
push 2
call fcn.100049ee
mov dword [esp + 0x124], 8
mov dword [esp + 0x24], 0x125b
mov dword [esp + 0x2c], ebx
jmp 0x10002199
mov eax, dword [esp + 0x2c]
mov dword [esp + eax*4 + 0x3c], 6
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], edi
jl 0x10002189
mov dword [esp + 0x2c], ebx
jmp 0x100021b8
mov eax, dword [esp + 0x2c]
mov dword [esp + eax*4 + 0x8c], 0xded1
inc dword [esp + 0x2c]
cmp dword [esp + 0x2c], 2
jl 0x100021a5
lea eax, [esp + 0x50]
mov edx, 0x33ac
push eax
lea eax, [esp + 0x30]
xor cl, cl
push eax
call fcn.10003138
pop ecx
pop ecx
cmp dword [esp + 0x18], ebx
jne 0x10002207
mov eax, dword [esp + 0x18]
xor edx, edx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp ecx, eax
setl dl
mov dword [esp + 0x10], edx
xor edx, edx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
cmp eax, ecx
setne dl
mov dword [esp + 0x14], edx
cmp dword [esp + 0x1c], ebx
jne 0x10002213
cmp dword [esp + 0x14], ebx
je 0x10002217
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x18]
jle 0x100022d9
mov byte [esp + 0x33], bl
cmp byte [esp + 0x33], 0
je 0x100024f7
call fcn.10001afc
mov dword [esp + 0x40], 0x4135
cmp dword [esp + 0x40], 0x449b
jle 0x100022bb
mov esi, ebx
mov edi, ebx
xor ecx, ecx
mov dword [esp + 0x24], ecx
lea eax, [ebx + edi]
and eax, ecx
lea ecx, [esp + 0x100]
and eax, esi
cdq
push edx
push eax
call fcn.10001a8a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10002275
mov eax, dword [eax]
push eax
call fcn.1004b583
pop ecx
push 0
push 1
lea ecx, [esp + 0x108]
call fcn.10004d7a
mov ecx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x24], ecx
cmp ecx, 0x23f5
jl 0x10002255
inc ebx
cmp ebx, 0x1743
jl 0x1000224f
inc edi
push 0
pop ebx
cmp edi, 0x6b0
jl 0x1000224f
inc esi
cmp esi, 0x2459
jl 0x1000224d
cmp dword [esp + 0x40], 0x3ea3
jge 0x100024f7
push str.erzhw_gxo_zuhksg_vqvbat_qhu_tdlhv_dwsw_vtvskhwod_glpujv_otgih_ehoxaxwk_csrd_lvogj_kfsdhg
call fcn.1004b583
pop ecx
jmp 0x100024f7
push 0x4e47
lea eax, [esp + 0x35]
mov dword [esp + 0x1c], edi
push eax
push 0x46c0
push edi
push edi
push 0x3a13
mov dword [esp + 0x38], edi
xor dl, dl
mov byte [esp + 0x49], bl
mov ecx, 0x5213
push 0x2be6
call fcn.10003ea2
mov dword [esp + 0x30], ebx
add esp, 0x1c
cmp dword [esp + 0x14], ebx
jl 0x100024f7
mov dword [esp + 0x10], 0x44f34d89
lea ecx, [esp + 0x74]
push esi
call fcn.100049ee
mov dword [esp + 0x10], ebx
jmp 0x10002344
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x74]
mov dword [eax + ecx*4], edi
inc dword [esp + 0x10]
cmp dword [esp + 0x10], esi
jl 0x10002335
mov eax, ebx
cmp dword [esp + 0x18], ebx
je 0x10002354
mov eax, edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x8c]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
neg edx
push 0xfffffffffffffffe
sbb edx, edx
xor ecx, ecx
neg edx
cmp eax, 0xfffa
setl cl
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + eax*4 + 0x40]
sub ecx, edx
add ecx, dword [esp + 0x1c]
add ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x54]
neg ecx
sbb ecx, ecx
inc ecx
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x54]
pop ecx
mov dword [eax + 4], ecx
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x10], ebx
jne 0x10002430
mov eax, dword [esp + 0x18]
xor edx, edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x3c]
cmp eax, ecx
mov eax, dword [esp + 0x10]
setge dl
xor ecx, ecx
cmp edx, eax
setg cl
xor edx, edx
add ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
imul ecx, eax
mov eax, dword [esp + 0x74]
mov dword [eax + 8], ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x14]
setg dl
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0x3c]
cmp edx, eax
mov eax, dword [esp + 0x14]
setge cl
xor edx, edx
cmp ecx, 0xfffffff9
setne dl
imul edx, dword [esp + eax*4 + 0x3c]
test edx, edx
je 0x1000242c
mov eax, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
or ecx, 0xffffffff
mov edx, dword [esp + eax*4 + 0x3c]
mov eax, dword [esp + 0x18]
cmp ecx, eax
sbb eax, eax
xor ecx, ecx
inc eax
cmp eax, edx
setne cl
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], ebx
cmp dword [esp + 0x1c], ebx
jg 0x100024e4
mov esi, dword [esp + 0x74]
mov dword [esp + 0x10], ebx
jmp 0x10002477
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x4c], 0xf992ce4c
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x10002467
mov eax, dword [esi + 4]
mov ecx, 0xa7464c66
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x50]
mov dword [eax + 4], 0x40743585
mov eax, dword [esp + 0x20]
cmp ecx, eax
mov eax, dword [esp + 0x4c]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp eax, ecx
mov ecx, 0x6e99
setl dl
mov dword [esi + 8], edx
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
neg edx
sbb edx, edx
neg edx
mov eax, dword [esp + eax*4 + 0x3c]
sub ecx, edx
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x10], ecx
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], ebx
jle 0x10002461
push 3
pop esi
lea ecx, [esp + 0x74]
call fcn.10004a4b
dec dword [esp + 0x14]
jns 0x1000231d
lea ecx, [esp + 0x50]
call fcn.10004a4b
mov eax, dword [0x10114ab0]
cmp eax, 0x270
jne 0x1000254c
mov edx, 0x10114ab8
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, 0x10115478
jl 0x10002511
jmp 0x10002558
cmp eax, 0x4e0
jb 0x1000255d
call fcn.10005276
mov eax, dword [0x10114ab0]
mov edx, dword [eax*4 + 0x10114ab4]
inc eax
mov dword [0x10114ab0], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10115e34]
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 + 0x10]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [esp + 0x11c]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret