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

Disassembly:
push 0xffffffffffffffff
push 0x492102
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x34]
xor ebx, ebx
mov ebp, 0xf
mov dword [edi + 0x18], ebp
mov dword [edi + 0x14], ebx
mov byte [edi + 4], bl
mov dword [esp + 0x2c], ebx
mov dword [edi + 0x34], ebp
mov dword [edi + 0x30], ebx
mov byte [edi + 0x20], bl
mov dword [edi + 0x50], ebp
mov dword [edi + 0x4c], ebx
mov byte [edi + 0x3c], bl
mov dword [edi + 0x6c], ebp
mov dword [edi + 0x68], ebx
mov byte [edi + 0x58], bl
push 0x40
lea eax, [edi + 0x7c]
push ebx
mov esi, 0x10
push eax
mov dword [edi + 0x70], ebx
mov dword [edi + 0x74], esi
mov dword [edi + 0x78], eax
call fcn.0045ed30
push 0x40
lea eax, [edi + 0xc8]
push ebx
push eax
mov dword [edi + 0xbc], ebx
mov dword [edi + 0xc0], esi
mov dword [edi + 0xc4], eax
call fcn.0045ed30
add esp, 0x18
lea esi, [edi + 0x10c]
mov dword [esp + 0x10], 2
jmp 0x42cb00
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0x123
mov dword [esp + 0x18], 0x234
mov dword [esp + 0x1c], 0x345
mov dword [esp + 0x20], 0x456
call fcn.0042c9b0
mov dword [esi], 0x1571
mov dword [esi + 0x9c0], 1
lea esp, [esp]
mov eax, dword [esi + 0x9c0]
mov ecx, dword [esi + eax*4 - 4]
mov edx, ecx
shr edx, 0x1e
xor edx, ecx
imul edx, edx, 0x6c078965
add edx, eax
mov dword [esi + eax*4], edx
mov eax, 1
add dword [esi + 0x9c0], eax
cmp dword [esi + 0x9c0], 0x270
jb 0x42cb40
add esi, 0x9c4
sub dword [esp + 0x10], eax
jns 0x42cb00
mov dword [edi + 0x1e7c], ebp
mov dword [edi + 0x1e78], ebx
mov byte [edi + 0x1e68], bl
mov dword [edi + 0x1e98], ebp
mov dword [edi + 0x1e94], ebx
mov byte [edi + 0x1e84], bl
mov dword [edi + 0x1eb4], ebp
mov dword [edi + 0x1eb0], ebx
mov byte [edi + 0x1ea0], bl
lea ebp, [edi + 0x1eb8]
mov eax, 0xf
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x14], ebx
mov byte [ebp + 4], bl
mov dword [edi + 0x1eec], eax
mov dword [edi + 0x1ee8], ebx
mov byte [edi + 0x1ed8], bl
mov dword [edi + 0x1f08], eax
mov dword [edi + 0x1f04], ebx
mov byte [edi + 0x1ef4], bl
mov dword [edi + 0x1f24], eax
mov dword [edi + 0x1f20], ebx
mov byte [edi + 0x1f10], bl
mov dword [edi + 0x1f40], eax
mov dword [edi + 0x1f3c], ebx
mov byte [edi + 0x1f2c], bl
mov dword [edi + 0x1f74], ebx
mov dword [edi + 0x1f78], ebx
mov dword [edi + 0x1f7c], ebx
mov dword [edi + 0x1f80], ebx
mov dword [edi + 0x1f84], ebx
mov dword [edi + 0x1f88], ebx
mov dword [edi + 0x1f8c], ebx
mov dword [edi + 0x1f90], ebx
mov dword [edi + 0x1f94], ebx
mov dword [edi + 0x1f98], ebx
mov dword [edi + 0x1f9c], ebx
mov dword [edi + 0x1fa0], ebx
mov dword [edi + 0x1fa4], ebx
mov dword [edi + 0x1fa8], ebx
mov dword [edi + 0x1fac], ebx
mov dword [edi + 0x1fb0], ebx
mov dword [edi + 0x1fb4], ebx
mov dword [edi + 0x1fb8], ebx
mov dword [edi + 0x1fbc], ebx
mov dword [edi + 0x1fc0], ebx
mov dword [edi + 0x1fc4], ebx
mov dword [edi + 0x1fc8], ebx
lea esi, [edi + 0x1fd4]
mov dword [edi + 0x1fcc], ebx
mov dword [edi + 0x1fd0], ebx
call fcn.00430960
lea esi, [edi + 0x2060]
call fcn.00430960
lea esi, [edi + 0x20ec]
call fcn.00430960
lea esi, [edi + 0x2180]
mov dword [esi + 0x18], 0xf
mov dword [esi + 0x14], ebx
mov byte [esi + 4], bl
mov byte [esp + 0x2c], 0x11
push 0x403e40
mov dword [edi + 0x21ac], ebx
mov dword [edi + 0x21b0], ebx
push 0x403e20
mov dword [edi + 0x21b4], ebx
mov dword [edi + 0x21b8], ebx
lea eax, [edi + 0x21ec]
push 0x20
push 0x1c
push eax
call fcn.0045b850
mov byte [esp + 0x2c], 0x12
mov dword [edi + 0x25bc], ebx
mov dword [edi + 0x25c0], ebx
mov dword [edi + 0x25c4], ebx
mov dword [edi + 0x25c8], ebx
mov dword [edi + 0x25cc], ebx
mov dword [edi + 0x25d0], ebx
mov dword [edi + 0x25d4], ebx
mov dword [edi + 0x25d8], ebx
mov dword [edi + 0x25dc], ebx
mov dword [edi + 0x25e0], ebx
mov dword [edi + 0x70], ebx
mov dword [edi + 0x108], 1
mov dword [edi + 0x1f50], ebx
mov dword [edi + 0x1f54], ebx
mov dword [edi + 0x1f58], 0x180
mov eax, 0x1e0
mov dword [edi + 0x1f5c], eax
mov dword [edi + 0x1f60], ebx
mov dword [edi + 0x1f64], ebx
mov dword [edi + 0x1f68], 0x280
mov dword [edi + 0x1f6c], eax
push ebx
push 0x49747a
mov ecx, edi
mov byte [edi + 0x1e60], bl
mov byte [edi + 0x1e61], bl
mov dword [edi + 0x1e5c], ebx
mov dword [edi + 0x1f7c], ebx
mov dword [edi + 0x1f84], ebx
mov dword [edi + 0x1f8c], ebx
mov dword [edi + 0x1f94], ebx
mov dword [edi + 0x1f9c], ebx
mov dword [edi + 0x1fa4], ebx
mov dword [edi + 0x1fac], ebx
mov dword [edi + 0x1fb4], ebx
mov dword [edi + 0x1fbc], ebx
mov dword [edi + 0x1fc4], ebx
mov dword [edi + 0x1fcc], ebx
mov dword [edi + 0x21ac], ebx
mov dword [edi + 0x21b4], ebx
mov dword [edi + 0x21bc], ebx
mov dword [edi + 0x25a8], ebx
mov dword [edi + 0x25ac], 8
mov dword [edi + 0x1f70], ebx
mov dword [edi + 0x1f44], 0x1388
mov dword [edi + 0x1f48], 0x3e8
mov byte [edi + 0x257c], bl
mov byte [edi + 0x257d], bl
mov byte [edi + 0x257e], bl
mov byte [edi + 0x257f], bl
mov dword [edi + 0x2584], ebx
call fcn.00404090
push ebx
push 0x49747a
lea ecx, [edi + 0x1c]
call fcn.00404090
push ebx
push 0x49747a
lea ecx, [edi + 0x38]
call fcn.00404090
push ebx
push 0x49747a
lea ecx, [edi + 0x54]
call fcn.00404090
push ebx
push 0x49747a
mov ecx, ebp
call fcn.00404090
mov eax, 3
push 7
mov dword [edi + 0x21e8], 0xffffffff
mov dword [edi + 0x256c], eax
mov dword [edi + 0x2570], eax
mov dword [edi + 0x2574], eax
push 0x497d00
lea ecx, [edi + 0x21ec]
call fcn.00404090
push 0xb
push 0x497d08
lea ecx, [edi + 0x2208]
call fcn.00404090
push 7
push 0x497d14
lea ecx, [edi + 0x2224]
call fcn.00404090
push 7
push 0x497d1c
lea ecx, [edi + 0x2240]
call fcn.00404090
lea ebp, [edi + 0x225c]
mov dword [esp + 0x10], 0x1c
push 0xc
push 0x497d24
mov ecx, ebp
call fcn.00404090
add ebp, 0x1c
sub dword [esp + 0x10], 1
jne 0x42cf00
fldz
mov dword [edi + 0x219c], ebx
mov dword [edi + 0x21a0], ebx
mov dword [edi + 0x21a4], ebx
mov dword [edi + 0x21a8], ebx
fstp dword [edi + 0x21cc]
fld dword [0x499b80]
push 9
push str.NO_ENTRY.
fstp dword [edi + 0x21d0]
mov ecx, esi
mov byte [edi + 0x2178], bl
mov byte [edi + 0x2179], bl
mov byte [edi + 0x21c0], 1
mov byte [edi + 0x21c1], bl
mov dword [edi + 0x21c4], ebx
mov byte [edi + 0x21c8], bl
mov byte [edi + 0x21dc], bl
mov dword [edi + 0x21e0], 0xa
mov dword [edi + 0x21e4], 0x1e
mov dword [edi + 0x25b0], ebx
mov byte [edi + 0x217a], 1
mov byte [edi + 0x217b], 1
mov byte [edi + 0x217c], 1
call fcn.00404090
push 9
push str.GAME_OVER
lea ecx, [edi + 0x1ed4]
mov byte [edi + 0x2579], bl
mov byte [edi + 0x257a], bl
mov byte [edi + 0x257b], bl
call fcn.00404090
push 0xc
push str.CONTINUE___d
lea ecx, [edi + 0x1ef0]
call fcn.00404090
push 4
push str._02d
lea ecx, [edi + 0x1f0c]
call fcn.00404090
push 5
push str.PAUSE
lea ecx, [edi + 0x1f28]
call fcn.00404090
mov ecx, dword [esp + 0x24]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x20
ret 4