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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x13d4
call fcn.100b5380
mov eax, dword [0x100d4040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
call fcn.10026380
cmp dword [0x101f25f0], 0
je 0x10026e05
push 0x100d828c
call fcn.10023cf0
mov eax, dword [0x101f25fc]
sub eax, 1
je 0x100264b4
sub eax, 4
jne 0x100264d4
mov ecx, dword [0x101f25f4]
cmp ecx, 0xb
je 0x100264ad
cmp ecx, 0x26
je 0x100264ad
cmp ecx, 9
jne 0x100264a1
push 0x100d52bc
jmp 0x100264cf
cmp ecx, 0x28
jne 0x100264f1
push 0x100d5eb0
jmp 0x100264cf
push 0x100d46c8
jmp 0x100264cf
mov eax, dword [0x101f25f4]
cmp eax, 1
je 0x100264ca
cmp eax, 0x40
je 0x100264ca
push 0x100d7698
jmp 0x100264cf
push 0x100d6aa4
call fcn.10023cf0
mov eax, dword [0x101f25fc]
cmp eax, 9
je 0x10026e05
cmp eax, 7
je 0x10026e05
mov ecx, dword [0x101f25f4]
cmp byte [0x100d43bc], 0
je 0x10026e05
mov eax, dword [0x101f2874]
mov edx, 1
movss xmm0, dword [0x100c8da0]
movaps xmm1, xmm0
movss dword [ebp - 0x13c4], xmm0
movss dword [ebp - 0x13c8], xmm1
mov dword [ebp - 0x13d4], 0
mov dword [ebp - 0x13d0], 0
mov dword [ebp - 0x13cc], edx
cmp dword [eax + 0x18], edx
jl 0x10026b11
mov esi, 0x100e86d0
nop dword [eax + eax]
mov ecx, dword [0x101f281c]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov dword [ebp - 0x13a4], esi
mov edi, eax
test esi, esi
je 0x10026aea
lea ecx, [esi + 0x1c]
call fcn.10029aa0
test edi, edi
je 0x10026aea
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x260]
call eax
test al, al
je 0x10026aea
mov eax, dword [0x101f2a54]
add eax, 0xffffffcd
xor eax, 0xe63a014e
cmp dword [eax + edi], 0
jne 0x10026aea
mov eax, dword [0x101f2a60]
add eax, 0xffffffca
xor eax, 0xe63a0151
cmp dword [eax + edi], 0
jle 0x10026aea
mov eax, dword [0x101f29c4]
cmp byte [eax + edi], 0
jne 0x10026aea
mov edx, dword [0x101f0dc0]
test edx, edx
je 0x10026aea
mov ecx, dword [0x101f2a2c]
add ecx, 0xffffffd7
xor ecx, 0xe63a0144
mov eax, dword [ecx + edi]
cmp eax, dword [ecx + edx]
jne 0x10026609
mov ecx, dword [0x101f2900]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
test eax, eax
je 0x10026aea
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
call fcn.10025610
mov eax, dword [esi + 0x18]
xor edi, edi
xor bh, bh
mov dword [ebp - 0x13bc], edi
xor bl, bl
mov byte [ebp - 0x13a6], bh
mov byte [ebp - 0x13a5], bl
test eax, eax
je 0x10026787
mov ebx, dword [esi + 0x14]
add eax, ebx
mov dword [ebp - 0x13b0], eax
cmp ebx, eax
je 0x1002677b
nop word [eax + eax]
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
dec ecx
and ecx, ebx
mov edi, dword [eax + ecx*4]
mov eax, dword [edi + 0x33e0]
test al, 1
jne 0x10026775
test al, 2
jne 0x10026768
movss xmm0, dword [edi + 4]
xorps xmm1, xmm1
comiss xmm0, xmm1
ja 0x10026768
mov eax, dword [0x101f2874]
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [0x101f2634]
mov ecx, dword [0x101f28b8]
mulss xmm0, dword [eax + 0x20]
mov eax, dword [ecx]
movss dword [ebp - 0x13b8], xmm0
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x13ac], eax
call dword [ebp - 0x13ac]
fsubr dword [ebp - 0x13b8]
movss xmm3, dword [0x100c8da4]
movss xmm1, dword [0x100c8d9c]
fstp dword [ebp - 0x13ac]
movss xmm4, dword [ebp - 0x13ac]
andps xmm3, xmm4
movaps xmm0, xmm4
xorps xmm0, xmm3
movaps xmm2, xmm4
cmpltss xmm0, xmm1
andps xmm1, xmm0
orps xmm1, xmm3
addss xmm2, xmm1
subss xmm2, xmm1
movss xmm1, dword [0x100c8c18]
movaps xmm0, xmm2
subss xmm0, xmm4
cmpnless xmm0, xmm3
andps xmm0, xmm1
subss xmm2, xmm0
movss xmm0, dword [edi + 0x18]
comiss xmm2, xmm0
ja 0x10026768
comiss xmm0, dword [ebp - 0x13b8]
ja 0x10026768
mov ecx, edi
call fcn.10022390
test al, al
je 0x10026768
cmp dword [edi + 8], 1
je 0x10026754
mov eax, dword [edi + 0x33d0]
test eax, eax
je 0x10026754
cmp eax, 1
je 0x10026754
mov byte [ebp - 0x13a5], 0
cmp eax, 8
jne 0x1002675b
mov byte [ebp - 0x13a5], 1
mov byte [ebp - 0x13a6], 1
mov dword [ebp - 0x13bc], edi
inc ebx
cmp ebx, dword [ebp - 0x13b0]
jne 0x10026650
mov edi, dword [ebp - 0x13bc]
mov bh, byte [ebp - 0x13a6]
mov bl, byte [ebp - 0x13a5]
cmp dword [ebp - 0x18], 0
je 0x10026804
mov eax, dword [esi + 0x2c]
lea ecx, [esi + 0x1c]
inc eax
cmp dword [esi + 0x24], eax
ja 0x1002679f
push ecx
call fcn.1002a8b0
mov ecx, dword [esi + 0x24]
lea eax, [ecx - 1]
dec ecx
and eax, dword [esi + 0x28]
mov dword [esi + 0x28], eax
mov edx, dword [esi + 0x2c]
add edx, eax
mov eax, dword [esi + 0x20]
and ecx, edx
mov dword [ebp - 0x13b0], edx
mov dword [ebp - 0x13ac], ecx
cmp dword [eax + ecx*4], 0
jne 0x100267e4
push 0xc
call fcn.100b4302
mov edx, dword [ebp - 0x13ac]
add esp, 4
mov ecx, dword [esi + 0x20]
mov dword [ecx + edx*4], eax
mov edx, dword [ebp - 0x13b0]
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
dec ecx
and ecx, edx
mov ecx, dword [eax + ecx*4]
mov eax, dword [ebp - 0x18]
mov dword [ecx], eax
mov al, byte [ebp - 0x14]
mov byte [ecx + 4], al
mov al, byte [ebp - 0x10]
mov byte [ecx + 8], al
inc dword [esi + 0x2c]
test edi, edi
je 0x10026876
mov eax, dword [esi + 0x2c]
lea ecx, [esi + 0x1c]
inc eax
cmp dword [esi + 0x24], eax
ja 0x1002681a
push ecx
call fcn.1002a8b0
mov ecx, dword [esi + 0x24]
lea eax, [ecx - 1]
dec ecx
and eax, dword [esi + 0x28]
mov dword [esi + 0x28], eax
mov edx, dword [esi + 0x2c]
add edx, eax
mov eax, dword [esi + 0x20]
and ecx, edx
mov dword [ebp - 0x13b0], edx
mov dword [ebp - 0x13ac], ecx
cmp dword [eax + ecx*4], 0
jne 0x1002685f
push 0xc
call fcn.100b4302
mov edx, dword [ebp - 0x13ac]
add esp, 4
mov ecx, dword [esi + 0x20]
mov dword [ecx + edx*4], eax
mov edx, dword [ebp - 0x13b0]
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
dec ecx
and ecx, edx
mov eax, dword [eax + ecx*4]
mov dword [eax], edi
mov byte [eax + 4], bh
mov byte [eax + 8], bl
inc dword [esi + 0x2c]
cmp dword [esi + 0x2c], 0
jne 0x100268f6
push esi
call fcn.10096d60
mov dword [ebp - 0x13ac], eax
test eax, eax
je 0x100268ec
mov eax, dword [esi + 0x2c]
lea ecx, [esi + 0x1c]
inc eax
cmp dword [esi + 0x24], eax
ja 0x1002689e
push ecx
call fcn.1002a8b0
mov ecx, dword [esi + 0x24]
lea eax, [ecx - 1]
and eax, dword [esi + 0x28]
lea edi, [ecx - 1]
mov dword [esi + 0x28], eax
mov ebx, dword [esi + 0x2c]
add ebx, eax
mov eax, dword [esi + 0x20]
and edi, ebx
cmp dword [eax + edi*4], 0
jne 0x100268cd
push 0xc
call fcn.100b4302
mov ecx, dword [esi + 0x20]
add esp, 4
mov dword [ecx + edi*4], eax
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x20]
dec ecx
and ecx, ebx
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x13ac]
mov dword [eax], ecx
mov byte [eax + 4], 0
mov byte [eax + 8], 0
inc dword [esi + 0x2c]
cmp dword [esi + 0x2c], 0
je 0x10026aea
mov eax, dword [0x101b9ed4]
cmp eax, dword [0x101b9ed8]
je 0x1002690e
mov dword [eax], esi
add dword [0x101b9ed4], 4
jmp 0x10026920
lea ecx, [ebp - 0x13a4]
push ecx
push eax
mov ecx, 0x101b9ed0
call fcn.1002acf0
mov edi, dword [ebp - 0x13a4]
mov edx, dword [0x101f2a18]
mov eax, dword [0x101f0dc0]
add edx, 0xffffffdc
xor edx, 0xe63a013f
mov ecx, dword [edi]
movss xmm1, dword [ecx + edx + 4]
subss xmm1, dword [edx + eax + 4]
movss xmm3, dword [ecx + edx]
subss xmm3, dword [edx + eax]
movss xmm2, dword [ecx + edx + 8]
subss xmm2, dword [edx + eax + 8]
movaps xmm0, xmm1
movss dword [ebp - 0x13b8], xmm1
mulss xmm0, xmm1
movaps xmm1, xmm3
movss dword [ebp - 0x13b0], xmm3
mulss xmm1, xmm3
movss dword [ebp - 0x13ac], xmm2
addss xmm0, xmm1
movaps xmm1, xmm2
mulss xmm1, xmm2
addss xmm0, xmm1
call fcn.10021a50
addss xmm0, dword [0x100c8afc]
movss xmm1, dword [0x100c8c18]
divss xmm1, xmm0
movss xmm0, dword [0x101f264c]
mulss xmm0, dword [0x100c8b40]
movss dword [ebp - 0x13bc], xmm1
movss dword [ebp - 0x13c0], xmm0
call fcn.10021a10
movss dword [ebp - 0x13a4], xmm0
movss xmm0, dword [ebp - 0x13c0]
call fcn.10021a40
movss dword [ebp - 0x13b4], xmm0
movss xmm0, dword [0x101f2650]
mulss xmm0, dword [0x100c8b40]
movss dword [ebp - 0x13c0], xmm0
call fcn.10021a40
movss xmm1, dword [ebp - 0x13bc]
mulss xmm0, dword [ebp - 0x13a4]
mulss xmm1, dword [ebp - 0x13b8]
mulss xmm0, xmm1
movss dword [ebp - 8], xmm0
movss xmm0, dword [ebp - 0x13c0]
call fcn.10021a10
movss xmm2, dword [ebp - 0x13bc]
mulss xmm0, dword [ebp - 0x13a4]
movaps xmm1, xmm2
mulss xmm1, dword [ebp - 0x13b0]
mulss xmm2, dword [ebp - 0x13ac]
mulss xmm0, xmm1
mulss xmm2, dword [ebp - 0x13b4]
addss xmm0, dword [ebp - 8]
subss xmm0, xmm2
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_acosf
movss xmm1, dword [ebp - 0x13b8]
movaps xmm2, xmm0
mulss xmm2, dword [0x100c8ce4]
xorps xmm0, xmm0
mulss xmm1, xmm1
maxss xmm2, xmm0
movss xmm0, dword [ebp - 0x13b0]
mulss xmm0, xmm0
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x13ac]
mulss xmm0, xmm0
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x13c4]
comiss xmm0, xmm2
jbe 0x10026acf
mov dword [ebp - 0x13d0], edi
movss dword [ebp - 0x13c4], xmm2
movss xmm0, dword [ebp - 0x13c8]
comiss xmm0, xmm1
jbe 0x10026aea
mov dword [ebp - 0x13d4], edi
movss dword [ebp - 0x13c8], xmm1
mov edx, dword [ebp - 0x13cc]
add esi, 0x3460
mov eax, dword [0x101f2874]
inc edx
mov dword [ebp - 0x13cc], edx
cmp edx, dword [eax + 0x18]
jle 0x10026550
mov ecx, dword [0x101f25f4]
mov eax, dword [0x101b9ed0]
cmp eax, dword [0x101b9ed4]
je 0x10026c40
call dword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [ebp - 0x1c], 0xffffffff
mov edx, 1
mov dword [ebp - 0x139c], eax
nop word [eax + eax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [ebp + edx*4 - 0x139c], eax
inc edx
cmp edx, 0x270
jb 0x10026b40
mov eax, dword [0x101b9ed4]
lea ecx, [ebp - 0xc]
sub eax, dword [0x101b9ed0]
sar eax, 2
dec eax
mov dword [ebp - 0x13a0], 0x270
mov dword [ebp - 8], eax
lea eax, [ebp - 0x13a0]
push eax
mov dword [ebp - 0xc], 0
call fcn.1002a080
mov ebx, eax
lea ecx, [ebp - 0xc]
lea eax, [ebp - 0x13a0]
push eax
call fcn.1002a080
mov dword [ebp - 0x13b4], eax
lea ecx, [ebp - 0xc]
lea eax, [ebp - 0x13a0]
push eax
call fcn.1002a080
mov edx, dword [0x101b9ed4]
xor esi, esi
mov edi, dword [0x101b9ed0]
mov ecx, edx
sub ecx, edi
mov dword [ebp - 8], eax
sar ecx, 2
test ecx, ecx
je 0x10026c3a
mov eax, edx
sub eax, edi
sar eax, 2
cmp eax, esi
jbe 0x10026e16
mov eax, dword [edi + esi*4]
lea ecx, [edi + esi*4]
cmp eax, dword [ebp - 0x13d0]
je 0x10026c2e
cmp eax, dword [ebp - 0x13d4]
je 0x10026c2e
cmp esi, ebx
je 0x10026c2e
cmp esi, dword [ebp - 0x13b4]
je 0x10026c2e
cmp esi, dword [ebp - 8]
je 0x10026c2e
lea eax, [ecx + 4]
sub edx, eax
push edx
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov edx, dword [0x101b9ed4]
add esp, 0xc
mov edi, dword [0x101b9ed0]
sub edx, 4
mov dword [0x101b9ed4], edx
mov eax, edx
inc esi
sub eax, edi
sar eax, 2
cmp esi, eax
jb 0x10026bd3
mov ecx, dword [0x101f25f4]
cmp dword [0x101f25fc], 0
jne 0x10026c64
cmp ecx, 0x1f
je 0x10026c64
call fcn.100962f0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100b40e6
mov esp, ebp
pop ebp
ret
call fcn.10026e20
cmp byte [0x101f2600], 0
je 0x10026e05
cmp dword [0x101baff4], 0
je 0x10026e05
mov esi, dword [0x101bb018]
test esi, esi
je 0x10026e05
mov ecx, dword [0x101f2640]
mov al, byte [ecx + 0x30]
and al, 1
cmp dword [0x101f25f4], 0x40
jne 0x10026cb2
test dword [ecx + 0x30], 0x800
je 0x10026cb2
mov dl, 1
jmp 0x10026cb4
xor dl, dl
test al, al
jne 0x10026cc0
test dl, dl
je 0x10026e05
mov eax, dword [0x101f2614]
cmp eax, dword [0x101f2618]
jle 0x10026cd4
mov byte [0x101f2620], 0
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [0x101f2624]
mov eax, dword [0x101f2874]
divss xmm0, dword [eax + 0x20]
addss xmm0, dword [0x100c8bc4]
cvttss2si eax, xmm0
mov dword [ecx + 8], eax
mov eax, dword [0x101f2640]
movss xmm0, dword [0x101baff8]
movss dword [eax + 0xc], xmm0
movss xmm0, dword [0x101baffc]
movss dword [eax + 0x10], xmm0
movss xmm0, dword [0x101bb000]
movss dword [eax + 0x14], xmm0
cmp byte [0x100d4444], 0
jne 0x10026d41
mov ecx, dword [0x101f2818]
push 0x101baff8
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
call eax
mov ecx, dword [0x101f2914]
mov esi, dword [0x101f2ac8]
add esi, 0xffffffb0
xor esi, 0xe63a016b
mov eax, dword [ecx]
add esi, dword [0x101f0dc0]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x13b4], eax
call dword [ebp - 0x13b4]
mov eax, dword [0x101f2640]
sub esp, 0xc
fstp dword [ebp - 0x13b4]
movss xmm3, dword [ebp - 0x13b4]
mov ecx, esp
movaps xmm1, xmm3
movaps xmm2, xmm3
mulss xmm1, dword [esi]
movss xmm0, dword [eax + 0xc]
mulss xmm2, dword [esi + 4]
mulss xmm3, dword [esi + 8]
subss xmm0, xmm1
movss dword [eax + 0xc], xmm0
movss xmm0, dword [eax + 0x10]
subss xmm0, xmm2
movss dword [eax + 0x10], xmm0
movss xmm0, dword [eax + 0x14]
subss xmm0, xmm3
movss dword [eax + 0x14], xmm0
push dword [0x101bb018]
movq xmm0, qword [0x101bb004]
mov eax, dword [0x101bb00c]
push dword [0x101baff4]
movss xmm2, dword [0x101bb010]
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
call fcn.100a37a0
mov ecx, dword [0x101bb018]
push ecx
mov eax, esp
push ecx
mov dword [eax], 0x2dffffff
call fcn.100b2260
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100b40e6
mov esp, ebp
pop ebp
ret
call fcn.10029a90
int3