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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x13c4
call fcn.0040f070
mov eax, dword [0x43d04c]
xor eax, esp
mov dword [esp + 0x13c0], eax
push ebx
push esi
push edi
call fcn.0040cf8f
mov esi, eax
mov ebx, edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
call fcn.0040cf78
push ebx
push ebx
push esi
push edx
push eax
call fcn.0042b630
mov esi, ebx
pop ebx
push 0
push 0x3b9aca00
push esi
push ecx
mov ebx, eax
mov edi, edx
call fcn.0040e8c0
push dword [esp + 0x10]
push dword [esp + 0x18]
push edx
push eax
call fcn.0042b710
mov dword [esp + 0x10], eax
mov esi, edx
mov ecx, 0x3b9aca00
mov dword [esp + 0x13c4], 0xffffffff
mov eax, edi
mul ecx
mov edx, 0x3b9aca00
mov ecx, eax
mov eax, ebx
mul edx
add ecx, edx
mov edx, dword [esp + 0x10]
add edx, eax
mov dword [esp + 0x44], edx
adc esi, ecx
mov ecx, 1
mov dword [esp + 0x2c], esi
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [esp + ecx*4 + 0x44], edx
inc ecx
cmp ecx, 0x270
jb 0x403ae1
lea eax, [esp + 0x40]
mov dword [esp + 0x40], 0x270
push eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], 2
call fcn.0040a9b0
mov ecx, eax
shl ecx, 4
sub ecx, eax
shl ecx, 2
mov eax, ecx
cdq
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], edx
call fcn.0040cf8f
mov esi, eax
mov ebx, edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], ebx
call fcn.0040cf78
push ebx
push ebx
push esi
push edx
push eax
call fcn.0042b630
mov esi, ebx
pop ebx
push 0
push 0x3b9aca00
push esi
push ecx
mov ebx, eax
mov edi, edx
call fcn.0040e8c0
push dword [esp + 0x10]
push dword [esp + 0x1c]
push edx
push eax
call fcn.0042b710
mov esi, eax
mov dword [esp + 0x1c], edx
mov ecx, 0x3b9aca00
mov eax, edi
mul ecx
mov edx, 0x3b9aca00
mov ecx, eax
mov eax, ebx
mov ebx, dword [esp + 0x1c]
mul edx
add ecx, edx
add esi, eax
mov dword [esp + 0x18], esi
adc ebx, ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], ebx
test ecx, ecx
jl 0x403c00
mov eax, dword [esp + 0x14]
jg 0x403bba
test eax, eax
je 0x403c00
push 0
push 0x3b9aca00
push ecx
push eax
call fcn.0040e8c0
or edi, 0xffffffff
mov ecx, 0x7fffffff
sub edi, eax
sbb ecx, edx
cmp ebx, ecx
jg 0x403be8
jl 0x403bde
cmp esi, edi
jae 0x403be8
add eax, esi
mov dword [esp + 0x18], eax
adc edx, ebx
jmp 0x403bf5
mov dword [esp + 0x18], 0xffffffff
mov edx, 0x7fffffff
mov dword [esp + 0x1c], edx
nop dword [eax]
call fcn.0040cf8f
mov esi, eax
mov ebx, edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ebx
call fcn.0040cf78
push ebx
push ebx
push esi
push edx
push eax
call fcn.0042b630
mov esi, ebx
pop ebx
push 0
push 0x3b9aca00
push esi
push ecx
mov ebx, eax
mov edi, edx
call fcn.0040e8c0
push dword [esp + 0x20]
push dword [esp + 0x14]
push edx
push eax
call fcn.0042b710
mov esi, eax
mov dword [esp + 0x14], edx
mov ecx, 0x3b9aca00
mov eax, edi
mul ecx
mov edx, 0x3b9aca00
mov ecx, eax
mov eax, ebx
mov ebx, dword [esp + 0x1c]
mul edx
add ecx, edx
add esi, eax
mov eax, dword [esp + 0x14]
adc eax, ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x14], eax
cmp eax, ebx
jg 0x403d15
jl 0x403c88
cmp esi, dword [esp + 0x18]
jae 0x403d15
call fcn.0040d007
push 0
push 0x64
push edx
push eax
call fcn.0040e8c0
mov edi, dword [esp + 0x18]
mov esi, eax
sub edi, dword [esp + 0x20]
mov dword [esp + 0x10], edx
mov ecx, edi
sbb ebx, dword [esp + 0x14]
mov edx, ebx
mov dword [esp + 0x28], esi
call fcn.0042bc80
comisd xmm0, xmmword [0x439670]
mov ecx, dword [esp + 0x10]
jbe 0x403cd7
add esi, 0xad160000
mov edi, 0xad160000
mov ebx, 0x311cd
jmp 0x403cd9
add esi, edi
mov eax, dword [esp + 0x28]
add eax, edi
push 0
push 0x3b9aca00
adc ecx, ebx
push ecx
push eax
call fcn.0042b710
mov dword [esp + 0x30], eax
imul eax, eax, 0x3b9aca00
mov dword [esp + 0x34], edx
sub esi, eax
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x3c], esi
call fcn.0040dae6
add esp, 4
jmp 0x403c00
mov ecx, dword [esp + 0x13cc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040e210
mov esp, ebp
pop ebp
ret