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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x100621e0
push eax
mov dword fs:[0], esp
sub esp, 0xf0
cmp byte [ebp + 0x3c], 0
push ebx
push esi
push edi
mov esi, ecx
je 0x10041427
push 1
mov dword [esp + 0x38], 0x1207
cmp dword [esp + 0x38], 0x121f
pop ebx
mov dword [esp + 0x20], ebx
jle 0x10041384
xor esi, esi
mov dword [esp + 0x1c], esi
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], 0x481a
and dword [esp + 0x24], 0
mov dword [esp + 0x18], 0x168d
cmp dword [esp + 0x18], 0x1096
jge 0x10041308
lea eax, [esp + 0x3c]
push eax
push 0x1006dea8
call fcn.100491a0
push dword [esp + 0x44]
push 0x1006e038
call fcn.10048d40
add esp, 0x10
mov esi, ebx
cmp dword [esp + 0x3c], ebx
jle 0x100412f9
push esi
push 0x1006e038
call fcn.10048d40
inc esi
pop ecx
pop ecx
cmp esi, dword [esp + 0x3c]
jl 0x100412e5
push 0x1006e03c
call fcn.10048d40
mov esi, dword [esp + 0x20]
pop ecx
mov eax, edi
lea ecx, [esp + 0xc8]
and eax, dword [esp + 0x24]
xor eax, esi
cdq
push edx
push eax
call fcn.10001311
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10041329
mov eax, dword [eax]
push eax
call fcn.10048d40
pop ecx
push 0
push ebx
lea ecx, [esp + 0xd0]
call fcn.10001516
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, 0x3c4e
jl 0x100412ab
dec edi
dec dword [esp + 0x28]
jne 0x100412a6
mov edi, dword [esp + 0x14]
inc edi
mov dword [esp + 0x14], edi
cmp edi, 0x32ff
jl 0x1004129a
inc esi
mov dword [esp + 0x1c], esi
cmp esi, 0x5644
jl 0x10041294
cmp dword [esp + 0x34], 0x11f8
jge 0x10041399
push str.gwvkhe_qusevlg_rgszmv_fxbwj_twbivf_lvyxp_iendzsvn_bzpmsmmm_pdim_kfxyqjnt
call fcn.10048d40
pop ecx
or dword [esp + 0x104], 0xffffffff
cmp byte [ebp + 0x48], 0
je 0x100413b9
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
push dword [eax]
call fcn.10010d96
jmp 0x10041b6c
mov ecx, dword [ebp + 0x44]
xor edx, edx
mov esi, dword [ebp + 0x2c]
mov eax, dword [ecx]
mov eax, dword [ecx]
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [ebp + 0x30]
mov eax, dword [eax]
mov eax, dword [esi]
mov ecx, dword [eax + 8]
cmp ecx, 0xa5fc
mov eax, dword [ebp + 0x34]
setge dl
xor ebx, ebx
mov eax, dword [eax]
mov dword [eax], ecx
mov eax, dword [ebp + 0x38]
mov eax, dword [eax]
cmp edx, dword [eax]
mov eax, dword [ebp + 0x1c]
setne bl
xor ecx, ecx
mov eax, dword [eax]
cmp ebx, eax
mov eax, dword [ebp + 0xc]
setne cl
mov eax, dword [eax]
imul eax, ecx
test eax, eax
je 0x10041414
mov eax, dword [esi]
cmp dword [eax], 0
jne 0x10041419
and dword [esp + 0x20], 0
mov eax, dword [ebp + 0x24]
mov esi, dword [esp + 0x20]
mov dword [eax], esi
jmp 0x10041b6c
cmp byte [ebp + 0x40], 0
je 0x10041b52
mov eax, dword [0x1007fcc0]
xor ebx, ebx
inc ebx
mov esi, 0x270
test bl, al
jne 0x1004147e
or eax, ebx
mov ecx, 0x1571
or dword [0x1007fcb4], 0xffffffff
mov edx, ebx
mov dword [0x1007fcc0], eax
mov dword [0x1007e934], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1007e934], ecx
inc edx
cmp edx, esi
jl 0x1004145d
mov dword [0x1007e930], esi
mov dword [esp + 0x14], 0x5c19c5a6
lea ecx, [esp + 0x50]
mov dword [esp + 0x5c], 0x703026d8
push 4
call fcn.100013b5
mov dword [esp + 0x104], 2
lea ecx, [esp + 0x44]
mov dword [esp + 0x30], 0xffffffff
push ebx
call fcn.100013b5
push 3
lea ecx, [esp + 0x64]
mov byte [esp + 0x108], 3
call fcn.100013b5
mov byte [esp + 0x104], 4
xor ebx, ebx
mov dword [esp + 0x18], 0x280e44e3
mov dword [esp + 0x80], 0xc279a1af
mov dword [esp + 0x10], ebx
jmp 0x100414ff
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
mov dword [eax + ecx*4], 0x73672d71
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x100414ec
xor edx, edx
mov dword [esp + 0x10], ebx
inc edx
jmp 0x10041522
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x44]
mov dword [eax + ecx*4], 0x92e6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edx
jl 0x1004150f
lea eax, [esp + 0x10]
push eax
push edx
push 0x7034
push 0x3a27
push ebx
xor dl, dl
lea ecx, [esp + 0x74]
call fcn.10040d3f
add esp, 0x14
mov dword [esp + 0x10], ebx
mov edi, 0xffff
jmp 0x10041561
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0x94], edi
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x10041552
cmp dword [esp + 0x14], ebx
je 0x100415bf
dec dword [esp + 0x30]
xor esi, esi
mov eax, dword [esp + 0x50]
inc esi
mov edx, dword [eax]
xor eax, eax
cmp edx, esi
setge al
xor ecx, ecx
sub edx, eax
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x14]
cmp eax, edx
setg cl
xor eax, eax
cmp ecx, 0xf82d
setle al
xor ecx, ecx
cmp eax, 0xe607
mov eax, dword [esp + 0x44]
setge cl
imul ecx, dword [eax]
test ecx, ecx
jne 0x100415b8
mov eax, dword [esp + 0x14]
xor edx, edx
inc edx
mov eax, edx
jmp 0x100415c4
xor edx, edx
mov eax, ebx
inc edx
xor ecx, ecx
cmp eax, edx
mov eax, dword [esp + 0x44]
setl cl
cmp ecx, dword [eax]
jne 0x10041669
mov dword [esp + 0x88], 0xb81f947f
lea eax, [esp + 0x30]
mov dword [esp + 0x7c], edi
lea ecx, [esp + 0x50]
mov dword [esp + 0x84], 0x6604
mov dword [esp + 0x78], 0xbc84814c
push eax
mov dword [esp + 0x90], 0x5cd6
call fcn.10041c64
lea eax, [esp + 0x80]
xor esi, esi
push eax
push ecx
lea eax, [esp + 0x68]
inc esi
push eax
lea eax, [esp + 0x54]
push eax
push 0x1e86
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0xac]
push eax
push esi
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0xb8]
call fcn.10040956
add esp, 0x34
jmp 0x10041845
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], 0xfe49ba5c
mov dword [esp + 0x24], 0x21d2a6a8
mov dword [esp + 0x20], ebx
mov dword [esp + 0x40], 0xd7c
mov eax, dword [esp + 0x98]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
inc dword [esp + 0x98]
test eax, eax
jne 0x100416bf
mov eax, dword [esp + 0x98]
mov ecx, ebx
neg eax
cmp dword [esp + 0x98], eax
jl 0x100416c1
mov ecx, edx
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
imul eax, ecx
test eax, eax
jne 0x100416e4
mov esi, ebx
cmp dword [esp + 0x24], ebx
je 0x100416e6
mov esi, edx
mov eax, dword [esp + 0x28]
xor ecx, ecx
cmp esi, eax
sete cl
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], 0x5db8
cmp dword [esp + 0x18], 0x5ec3
jle 0x100417c1
push ebx
push ebx
push 0x829
push 0x1b83
push 0x17ac
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, ebx
xor esi, esi
mov dword [esp + 0x14], eax
inc esi
mov dword [esp + 0x38], ebx
mov ecx, ebx
mov dword [esp + 0x34], 0x1934
mov dword [esp + 0x20], ecx
shl eax, cl
mov edi, ebx
mov dword [esp + 0x40], eax
or eax, edi
lea ecx, [esp + 0xb0]
cdq
push edx
push eax
call fcn.10001311
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10041760
mov eax, dword [eax]
push eax
call fcn.10048d40
pop ecx
push ebx
push esi
lea ecx, [esp + 0xb8]
call fcn.10001516
mov eax, dword [esp + 0x40]
inc edi
cmp edi, 0x76b5
jl 0x10041745
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x38]
add ecx, edi
dec dword [esp + 0x34]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
jne 0x1004173d
inc edi
mov dword [esp + 0x38], edi
cmp edi, 0x2385
jl 0x1004172f
inc eax
mov dword [esp + 0x14], eax
cmp eax, 0x462d
jl 0x1004172b
push ebx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
xor edx, edx
inc edx
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x60]
sub ecx, 0xfffffffd
neg ecx
sbb ecx, ecx
inc ecx
imul ecx, dword [eax]
test ecx, ecx
je 0x100417ef
cmp dword [esp + 0x1c], ebx
je 0x100417ef
mov eax, dword [esp + 0x44]
mov ecx, edx
cmp dword [eax], ebx
jne 0x100417f1
mov ecx, ebx
mov eax, dword [esp + 0x1c]
xor edx, edx
cmp eax, ecx
mov eax, dword [esp + 0x28]
setge dl
xor ecx, ecx
cmp eax, edx
setge cl
xor eax, eax
cmp eax, ecx
sbb eax, eax
inc eax
mov dword [esp + 0x40], eax
je 0x10041818
mov eax, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
mov eax, dword [esp + 0x50]
cmp dword [eax], 0xd38bc6a5
sbb eax, eax
inc eax
mov dword [esp + 0x5c], eax
cmp dword [esp + 0x18], 0x5d12
jge 0x10041842
push str.pyhqqosf_kbqi_eezdi_nogelh_clsdx_npems_omx_jkrgljfp_jazfoaedg_rez_eqsrmzft_mzhhyozh
call fcn.10048d40
pop ecx
xor esi, esi
inc esi
cmp dword [esp + 0x60], ebx
je 0x10041861
push dword [esp + 0x60]
call fcn.10048e11
pop ecx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
cmp dword [esp + 0x44], ebx
je 0x1004187d
push dword [esp + 0x44]
call fcn.10048e11
pop ecx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
or dword [esp + 0x104], 0xffffffff
cmp dword [esp + 0x50], ebx
je 0x100418a1
push dword [esp + 0x50]
call fcn.10048e11
pop ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
cmp byte [0x1007e77d], bl
jne 0x10041aa4
push 3
lea ecx, [esp + 0x70]
call fcn.100013b5
push 3
lea ecx, [esp + 0xa8]
mov dword [esp + 0x108], 7
call fcn.100013b5
push esi
push 0x712b
push ebx
push ebx
push 0x129
push 0x2706
push 0x5f5d
push 0x4518
push 0x11aa
push 0x4a11
push 0x3d2c
push 0x5a8e
push 0x5217
push 0x5480
push 0x4de
push 0x6f8f
push 0x350d
lea edx, [esp + 0xd4]
mov byte [esp + 0x148], 8
lea ecx, [esp + 0xb0]
call fcn.10041241
add esp, 0x44
lea eax, [esp + 0x90]
lea edx, [esp + 0xa4]
mov ecx, 0x2d42
push ebx
push eax
call fcn.1004119b
mov dword [esp + 0x40], 0x7f63
cmp dword [esp + 0x40], 0x82de
pop ecx
pop ecx
jle 0x100419ba
mov edi, ebx
mov ecx, ebx
mov dword [esp + 0x18], ebx
mov eax, edi
shl eax, cl
lea ecx, [esp + 0xe0]
cdq
push edx
push eax
call fcn.10001311
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1004198b
mov eax, dword [eax]
push eax
call fcn.10048d40
pop ecx
push ebx
push esi
lea ecx, [esp + 0xe8]
call fcn.10001516
mov ecx, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x18], ecx
cmp ecx, 0xdcd
jl 0x1004196e
inc edi
cmp edi, 0x67eb
jl 0x10041968
cmp dword [esp + 0x38], 0x7bb1
jge 0x100419cf
push str.uzmodprc_tscvdgmv_pezv_ldstpi_ncxfxtzug_hgxyqmf
call fcn.10048d40
pop ecx
mov dword [esp + 0x104], 8
mov esi, dword [esp + 0xa4]
mov dword [esi + 4], ebx
push ecx
push 0x3be9
push ecx
push 0x3ac8
push 0x5fb7
lea eax, [esp + 0x42]
mov byte [esp + 0x42], bl
push eax
push 0x6985
push 0x1702
push 0xee8
push ebx
push 0x789a
push 0x2da
push 0x735f
mov ecx, 0x4426
call fcn.10040956
add esp, 0x30
mov byte [esp + 0x33], bl
lea eax, [esp + 0x33]
mov dl, 1
push eax
push ecx
call fcn.10040c40
add esp, 0xc
inc dword [esi + 4]
cmp dword [esi + 4], 2
jle 0x100419e4
push esi
call fcn.10048e11
or dword [esp + 0x108], 0xffffffff
cmp dword [esp + 0x70], 0
pop ecx
je 0x10041a73
push dword [esp + 0x6c]
call fcn.10048e11
pop ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
push 0x40fe
xor eax, eax
mov ecx, 0x42b2
inc eax
push eax
push 0x1007e930
push 0x2898
push ebx
mov dl, al
call fcn.10040d3f
add esp, 0x10
mov ecx, 0x1007e77d
push 1
call fcn.10041186
pop ecx
pop ecx
push ecx
push 0x1102
push ecx
xor dl, dl
call fcn.10040c40
mov eax, dword [0x1007e930]
add esp, 0xc
cmp eax, 0x270
jne 0x10041b01
mov edx, 0x1007e938
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, ecx
xor eax, dword [edx + 0x630]
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x1007f2f8
jl 0x10041ac6
jmp 0x10041b0d
cmp eax, 0x4e0
jb 0x10041b12
call fcn.100429eb
mov eax, dword [0x1007e930]
mov edx, dword [eax*4 + 0x1007e934]
inc eax
mov dword [0x1007e930], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x1007fcb4]
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 + 0x14]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
jmp 0x10041b6c
mov dword [edx], 0
jmp 0x10041b67
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0x313dd33a
inc dword [edx]
cmp dword [edx], 3
jl 0x10041b5a
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret