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

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x260
mov rax, qword [0x7ffbf15ee270]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov r13, r9
mov rax, r8
mov qword [rsp + 0x90], rax
movsxd r12, edx
mov dword [rsp + 0x50], r12d
mov r15, rcx
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0xa8], rcx
mov dword [rsp + 0x68], r12d
mov rsi, r8
mov qword [rsp + 0x78], r8
mov qword [rsp + 0xb0], r8
mov qword [rsp + 0x98], r9
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x74], eax
mov dword [rsp + 0x60], eax
xor r9b, r9b
mov dword [rsp + 0x4c], r9d
mov byte [rsp + 0x58], r9b
xor eax, eax
mov dword [rsp + 0x70], eax
mov dword [rsp + 0x54], eax
xor edi, edi
mov dword [rsp + 0x44], edi
movzx r10d, byte [r13 + 0xb9]
mov byte [rsp + 0x40], r10b
mov byte [rsp + 0x5e], r10b
lea ecx, [r10 - 3]
cmp cl, 2
setbe byte [rsp + 0x48]
mov al, 1
mov byte [rsp + 0x41], al
movzx ebx, al
cmp byte [rsi + 0x54], dil
je 0x7ffbf156bfef
cmp qword [rsi + 0x48], rdi
jne 0x7ffbf156bfef
call fcn.7ffbf15788a0
lea rdx, [rax - 1]
call fcn.7ffbf1578880
mov rdi, rax
mov qword [rsp + 0x88], rax
mov ecx, 0x18
call fcn.7ffbf1589c84
mov rcx, rax
call fcn.7ffbf1578db0
mov r8, rax
mov qword [rsi + 0x48], rax
mov r14d, 1
mov ecx, r14d
mov eax, 0x28
cmp r12d, 0x1f4
cmovg ecx, eax
mov rax, r12
shr rax, 1
xor edx, edx
div rcx
movsxd rdx, eax
mov rcx, r8
call fcn.7ffbf1578c60
nop
mov r9d, dword [rsp + 0x4c]
movzx r10d, byte [rsp + 0x40]
jmp 0x7ffbf156bf44
cmp qword [rsi + 0x48], 0
je 0x7ffbf156bf97
xor bl, bl
mov r9, rdi
mov r8, rsi
mov edx, r12d
mov rcx, r15
call fcn.7ffbf156bd90
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578bf0
cmp rax, 1
jne 0x7ffbf156bf8c
call fcn.7ffbf1565c40
cmp dword [rax], 0xffffffff
jne 0x7ffbf156bf8c
test rcx, rcx
je 0x7ffbf156bf81
call fcn.7ffbf15687e0
mov qword [rsi + 0x48], 0
mov byte [rsi + 0x54], bl
mov r9d, dword [rsp + 0x4c]
movzx r10d, byte [rsp + 0x40]
mov edi, dword [rsp + 0x44]
xor r11d, r11d
movzx eax, bl
cmp byte [rsi + 0x54], r11b
cmovne r11d, eax
mov dword [rsp + 0x54], r11d
mov r8d, dword [rsp + 0x50]
mov ecx, r8d
call fcn.7ffbf156aca0
mov qword [rsp + 0x98], rax
test r11b, r11b
jne 0x7ffbf156c007
test r10b, r10b
jle 0x7ffbf156bff7
cmp byte [rsp + 0x48], r11b
je 0x7ffbf156c007
cmp r10b, 4
je 0x7ffbf156bff7
mov rcx, rsi
call fcn.7ffbf1578fe0
mov ecx, dword [rsi + 0x60]
xor edx, edx
cmp rax, rcx
setb dl
jmp 0x7ffbf156bfff
mov r14d, 1
jmp 0x7ffbf156bf9b
xor edx, edx
cmp dword [rsi + 0x5c], edx
sete dl
test edx, edx
je 0x7ffbf156c9c9
test r9b, r9b
je 0x7ffbf156c03d
lea r9, [rsi + 0x55]
lea rcx, [rsi + 0x90]
xor r8d, r8d
mov dl, 1
call fcn.7ffbf1569ec0
test al, al
jne 0x7ffbf156c9c2
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rsp + 0x74], eax
mov byte [rsp + 0x4c], 0
mov r8d, dword [rsp + 0x50]
mov ebx, dword [rsp + 0x70]
test ebx, ebx
jne 0x7ffbf156c051
cmp byte [rsi + 0x53], bl
je 0x7ffbf156c051
mov ecx, 0x2000
jmp 0x7ffbf156c053
xor ecx, ecx
lea r12, [rsi + 0x98]
mov eax, dword [r13 + 0xa8]
xor eax, ecx
mov dword [rsp + 0x38], 0x12c
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edi
mov r9d, r8d
mov r8, r15
mov rdx, qword [r13 + 0x98]
mov rcx, qword [r13 + 0x80]
call fcn.7ffbf15630c0
mov r9d, eax
mov dword [rsp + 0x60], eax
inc ebx
mov dword [rsp + 0x70], ebx
lea r14, [rsi + 0x9c]
mov r8d, dword [r14]
mov dword [rsp + 0x44], r8d
mov edi, r8d
mov ebx, dword [r12]
mov ecx, ebx
mov edx, r8d
cmp ebx, r8d
jne 0x7ffbf156c1ef
test eax, eax
js 0x7ffbf156c1ef
mov ecx, dword [rsp + 0x50]
cmp ebx, ecx
jne 0x7ffbf156c0e4
test ecx, ecx
je 0x7ffbf156c0e4
cmp byte [r13 + 0xb3], 0
je 0x7ffbf156c9bc
mov eax, dword [r13 + 0xa8]
or eax, 0x10000010
mov dword [rsp + 0x38], 0x12c
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], r8d
mov r9d, ecx
mov r8, r15
mov rdx, qword [r13 + 0x98]
mov rcx, qword [r13 + 0x80]
call fcn.7ffbf15630c0
mov r9d, eax
mov dword [rsp + 0x60], eax
cmp eax, 0xffffffff
jne 0x7ffbf156c1d8
movsxd rdx, edi
lea ecx, [rdx + 1]
mov dword [r14], ecx
mov r8d, dword [rsp + 0x50]
cmp byte [r13 + 0xb0], 0
je 0x7ffbf156c16a
lea eax, [r8 - 1]
cmp edx, eax
jge 0x7ffbf156c16a
cmp word [r15 + rdx*2], 0xd
jne 0x7ffbf156c16a
movsxd rax, ecx
cmp word [r15 + rax*2], 0xa
jne 0x7ffbf156c16a
lea eax, [rcx + 1]
mov dword [r14], eax
jmp 0x7ffbf156c19f
mov eax, ecx
cmp ecx, r8d
jge 0x7ffbf156c19f
movsxd rax, ecx
movzx edx, word [r15 + rax*2]
mov eax, ecx
mov r9d, 0xdbff
cmp dx, r9w
jbe 0x7ffbf156c19d
mov r9d, 0xe000
cmp dx, r9w
mov edx, edi
jae 0x7ffbf156c19f
lea eax, [rcx + 1]
mov dword [r14], eax
jmp 0x7ffbf156c19f
mov edx, edi
xor r9d, r9d
mov dword [rsp + 0x60], r9d
cmp byte [r13 + 0xb3], r9b
jne 0x7ffbf156c1cb
mov edi, eax
lea r14d, [r9 + 1]
mov r9d, dword [rsp + 0x4c]
movzx r10d, byte [rsp + 0x40]
mov r11d, dword [rsp + 0x54]
jmp 0x7ffbf156bfc3
mov dword [r14], edx
mov dword [rsp + 0x44], eax
mov dword [r12], ebx
jmp 0x7ffbf156c1fc
mov eax, dword [r14]
mov dword [rsp + 0x44], eax
mov rcx, qword [rsp + 0x90]
mov ecx, dword [rcx + 0x98]
mov edx, eax
mov edi, edx
mov ebx, ecx
cmp ecx, edx
jne 0x7ffbf156c224
mov r8d, dword [rsp + 0x50]
cmp ebx, r8d
jne 0x7ffbf156c224
cmp byte [r13 + 0xb3], 0
jne 0x7ffbf156c224
test r8d, r8d
jne 0x7ffbf156c9bc
cmp byte [rsp + 0x41], r8b
je 0x7ffbf156c9bc
mov byte [rsp + 0x41], r8b
test r9d, r9d
js 0x7ffbf156c8b4
cmp byte [r13 + 0xb3], 0
jne 0x7ffbf156c23f
cmp ebx, edi
je 0x7ffbf156c8b4
mov eax, dword [rsp + 0x54]
test al, al
jne 0x7ffbf156c973
cmp byte [rsp + 0x40], 2
je 0x7ffbf156c257
inc dword [rsi + 0x5c]
jmp 0x7ffbf156c2cc
sub edi, ebx
lea edx, [rdi + rdi]
movsxd rax, ebx
lea rcx, [r15 + rax*2]
lea r8, [rsp + 0x88]
call fcn.7ffbf1569cb0
lea rdx, [rsp + 0xa8]
mov rcx, qword [rsi + 0x40]
call fcn.7ffbf1578ba0
mov rbx, rax
lea r8, [rsp + 0x88]
lea rdx, [rsp + 0xb8]
mov rcx, qword [rsi + 0x40]
call fcn.7ffbf1578af0
mov rcx, rax
mov rdx, rbx
call fcn.7ffbf15786e0
test al, al
je 0x7ffbf156c2c8
lea r8, [rsp + 0x88]
lea rdx, [rsp + 0x230]
mov rcx, qword [rsi + 0x40]
call fcn.7ffbf1580980
inc dword [rsi + 0x5c]
mov eax, dword [rsp + 0x54]
cmp byte [rsp + 0x48], 0
je 0x7ffbf156c8ff
xor r15d, r15d
lea r10, [r13 + 0x58]
lea rdx, [rsp + 0x78]
mov rcx, r10
call fcn.7ffbf1578c30
lea rdx, [rsp + 0xa0]
mov rcx, r10
call fcn.7ffbf1578c10
mov rdx, rax
lea rcx, [rsp + 0x78]
call fcn.7ffbf15766a0
test al, al
je 0x7ffbf156c8ac
lea rcx, [rsp + 0x78]
call fcn.7ffbf1578590
mov rdi, rax
mov ebx, dword [rax]
test ebx, ebx
jns 0x7ffbf156c3aa
not ebx
cmp dword [r13 + 0xac], ebx
jl 0x7ffbf156c875
lea ecx, [rbx + rbx]
movsxd rax, ecx
movsxd r9, dword [rsi + rax*4 + 0x98]
movsxd rax, ecx
mov ecx, dword [rsi + rax*4 + 0x9c]
sub ecx, r9d
mov edx, dword [rsi + 0x60]
cmp ecx, edx
jle 0x7ffbf156c394
lea eax, [r9 + rdx]
movsxd rcx, eax
mov rax, qword [rsp + 0x80]
movzx eax, word [rax + rcx*2 - 2]
mov ecx, 0x2800
add ax, cx
mov ecx, 0x3ff
cmp ax, cx
ja 0x7ffbf156c396
dec edx
movsxd r8, edx
mov rcx, qword [rsp + 0x80]
lea rdx, [rcx + r9*2]
jmp 0x7ffbf156c869
mov edx, ecx
movsxd r8, edx
mov rcx, qword [rsp + 0x80]
lea rdx, [rcx + r9*2]
jmp 0x7ffbf156c869
cmp ebx, 0x1ffff
jne 0x7ffbf156c3f1
mov r8d, r15d
mov edx, r15d
lea rcx, [r13 + 0x40]
call fcn.7ffbf1578dd0
mov rcx, rax
call fcn.7ffbf1578fe0
test rax, rax
je 0x7ffbf156c3e9
mov edx, r8d
lea rcx, [r13 + 0x40]
call fcn.7ffbf1578dd0
mov rdx, rax
mov rcx, rsi
call fcn.7ffbf1579380
lea r10, [r13 + 0x58]
inc r15d
jmp 0x7ffbf156c875
lea eax, [rbx - 0x2ffff]
test eax, 0xfffeffff
je 0x7ffbf156c802
cmp ebx, 0x4ffff
jl 0x7ffbf156c528
cmp ebx, 0x5ffff
jge 0x7ffbf156c528
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577e20
nop
mov ebx, dword [rdi]
cmp ebx, 0x4ffff
je 0x7ffbf156c44c
cmp ebx, 0x50009
je 0x7ffbf156c44c
lea eax, [rbx - 0x4ffff]
jl 0x7ffbf156c448
lea eax, [rbx - 0x50009]
add eax, eax
jmp 0x7ffbf156c467
mov rax, qword [rsp + 0xb0]
mov eax, dword [rax + 0x64]
cmp ebx, 0x50009
jge 0x7ffbf156c464
shr eax, 0x10
jmp 0x7ffbf156c467
movzx eax, ax
mov edx, eax
lea rcx, [rsp + 0x200]
call fcn.7ffbf158b65c
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580ab0
lea rcx, [rsp + 0x5e]
call fcn.7ffbf1580ae0
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580b00
cmp ebx, 0x50009
jge 0x7ffbf156c4cb
lea rdx, [0x7ffbf1568390]
lea rcx, [rsp + 0x110]
call fcn.7ffbf15784e0
mov rcx, rax
lea rdx, [0x7ffbf15683c0]
call fcn.7ffbf15784e0
movsxd rax, dword [r12]
mov rdx, qword [rsi + 0x70]
add rdx, rax
add rdx, rdx
lea rcx, [rsp + 0x110]
call fcn.7ffbf1578040
lea rdx, [rsp + 0x230]
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577da0
nop
mov rdx, rax
mov rcx, rsi
call fcn.7ffbf1579380
nop
lea rcx, [rsp + 0x230]
call fcn.7ffbf15793d0
nop
lea rcx, [rsp + 0x100]
call fcn.7ffbf156bd60
jmp 0x7ffbf156c871
lea eax, [rbx - 0x5ffff]
cmp eax, 0xffff
ja 0x7ffbf156c72c
cmp qword [rsi + 0x48], 0
je 0x7ffbf156c72c
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577e20
nop
mov eax, dword [rdi]
cmp eax, 0x60009
jge 0x7ffbf156c568
lea r14d, [rax - 0x5ffff]
mov ebx, dword [r12]
jmp 0x7ffbf156c575
lea r14d, [rax - 0x60009]
mov ebx, dword [rsi + 0x9c]
mov dword [rsp + 0x68], ebx
cmp qword [rsi + 0x70], 0
je 0x7ffbf156c598
cmp qword [rsi + 0x68], 1
jne 0x7ffbf156c598
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578c00
test al, al
je 0x7ffbf156c598
xor edi, edi
jmp 0x7ffbf156c59d
mov edi, 1
lea rcx, [rsp + 0x230]
call fcn.7ffbf156a2e0
lea rdx, [rsp + 0xc0]
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578c30
mov rcx, qword [rax]
mov qword [rsp + 0x230], rcx
mov r8, qword [rsi + 0x48]
mov rcx, r8
call fcn.7ffbf1578c00
test al, al
jne 0x7ffbf156c69e
lea rcx, [rsp + 0x230]
call fcn.7ffbf1578590
cmp ebx, dword [rax]
jl 0x7ffbf156c69e
lea rdx, [rsp + 0xc8]
mov rcx, r8
call fcn.7ffbf1578c10
mov r10, rax
lea rdx, [rsp + 0xd0]
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578c30
lea r9, [rsp + 0x68]
mov r8, qword [r10]
mov rdx, qword [rax]
lea rcx, [rsp + 0xd8]
call fcn.7ffbf1580b30
mov rcx, qword [rax]
mov qword [rsp + 0x230], rcx
lea rdx, [rsp + 0xe0]
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578c10
mov rdx, rax
lea rcx, [rsp + 0x230]
call fcn.7ffbf15766a0
test al, al
je 0x7ffbf156c674
lea rcx, [rsp + 0x230]
call fcn.7ffbf1578590
cmp dword [rax], ebx
jne 0x7ffbf156c674
mov r9d, 1
jmp 0x7ffbf156c677
xor r9d, r9d
lea rdx, [rsp + 0xe8]
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578c30
mov rdx, rax
lea rcx, [rsp + 0x230]
call fcn.7ffbf15785a0
add rax, r9
add rdi, rax
mov edx, r14d
lea rcx, [rsp + 0x210]
call fcn.7ffbf158b65c
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580ab0
lea rcx, [rsp + 0x5c]
call fcn.7ffbf1580ae0
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580b00
mov edx, dword [rsi + 0x68]
add edx, edi
lea rcx, [rsp + 0x110]
call fcn.7ffbf15782a0
lea rdx, [rsp + 0x230]
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577da0
nop
mov rdx, rax
mov rcx, rsi
call fcn.7ffbf1579380
nop
lea rcx, [rsp + 0x230]
call fcn.7ffbf15793d0
nop
lea rcx, [rsp + 0x100]
call fcn.7ffbf156bd60
jmp 0x7ffbf156c871
cmp ebx, 0x6ffff
jl 0x7ffbf156c7f7
cmp ebx, 0x7ffff
lea edi, [rbx - 0x7ffff]
jge 0x7ffbf156c74c
lea edi, [rbx - 0x6ffff]
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577e20
nop
test edi, edi
je 0x7ffbf156c79b
lea eax, [rdi + 1]
movsxd rdx, eax
lea rcx, [rsp + 0x220]
call fcn.7ffbf158b65c
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580ab0
lea rcx, [rsp + 0x5a]
call fcn.7ffbf1580ae0
mov rdx, rax
lea rcx, [rsp + 0x110]
call fcn.7ffbf1580b00
xor edx, edx
cmp ebx, 0x7ffff
setge dl
dec edx
add edx, dword [rsi + 0x5c]
lea rcx, [rsp + 0x110]
call fcn.7ffbf15783c0
lea rdx, [rsp + 0x230]
lea rcx, [rsp + 0x100]
call fcn.7ffbf1577da0
nop
mov rdx, rax
mov rcx, rsi
call fcn.7ffbf1579380
nop
lea rcx, [rsp + 0x230]
call fcn.7ffbf15793d0
nop
lea rcx, [rsp + 0x100]
call fcn.7ffbf156bd60
jmp 0x7ffbf156c871
mov r8d, 1
mov rdx, rdi
jmp 0x7ffbf156c869
xor edi, edi
cmp ebx, 0x3ffff
je 0x7ffbf156c84e
lea rcx, [rsi + 0x20]
call fcn.7ffbf1578fe0
mov rdi, rax
test rax, rax
je 0x7ffbf156c84e
lea rbx, [rax - 1]
mov rdx, rbx
lea rcx, [rsi + 0x20]
call fcn.7ffbf1579000
cmp word [rax], 0x5c
je 0x7ffbf156c84e
mov rdx, rbx
lea rcx, [rsi + 0x20]
call fcn.7ffbf1579000
cmp word [rax], 0x2f
je 0x7ffbf156c84e
dec rbx
sub rdi, 1
jne 0x7ffbf156c821
lea rcx, [rsi + 0x20]
call fcn.7ffbf1578fe0
mov rbx, rax
sub rbx, rdi
call fcn.7ffbf1578ff0
lea rdx, [rax + rdi*2]
mov r8, rbx
mov rcx, rsi
call fcn.7ffbf1579230
lea r10, [r13 + 0x58]
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0x78]
call fcn.7ffbf1578570
lea rdx, [rsp + 0xa0]
mov rcx, r10
call fcn.7ffbf1578c10
mov rdx, rax
lea rcx, [rsp + 0x78]
call fcn.7ffbf15766a0
test al, al
jne 0x7ffbf156c310
mov r15, qword [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [rsp + 0x74]
mov r9d, dword [rsp + 0x4c]
movzx r9d, r9b
cmp eax, 0x1f4
mov r14d, 1
cmova r9d, r14d
mov dword [rsp + 0x4c], r9d
cmp dword [rsp + 0x60], 0
jl 0x7ffbf156c9c2
mov edi, dword [rsp + 0x44]
mov r8d, dword [rsp + 0x50]
movzx r10d, byte [rsp + 0x40]
mov r11d, dword [rsp + 0x54]
jmp 0x7ffbf156bfc3
test al, al
jne 0x7ffbf156c8b4
movzx eax, byte [r13 + 0xb9]
cmp al, 6
jl 0x7ffbf156c8b4
cmp al, 8
jne 0x7ffbf156c95a
mov r8, qword [rsi + 0x78]
test r8, r8
je 0x7ffbf156c936
movsxd rdx, dword [r12]
mov rcx, qword [rsi + 0x70]
add rcx, rdx
add rcx, rcx
sub rcx, r8
add qword [rsi + 0x88], rcx
jmp 0x7ffbf156c944
mov rax, qword [rsp + 0x90]
mov edx, dword [rax + 0x98]
movsxd rax, edx
mov rcx, qword [rsi + 0x70]
add rcx, rax
add rcx, rcx
mov qword [rsi + 0x78], rcx
jmp 0x7ffbf156c8b4
mov eax, dword [r14]
sub eax, dword [r12]
movsxd rcx, eax
add rcx, rcx
add qword [rsi + 0x88], rcx
jmp 0x7ffbf156c8b4
mov rcx, qword [rsi + 0x48]
test rcx, rcx
je 0x7ffbf156c8b4
mov rdx, r14
call fcn.7ffbf1578d60
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578be0
cmp rax, qword [rsp + 0x98]
jbe 0x7ffbf156c8b4
call fcn.7ffbf1578c50
mov dword [rsp + 0x68], 0xffffffff
lea rdx, [rsp + 0x68]
mov rcx, qword [rsi + 0x48]
call fcn.7ffbf1578cd0
jmp 0x7ffbf156ca19
mov r14d, 1
cmp byte [rsp + 0x54], 0
jne 0x7ffbf156ca19
mov rcx, qword [rsi + 0x48]
test rcx, rcx
je 0x7ffbf156ca19
cmp qword [rsi + 0x70], 0
je 0x7ffbf156c9f1
mov rdx, qword [rsi + 0x68]
cmp rdx, 1
jne 0x7ffbf156c9f1
call fcn.7ffbf1578c00
test al, al
je 0x7ffbf156c9f1
xor r14d, r14d
jmp 0x7ffbf156c9fd
mov rax, qword [rsp + 0x90]
mov rdx, qword [rax + 0x68]
call fcn.7ffbf1578bf0
add rax, rdx
add rax, r14
mov qword [rsi + 0x68], rax
call fcn.7ffbf15687e0
mov qword [rsi + 0x48], 0
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.7ffbf1589b60
add rsp, 0x260
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret