Function at 0x522e44
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff50
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0x90], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x10]
call fcn.00403fd8
mov ecx, 0x14
lea eax, [ebp - 0x88]
mov edx, dword [0x4010c4]
call fcn.0040446c
xor eax, eax
push ebp
push 0x523d6c
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x10]
call fcn.00403e24
test eax, eax
je 0x523d1b
mov byte [ebp - 0x21], 0
cmp dword [ebp - 8], 0
jne 0x522ed2
mov eax, dword [ebp - 0xc]
call fcn.005453a4
and eax, 0xff
imul eax, eax, 0xf7
mov eax, dword [eax + 0x551142]
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0x10]
mov eax, 0x523d84
call fcn.0040410c
test eax, eax
setg byte [ebp - 1]
cmp byte [ebp - 1], 0
je 0x522efd
cmp byte [0x55126e], 0
jne 0x522f10
cmp byte [0x551365], 0
jne 0x522f10
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
cmp byte [eax + 0x551177], 0
je 0x522f2a
push 0
mov ecx, dword [0x551574]
mov edx, 0x523d94
mov eax, dword [ebp - 0xc]
call fcn.0051ef74
jmp 0x523d1b
mov dl, 1
mov eax, dword [0x40f418]
call fcn.00402f14
mov dword [ebp - 0x30], eax
mov dl, 1
mov eax, dword [0x40f418]
call fcn.00402f14
mov dword [ebp - 0x2c], eax
mov dl, 1
mov eax, dword [0x40f418]
call fcn.00402f14
mov dword [ebp - 0x34], eax
mov eax, dword [0x551410]
cmp eax, 0xf4fd0171
jg 0x522f97
je 0x523d1b
sub eax, 0x852f3e33
je 0x523d1b
sub eax, 0x30105f4c
je 0x523d1b
sub eax, 0x315e3180
je 0x523d1b
sub eax, 0x6fb29d6
je 0x523d1b
jmp 0x522fc3
sub eax, 0x13857c5e
je 0x523d1b
sub eax, 0x7b88217
je 0x523d1b
sub eax, 0xe6b098d
je 0x523d1b
sub eax, 0x515a1d3d
je 0x523d1b
xor edx, edx
push ebp
push 0x523d11
push dword fs:[edx]
mov dword fs:[edx], esp
xor ebx, ebx
push 0
mov eax, dword [ebp - 8]
mov cl, byte [eax + 0xc]
dec ecx
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
mov eax, dword [ebp - 0xc]
call fcn.0053b7a8
cmp byte [ebp - 1], 0
je 0x52300c
mov cl, 1
mov dl, 1
mov eax, dword [ebp - 0xc]
call fcn.00511344
mov cl, 1
mov dl, 2
mov eax, dword [ebp - 0xc]
call fcn.00511344
jmp 0x52301c
mov eax, dword [ebp - 8]
mov dl, byte [eax + 0xc]
mov cl, 1
mov eax, dword [ebp - 0xc]
call fcn.00511344
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
jmp 0x523623
lea ecx, [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov esi, dword [eax]
call dword [esi + 0xc]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x44]
mov eax, dword [ebp - 0x20]
call fcn.00403e24
cmp eax, 2
jle 0x523148
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x5b
jne 0x523148
mov eax, dword [ebp - 0x20]
call fcn.00403e24
mov edx, dword [ebp - 0x20]
cmp byte [edx + eax - 1], 0x5d
jne 0x523148
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
call fcn.00403c40
lea eax, [ebp - 0x1c]
mov ecx, 1
mov edx, 1
call fcn.00404068
mov eax, dword [ebp - 0x1c]
call fcn.00403e24
mov edx, eax
lea eax, [ebp - 0x1c]
mov ecx, 1
call fcn.00404068
lea eax, [ebp - 0x8c]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [0x5511ac]
call fcn.00403e70
mov eax, dword [ebp - 0x8c]
call fcn.00456fb8
test al, al
je 0x523148
mov dl, 1
mov eax, dword [0x40f418]
call fcn.00402f14
mov esi, eax
lea eax, [ebp - 0x8c]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [0x5511ac]
call fcn.00403e70
mov edx, dword [ebp - 0x8c]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x52313c
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x8c]
mov edx, dword [ebp - 0x14]
mov eax, esi
mov edi, dword [eax]
call dword [edi + 0xc]
mov ecx, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x30]
mov edi, dword [eax]
call dword [edi + 0x54]
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x523113
mov eax, esi
call fcn.00402f44
jmp 0x523623
mov eax, dword [ebp - 0x20]
mov edx, 0x523df8
call fcn.00403f34
jne 0x5231c5
cmp dword [0x551410], 0xe69dceff
jne 0x52316d
call fcn.004036bc
jmp 0x523d1b
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax]
call dword [edx + 0x40]
jmp 0x5231b7
lea ecx, [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov esi, dword [eax]
call dword [esi + 0xc]
mov eax, dword [ebp - 0x20]
mov edx, 0x523e04
call fcn.00403f34
je 0x52319e
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx + 0x34]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x44]
mov eax, dword [ebp - 0x20]
mov edx, 0x523e04
call fcn.00403f34
je 0x5231d0
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x523177
jmp 0x5231d0
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
lea edx, [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
jmp 0x523334
mov byte [ebp - 0x21], 1
mov edx, dword [ebp - 0x20]
mov eax, 0x523e10
call fcn.0040410c
test eax, eax
jle 0x5232bc
lea eax, [ebp - 0x28]
push eax
mov edx, dword [ebp - 0x20]
mov eax, 0x523e1c
call fcn.0040410c
mov esi, eax
mov edx, dword [ebp - 0x20]
mov eax, 0x523e10
call fcn.0040410c
inc eax
sub esi, eax
push esi
mov edx, dword [ebp - 0x20]
mov eax, 0x523e10
call fcn.0040410c
mov edx, eax
add edx, 2
mov eax, dword [ebp - 0x20]
pop ecx
call fcn.00404028
push 1
lea eax, [ebp - 0x8c]
push eax
mov ecx, dword [0x54e6e4]
mov ecx, dword [ecx]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
push 1
lea eax, [ebp - 0x8c]
push eax
mov ecx, dword [0x54e6e4]
mov ecx, dword [ecx]
mov edx, 0x523e1c
mov eax, dword [ebp - 0x28]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x28]
call fcn.00403c40
push 1
lea eax, [ebp - 0x8c]
push eax
mov ecx, dword [0x54e6e4]
mov ecx, dword [ecx]
mov edx, 0x523e28
mov eax, dword [ebp - 0x28]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x28]
call fcn.00403c40
jmp 0x5232c9
lea eax, [ebp - 0x28]
mov edx, 0x523e34
call fcn.00403c40
inc ebx
lea eax, [ebp + ebx*4 - 0x8c]
push eax
push 0
push 0
xor ecx, ecx
mov edx, dword [ebp - 0x28]
mov eax, 0x523e50
call fcn.00453800
test al, al
je 0x5232ff
mov eax, dword [ebp + ebx*4 - 0x8c]
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
call fcn.00403f34
jne 0x523309
call fcn.004036bc
jmp 0x523d1b
push 1
lea eax, [ebp - 0x8c]
push eax
mov ecx, dword [ebp + ebx*4 - 0x8c]
mov edx, 0x523e60
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
mov edx, dword [ebp - 0x20]
mov eax, 0x523e60
call fcn.0040410c
test eax, eax
jg 0x5231e0
cmp byte [ebp - 0x21], 0
je 0x5233ee
mov dword [ebp - 0x18], 0x14
lea esi, [ebp - 0x3c]
lea edx, [ebp - 0x90]
mov eax, dword [ebp - 0x18]
call fcn.00408e3c
mov ecx, dword [ebp - 0x90]
lea eax, [ebp - 0x8c]
mov edx, 0x523e6c
call fcn.00403e70
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x20]
call fcn.0040410c
test eax, eax
jle 0x5233de
push 1
lea eax, [ebp - 0x8c]
push eax
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 0x18]
call fcn.00408e3c
mov ecx, dword [ebp - 0x8c]
lea eax, [ebp - 0x90]
mov edx, 0x523e6c
call fcn.00403e70
mov edx, dword [ebp - 0x90]
mov ecx, dword [esi]
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
dec dword [ebp - 0x18]
sub esi, 4
cmp dword [ebp - 0x18], 0
jne 0x52335d
push 0
lea eax, [ebp - 0x8c]
push eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x434]
mov edx, 0x523e78
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
push 0
lea eax, [ebp - 0x8c]
push eax
call fcn.00430028
lea edx, [ebp - 0x90]
call fcn.0042fb48
mov ecx, dword [ebp - 0x90]
mov edx, 0x523e84
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
mov eax, dword [eax + 0x55112e]
call fcn.0047bde0
test eax, eax
je 0x5235c5
mov edx, dword [ebp - 0x20]
mov eax, 0x523e90
call fcn.0040410c
test eax, eax
jg 0x5234a9
mov edx, dword [ebp - 0x20]
mov eax, 0x523e9c
call fcn.0040410c
test eax, eax
jg 0x5234a9
mov edx, dword [ebp - 0x20]
mov eax, 0x523ea8
call fcn.0040410c
test eax, eax
jle 0x5235c5
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
mov byte [eax + 0x5511cb], 1
mov eax, dword [eax + 0x55112e]
call fcn.0047d290
mov esi, eax
test esi, esi
je 0x5235b2
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x9c], eax
mov edi, dword [esi + 0xc]
mov eax, dword [edi + 0x1d]
mov dword [ebp - 0x98], eax
mov eax, dword [edi + 0x21]
mov dword [ebp - 0x94], eax
lea eax, [ebp - 0x9c]
push eax
push 2
lea eax, [ebp - 0x8c]
push eax
mov eax, 0x523e90
mov dword [ebp - 0xa8], eax
mov eax, 0x523e9c
mov dword [ebp - 0xa4], eax
mov eax, 0x523ea8
mov dword [ebp - 0xa0], eax
lea edx, [ebp - 0xa8]
mov ecx, 2
mov eax, dword [ebp - 0x20]
call fcn.004c852c
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x52357e
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x8c]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x2c]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax]
call dword [ecx + 0x34]
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x523557
push ebp
call fcn.00522e08
pop ecx
test al, al
jne 0x5235b2
mov al, byte [0x523eac]
push eax
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
mov eax, dword [eax + 0x55112e]
mov cl, 4
mov edx, esi
call fcn.0047d40c
mov esi, eax
test esi, esi
jne 0x5234cf
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
mov byte [eax + 0x5511cb], 0
jmp 0x52360f
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x52360f
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x8c]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x2c]
mov esi, dword [eax]
call dword [esi + 0xc]
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax]
call dword [ecx + 0x34]
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x5235e8
cmp byte [0x5513c8], 0
jne 0x523633
push ebp
call fcn.00522e08
pop ecx
test al, al
jne 0x523633
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x52302c
cmp byte [0x5513c8], 0
jne 0x523647
push ebp
call fcn.00522e08
pop ecx
test al, al
je 0x523651
call fcn.004036bc
jmp 0x523d1b
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x523c53
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x20]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
mov ebx, dword [eax]
call dword [ebx + 0xc]
jmp 0x523838
lea eax, [ebp - 0x28]
push eax
mov edx, dword [ebp - 0x20]
mov eax, 0x523e1c
call fcn.0040410c
mov ebx, eax
mov edx, dword [ebp - 0x20]
mov eax, 0x523eb8
call fcn.0040410c
inc eax
sub ebx, eax
sub ebx, 2
push ebx
mov edx, dword [ebp - 0x20]
mov eax, 0x523eb8
call fcn.0040410c
mov edx, eax
add edx, 3
mov eax, dword [ebp - 0x20]
pop ecx
call fcn.00404028
mov byte [ebp - 0x21], 0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0xc]
dec eax
jne 0x5236e4
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.0053f504
mov eax, dword [ebp - 0xc]
mov edi, dword [eax + 0x664]
jmp 0x5236f7
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.0053f6a0
mov eax, dword [ebp - 0xc]
mov edi, dword [eax + 0x668]
mov eax, dword [edi + 0x28]
call fcn.0044df90
mov esi, eax
dec esi
sub esi, 2
jl 0x5237e8
inc esi
mov ebx, 2
mov eax, dword [edi + 0x28]
mov edx, ebx
call fcn.0044dfa0
mov eax, dword [eax + 0x24]
lea edx, [ebp - 0x8c]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
push eax
lea edx, [ebp - 0x90]
mov eax, dword [ebp - 0x28]
call fcn.004088d0
mov edx, dword [ebp - 0x90]
pop eax
call fcn.00403f34
jne 0x5237e0
mov byte [ebp - 0x21], 1
mov eax, dword [edi + 0x28]
mov edx, ebx
call fcn.0044dfa0
mov edx, dword [eax + 0x4c]
lea eax, [ebp - 0x1c]
call fcn.00403c40
mov edx, dword [ebp - 0x1c]
mov eax, 0x523ec4
call fcn.0040410c
test eax, eax
jle 0x52379b
lea eax, [ebp - 0x1c]
push eax
mov edx, dword [ebp - 0x1c]
mov eax, 0x523ec4
call fcn.0040410c
mov ecx, eax
dec ecx
mov edx, 1
mov eax, dword [ebp - 0x1c]
call fcn.00404028
push 1
lea eax, [ebp - 0x8c]
push eax
push 0x523eb8
push dword [ebp - 0x28]
push 0x523e1c
lea eax, [ebp - 0x90]
mov edx, 3
call fcn.00403ee4
mov edx, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
inc ebx
dec esi
jne 0x523711
cmp byte [ebp - 0x21], 0
jne 0x523838
push 1
lea eax, [ebp - 0x8c]
push eax
push 0x523eb8
push dword [ebp - 0x28]
push 0x523e1c
lea eax, [ebp - 0x90]
mov edx, 3
call fcn.00403ee4
mov edx, dword [ebp - 0x90]
mov ecx, dword [0x54e6e4]
mov ecx, dword [ecx]
mov eax, dword [ebp - 0x20]
call fcn.004532d0
mov edx, dword [ebp - 0x8c]
lea eax, [ebp - 0x20]
call fcn.00403c40
mov edx, dword [ebp - 0x20]
mov eax, 0x523eb8
call fcn.0040410c
test eax, eax
jg 0x523680
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 0x20]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523ed0
call fcn.00403f34
jne 0x5238a1
mov eax, dword [ebp - 8]
imul eax, dword [eax + 0xc], 0xf7
cmp dword [eax + 0x5511b5], 0
jne 0x5238a1
mov dl, 1
mov eax, dword [0x40f418]
call fcn.00402f14
mov edx, dword [ebp - 8]
imul edx, dword [edx + 0xc], 0xf7
mov dword [edx + 0x5511b5], eax
jmp 0x523c33
lea eax, [ebp - 0x90]
push eax
mov ecx, 4
mov edx, 1
mov eax, dword [ebp - 0x20]
call fcn.00404028
mov eax, dword [ebp - 0x90]
lea edx, [ebp - 0x8c]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523ee0
call fcn.00403f34
jne 0x523906
lea eax, [ebp - 0x20]
mov ecx, 4
mov edx, 1
call fcn.00404068
push 0
push 1
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.0053ac1c
jmp 0x523c33
lea eax, [ebp - 0x90]
push eax
mov ecx, 7
mov edx, 1
mov eax, dword [ebp - 0x20]
call fcn.00404028
mov eax, dword [ebp - 0x90]
lea edx, [ebp - 0x8c]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523d84
call fcn.00403f34
jne 0x523969
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4ac]
cmp eax, dword [ebp - 8]
jne 0x523961
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x4b0]
mov dword [ebp - 8], eax
jmp 0x523c33
mov dword [ebp - 8], eax
jmp 0x523c33
lea eax, [ebp - 0x90]
push eax
mov ecx, 5
mov edx, 1
mov eax, dword [ebp - 0x20]
call fcn.00404028
mov eax, dword [ebp - 0x90]
lea edx, [ebp - 0x8c]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523ef0
call fcn.00403f34
jne 0x523a82
lea eax, [ebp - 0x20]
mov ecx, 1
mov edx, 1
call fcn.00404068
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x434]
mov eax, dword [ebp - 8]
mov dl, byte [eax + 0xc]
mov eax, dword [ebp - 0xc]
call fcn.0052f75c
mov eax, dword [ebp - 0x20]
call fcn.00403e24
cmp eax, 4
jle 0x5239f3
lea eax, [ebp - 0x20]
mov ecx, 5
mov edx, 1
call fcn.00404068
jmp 0x523a00
lea eax, [ebp - 0x20]
mov edx, 0x523f00
call fcn.00403c40
push 1
mov eax, dword [ebp - 0x20]
push eax
xor ecx, ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.005283bc
mov eax, dword [ebp - 8]
imul ebx, dword [eax + 0xc], 0xf7
cmp dword [ebx + 0x5511b5], 0
je 0x523c33
mov eax, dword [ebx + 0x55118c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
test esi, esi
jl 0x523c33
inc esi
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0x8c]
mov eax, dword [ebp - 8]
imul ebx, dword [eax + 0xc], 0xf7
mov eax, dword [ebx + 0x55118c]
mov edx, dword [ebp - 0x18]
mov edi, dword [eax]
call dword [edi + 0xc]
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebx + 0x5511b5]
mov ecx, dword [eax]
call dword [ecx + 0x34]
inc dword [ebp - 0x18]
dec esi
jne 0x523a48
jmp 0x523c33
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 0x20]
call fcn.004088d0
mov edx, dword [ebp - 0x8c]
mov eax, 0x523f0c
call fcn.0040410c
dec eax
jne 0x523b00
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x434]
mov eax, dword [ebp - 8]
mov dl, byte [eax + 0xc]
mov eax, dword [ebp - 0xc]
call fcn.0052f75c
mov eax, dword [ebp - 0x20]
call fcn.00403e24
cmp eax, 4
jle 0x523adb
lea eax, [ebp - 0x20]
mov ecx, 5
mov edx, 1
call fcn.00404068
jmp 0x523ae8
lea eax, [ebp - 0x20]
mov edx, 0x523f00
call fcn.00403c40
push 1
mov eax, dword [ebp - 0x20]
push eax
xor ecx, ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.005283bc
jmp 0x523c33
lea edx, [ebp - 0x8c]
mov eax, dword [ebp - 0x20]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523f1c
call fcn.00403f34
jne 0x523b55
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.0051eb24
mov dl, 3
mov eax, dword [ebp - 0xc]
call fcn.0053aefc
mov al, byte [0x551624]
or al, byte [0x5513c8]
jne 0x523c33
push ebp
call fcn.00522e08
pop ecx
test al, al
je 0x523b2a
jmp 0x523c33
lea eax, [ebp - 0x90]
push eax
mov ecx, 5
mov edx, 1
mov eax, dword [ebp - 0x20]
call fcn.00404028
mov eax, dword [ebp - 0x90]
lea edx, [ebp - 0x8c]
call fcn.004088d0
mov eax, dword [ebp - 0x8c]
mov edx, 0x523f2c
call fcn.00403f34
jne 0x523c26
lea eax, [ebp - 0x20]
mov ecx, 6
mov edx, 1
call fcn.00404068
push 0
lea eax, [ebp - 0x8c]
push eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0xb0], eax
mov byte [ebp - 0xac], 0xb
lea edx, [ebp - 0xb0]
xor ecx, ecx
mov eax, 0x523f3c
call fcn.00409f00
mov edx, dword [ebp - 0x8c]
mov ecx, dword [0x551578]
mov eax, dword [ebp - 0xc]
call fcn.0051ef74
xor edx, edx
mov eax, dword [ebp - 0x20]
call fcn.00409014
imul ebx, eax, 0x3e8
call sub.kernel32.dll_GetTickCount
add ebx, eax
mov dl, 1
mov eax, dword [ebp - 0xc]
call fcn.0053aefc
call sub.kernel32.dll_GetTickCount
cmp ebx, eax
setle al
or al, byte [0x5513c8]
jne 0x523c33
push ebp
call fcn.00522e08
pop ecx
test al, al
je 0x523bfd
jmp 0x523c33
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 8]
call fcn.00493b54
cmp byte [0x5513c8], 0
jne 0x523c53
push ebp
call fcn.00522e08
pop ecx
test al, al
jne 0x523c53
inc dword [ebp - 0x14]
dec dword [ebp - 0x38]
jne 0x52366d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x523d1b
mov eax, dword [ebp - 0x30]
call fcn.00402f44
mov eax, dword [ebp - 0x2c]
call fcn.00402f44
mov eax, dword [ebp - 0x34]
call fcn.00402f44
mov eax, dword [0x5512ac]
test eax, eax
je 0x523cac
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
push edx
push 0
push 0
push 0
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 0xc]
call fcn.00522abc
mov eax, 0x5512ac
call fcn.00455580
mov eax, dword [0x5513a3]
test eax, eax
je 0x523ce0
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
push edx
push 0
push 0
push 0
mov edx, dword [0x54e6e4]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 0xc]
call fcn.00522abc
mov eax, 0x5513a3
call fcn.00455580
cmp byte [ebp - 1], 0
je 0x523d00
xor ecx, ecx
mov dl, 1
mov eax, dword [ebp - 0xc]
call fcn.00511344
xor ecx, ecx
mov dl, 2
mov eax, dword [ebp - 0xc]
call fcn.00511344
jmp 0x523d10
mov eax, dword [ebp - 8]
mov dl, byte [eax + 0xc]
xor ecx, ecx
mov eax, dword [ebp - 0xc]
call fcn.00511344
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x523d73
lea eax, [ebp - 0x90]
mov edx, 2
call fcn.00403bcc
lea eax, [ebp - 0x88]
mov ecx, 0x14
mov edx, dword [0x4010c4]
call fcn.00404538
lea eax, [ebp - 0x28]
call fcn.00403ba8
lea eax, [ebp - 0x20]
mov edx, 2
call fcn.00403bcc
lea eax, [ebp - 0x10]
call fcn.00403ba8
ret