Function at 0x418b00
Capabilities:
Check for time delay via gettickcount
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4eaf7c
mov eax, dword fs:[0]
push eax
mov eax, 0x1530
call fcn.004bec10
mov eax, dword [0x5383c4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x150]
push 6
mov dword [ebp - 0x150], 0
push str._rand_
mov dword [ebp - 0x151c], ebx
mov dword [ebp - 0x140], 0
mov dword [ebp - 0x13c], 0xf
mov byte [ebp - 0x150], 0
call fcn.00403ee0
cmp dword [ebp - 0x13c], 0x10
lea eax, [ebx + 0x30]
mov edx, dword [ebp - 0x150]
lea edi, [ebp - 0x150]
cmovae edi, edx
mov dword [ebp - 4], 0
cmp dword [eax + 0x14], 0x10
mov ecx, eax
mov dword [ebp - 0x1510], eax
jb 0x418ba8
mov ecx, dword [eax]
mov dword [ebp - 0x1510], ecx
mov eax, dword [eax + 0x10]
mov esi, dword [ebp - 0x140]
cmp esi, eax
ja 0x419572
sub eax, esi
test esi, esi
je 0x419572
movsx edx, byte [edi]
inc eax
add eax, ecx
mov dword [ebp - 0x150c], edx
mov dword [ebp - 0x1514], eax
sub eax, ecx
push eax
push edx
push ecx
call fcn.004c1380
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x41956c
nop dword [eax]
mov ecx, ebx
mov edx, edi
sub esi, 4
jb 0x418c11
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x418c16
add ecx, 4
add edx, 4
sub esi, 4
jae 0x418c00
cmp esi, 0xfffffffc
je 0x418c4a
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x418c43
cmp esi, 0xfffffffd
je 0x418c4a
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x418c43
cmp esi, 0xfffffffe
je 0x418c4a
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x418c43
cmp esi, 0xffffffff
je 0x418c4a
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x418c4a
sbb eax, eax
or eax, 1
jmp 0x418c4c
xor eax, eax
test eax, eax
je 0x418c7e
mov eax, dword [ebp - 0x1514]
inc ebx
sub eax, ebx
push eax
push dword [ebp - 0x150c]
push ebx
call fcn.004c1380
mov esi, dword [ebp - 0x140]
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x418bf0
jmp 0x41956c
sub ebx, dword [ebp - 0x1510]
mov dword [ebp - 0x150c], ebx
test ebx, ebx
jle 0x41956c
mov ebx, dword [ebp - 0x151c]
cmp dword [ebx + 0x88], 0
je 0x41956c
cmp dword [ebx + 0x8c], 0x10
lea edx, [ebx + 0x78]
jb 0x418cb3
mov edx, dword [edx]
mov ecx, edx
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
lea esi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x418ce0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x12c]
call fcn.00403ee0
cmp dword [ebx + 0xa4], 0x10
lea edx, [ebx + 0x90]
mov byte [ebp - 4], 1
jb 0x418d0b
mov edx, dword [edx]
mov ecx, edx
mov dword [ebp - 0x180], 0
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x16c], 0xf
mov byte [ebp - 0x180], 0
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x418d35
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x180]
call fcn.00403ee0
mov eax, dword [ebp - 0x118]
lea ebx, [ebp - 0x12c]
mov edx, dword [ebp - 0x12c]
cmp eax, 0x10
mov edi, dword [ebp - 0x11c]
cmovae ebx, edx
mov byte [ebp - 4], 2
cmp edi, 1
jb 0x418de2
push edi
push 0x2d
push ebx
lea esi, [edi + ebx]
call fcn.004c1380
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0x418dbe
mov eax, dword [ebp - 0x150c]
mov dword [ebp - 0x150c], eax
movzx eax, byte [ecx]
cmp al, 0x2d
jne 0x418d9e
xor eax, eax
jmp 0x418da3
sbb eax, eax
or eax, 1
test eax, eax
je 0x418dcc
inc ecx
mov eax, esi
sub eax, ecx
push eax
push 0x2d
push ecx
call fcn.004c1380
mov ecx, eax
add esp, 0xc
test ecx, ecx
jne 0x418d93
mov eax, dword [ebp - 0x118]
mov edx, dword [ebp - 0x12c]
jmp 0x418dee
sub ecx, ebx
je 0x419556
mov eax, dword [ebp - 0x118]
mov edx, dword [ebp - 0x12c]
jmp 0x418df1
mov esi, dword [ebp - 0x150c]
mov dword [ebp - 0x150c], esi
or ecx, 0xffffffff
cmp ecx, edi
jae 0x419556
cmp eax, 0x10
lea esi, [ebp - 0x12c]
cmovae esi, edx
cmp edi, 1
jb 0x418e50
push edi
push 0x2d
push esi
lea ebx, [edi + esi]
call fcn.004c1380
mov edx, eax
add esp, 0xc
test edx, edx
je 0x418e50
nop
movzx ecx, byte [edx]
cmp cl, 0x2d
jne 0x418e2c
xor eax, eax
jmp 0x418e31
sbb eax, eax
or eax, 1
test eax, eax
je 0x418ecc
inc edx
mov eax, ebx
sub eax, edx
push eax
push 0x2d
push edx
call fcn.004c1380
mov edx, eax
add esp, 0xc
test edx, edx
jne 0x418e20
or edx, 0xffffffff
push edx
push 0
lea eax, [ebp - 0x168]
push eax
lea ecx, [ebp - 0x12c]
call fcn.00403110
cmp dword [eax + 0x14], 0x10
jb 0x418e70
mov eax, dword [eax]
push eax
call fcn.004caa9e
add esp, 4
mov dword [ebp - 0x1510], eax
lea ecx, [ebp - 0x168]
call fcn.004043a0
cmp dword [ebp - 0x118], 0x10
lea ebx, [ebp - 0x12c]
mov edi, dword [ebp - 0x11c]
cmovae ebx, dword [ebp - 0x12c]
cmp edi, 1
jb 0x418ef1
push edi
push 0x2d
push ebx
call fcn.004c1380
mov esi, eax
add esp, 0xc
test esi, esi
je 0x418ef1
nop dword [eax + eax]
movzx ecx, byte [esi]
cmp cl, 0x2d
jne 0x418ed0
xor eax, eax
jmp 0x418ed5
sub edx, esi
jmp 0x418e53
sbb eax, eax
or eax, 1
test eax, eax
je 0x418f2c
inc esi
lea eax, [edi + ebx]
sub eax, esi
push eax
push 0x2d
push esi
call fcn.004c1380
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x418ec0
or esi, 0xffffffff
cmp dword [ebp - 0x118], 0x10
lea ebx, [ebp - 0x12c]
cmovae ebx, dword [ebp - 0x12c]
cmp edi, 1
jb 0x418f55
push edi
push 0x2d
push ebx
call fcn.004c1380
mov edx, eax
add esp, 0xc
test edx, edx
je 0x418f55
nop
movzx ecx, byte [edx]
cmp cl, 0x2d
jne 0x418f30
xor eax, eax
jmp 0x418f35
sub esi, ebx
jmp 0x418ef4
sbb eax, eax
or eax, 1
test eax, eax
je 0x419097
inc edx
lea eax, [edi + ebx]
sub eax, edx
push eax
push 0x2d
push edx
call fcn.004c1380
mov edx, eax
add esp, 0xc
test edx, edx
jne 0x418f20
or edx, 0xffffffff
sub edi, esi
lea eax, [edx + 1]
dec edi
lea ecx, [ebp - 0x12c]
push edi
push eax
lea eax, [ebp - 0x168]
push eax
call fcn.00403110
cmp dword [eax + 0x14], 0x10
jb 0x418f7a
mov eax, dword [eax]
push eax
call fcn.004caa9e
add esp, 4
lea ecx, [ebp - 0x168]
mov ebx, eax
mov dword [ebp - 0x1524], ebx
call fcn.004043a0
mov edi, dword [ebp - 0x1510]
cmp ebx, edi
jle 0x419556
xorps xmm0, xmm0
mov dword [ebp - 0x130], 0
movq qword [ebp - 0x138], xmm0
mov dword [ebp - 0x138], 0
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0
cmp dword [ebp - 0x16c], 0x10
lea eax, [ebp - 0x180]
push 0x4f02a0
cmovae eax, dword [ebp - 0x180]
lea ecx, [ebp - 0x1515]
push eax
lea eax, [ebp - 0x138]
mov byte [ebp - 4], 3
push eax
call fcn.00412140
lea eax, [ebp - 0x1508]
mov dword [ebp - 0x152c], 0x20
mov dword [ebp - 0x1530], eax
mov dword [ebp - 0x1528], 0xffffffff
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x184], 0xffffffff
mov edx, 1
mov dword [ebp - 0x1504], eax
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [ebp + edx*4 - 0x1504], eax
inc edx
cmp edx, 0x270
jb 0x419042
lea ecx, [edi - 0x80000000]
mov esi, 0x270
lea eax, [ebx - 0x80000000]
mov dword [ebp - 0x1508], esi
sub eax, ecx
mov dword [ebp - 0x1520], eax
cmp eax, 0xffffffff
jne 0x41909e
lea ecx, [ebp - 0x1530]
call fcn.004199c0
mov edx, eax
jmp 0x41928e
sub edx, ebx
jmp 0x418f58
lea ecx, [eax + 1]
mov dword [ebp - 0x1514], ecx
xor edi, edi
xor ebx, ebx
test eax, eax
je 0x41924c
mov ecx, dword [ebp - 0x150c]
mov dword [ebp - 0x150c], ecx
cmp esi, 0x270
jne 0x419117
lea eax, [ebp - 0x1500]
mov dword [ebp - 0x150c], ecx
mov edx, dword [eax - 4]
lea eax, [eax + 4]
xor edx, dword [eax - 4]
and edx, 0x7fffffff
xor edx, dword [eax - 8]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [eax + 0x62c]
xor ecx, edx
mov dword [eax + 0x9b8], ecx
sub esi, 1
jne 0x4190d3
mov esi, dword [ebp - 0x1508]
jmp 0x419209
cmp esi, 0x4e0
jb 0x419209
mov eax, dword [ebp - 0xb44]
lea edi, [ebp - 0xb44]
mov ebx, 0xe3
mov dword [ebp - 0x150c], ecx
nop word [eax + eax]
mov ecx, dword [edi + 4]
lea edx, [edi + 4]
xor ecx, eax
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edi + 0x634]
xor eax, ecx
mov dword [edi - 0x9c0], eax
lea edi, [edx]
mov eax, dword [edx]
sub ebx, 1
jne 0x419140
mov eax, dword [ebp - 0x7b8]
lea edi, [ebp - 0x7b8]
mov ebx, 0x18c
nop word [eax + eax]
mov ecx, dword [edi + 4]
lea edx, [edi + 4]
xor ecx, eax
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edi - 0xd4c]
xor eax, ecx
mov dword [edi - 0x9c0], eax
lea edi, [edx]
mov eax, dword [edx]
sub ebx, 1
jne 0x419190
mov ecx, dword [ebp - 0x1504]
xor ecx, dword [ebp - 0x188]
and ecx, 0x7fffffff
xor ecx, dword [ebp - 0x188]
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 [ebp - 0xed4]
xor esi, esi
mov dword [ebp - 0xb48], eax
mov dword [ebp - 0x1508], esi
mov ecx, dword [ebp + esi*4 - 0x1504]
mov eax, ecx
shr eax, 0xb
inc esi
and eax, dword [ebp - 0x184]
xor ecx, eax
mov dword [ebp - 0x1508], esi
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov edi, ecx
shr edi, 0x12
xor edi, ecx
mov ecx, dword [ebp - 0x1514]
or ebx, 0xffffffff
xor edx, edx
mov eax, ebx
div ecx
xor edx, edx
mov ecx, eax
mov eax, edi
div dword [ebp - 0x1514]
cmp eax, ecx
mov ecx, dword [ebp - 0x1514]
jb 0x41927c
xor edx, edx
mov eax, ebx
div ecx
mov eax, dword [ebp - 0x1520]
cmp edx, eax
jne 0x4190a7
mov ebx, dword [ebp - 0x1524]
mov eax, edi
mov edi, dword [ebp - 0x1510]
xor edx, edx
div ecx
mov esi, dword [ebp - 0x138]
lea eax, [edi - 0x80000000]
add eax, edx
cmp eax, 0x80000000
lea ecx, [eax - 0x80000000]
lea edi, [eax - 0x80000000]
cmovae edi, ecx
cmp esi, dword [ebp - 0x134]
je 0x419336
nop dword [eax + eax]
push esi
lea ecx, [ebp - 0x168]
call fcn.004034b0
cmp dword [ebp - 0x154], 0x10
lea eax, [ebp - 0x168]
cmovae eax, dword [ebp - 0x168]
push eax
call fcn.004caa9e
mov ecx, dword [ebp - 0x154]
add esp, 4
cmp edi, eax
je 0x419449
cmp ecx, 0x10
jb 0x41932b
mov edx, dword [ebp - 0x168]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x419321
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c0
push ecx
push edx
call fcn.004bec6b
add esp, 8
add esi, 0x18
cmp esi, dword [ebp - 0x134]
jne 0x4192c0
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.004c0a60
mov edx, dword [ebp - 0x151c]
add esp, 0xc
mov ecx, dword [ebp - 0x140]
mov ebx, dword [ebp - 0x150c]
mov eax, dword [edx + 0x40]
sub eax, ecx
sub eax, ebx
push eax
lea eax, [ecx + ebx]
push eax
lea eax, [ebp - 0x153c]
push eax
lea ecx, [edx + 0x30]
call fcn.00403110
mov esi, eax
push ebx
mov ebx, dword [ebp - 0x151c]
lea eax, [ebp - 0x168]
push 0
push eax
mov byte [ebp - 4], 4
lea ecx, [ebx + 0x30]
call fcn.00403110
cmp dword [esi + 0x14], 0x10
jb 0x41939f
mov esi, dword [esi]
cmp dword [eax + 0x14], 0x10
jb 0x4193a7
mov eax, dword [eax]
push esi
push edi
push eax
lea eax, [ebp - 0x114]
push str._s_d_s
push eax
call fcn.0040f1b0
mov ecx, dword [ebp - 0x154]
add esp, 0x14
cmp ecx, 0x10
jb 0x4193f8
mov edx, dword [ebp - 0x168]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4193ee
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c0
push ecx
push edx
call fcn.004bec6b
add esp, 8
mov ecx, dword [ebp - 0x1528]
mov dword [ebp - 0x158], 0
mov dword [ebp - 0x154], 0xf
mov byte [ebp - 0x168], 0
mov byte [ebp - 4], 3
cmp ecx, 0x10
jb 0x41949c
mov edx, dword [ebp - 0x153c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x419492
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c0
jmp 0x419492
mov edi, dword [ebp - 0x1510]
cmp ecx, 0x10
jb 0x419027
mov edx, dword [ebp - 0x168]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41947d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c0
push ecx
push edx
call fcn.004bec6b
mov edi, dword [ebp - 0x1510]
add esp, 8
jmp 0x419027
push ecx
push edx
call fcn.004bec6b
add esp, 8
lea edx, [ebp - 0x114]
lea esi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x4194a5
sub edx, esi
lea eax, [ebp - 0x114]
push edx
push eax
lea ecx, [ebx + 0x30]
call fcn.00403ee0
lea ecx, [ebp - 0x138]
call fcn.00404ec0
mov ecx, dword [ebp - 0x16c]
cmp ecx, 0x10
jb 0x419503
mov edx, dword [ebp - 0x180]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4194f9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c5
push ecx
push edx
call fcn.004bec6b
add esp, 8
mov ecx, dword [ebp - 0x118]
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x16c], 0xf
mov byte [ebp - 0x180], 0
cmp ecx, 0x10
jb 0x41956c
mov edx, dword [ebp - 0x12c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41954a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195c5
push ecx
push edx
call fcn.004bec6b
add esp, 8
jmp 0x41956c
lea ecx, [ebp - 0x180]
call fcn.004043a0
lea ecx, [ebp - 0x12c]
call fcn.004043a0
mov edx, dword [ebp - 0x150]
mov eax, dword [ebp - 0x13c]
cmp eax, 0x10
jb 0x4195a4
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x41959a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4195ca
push ecx
push edx
call fcn.004bec6b
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004bebdd
mov esp, ebp
pop ebp
ret
call fcn.004c8fd6
call fcn.004c8fd6
call fcn.004c8fd6
int3