Function at 0x10097770
Capabilities:
Check for time delay via gettickcount
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x10187302
mov eax, dword fs:[0]
push eax
sub esp, 0x160
push ebx
push ebp
push esi
push edi
mov eax, dword [0x101cd7b4]
xor eax, esp
push eax
lea eax, [esp + 0x174]
mov dword fs:[0], eax
mov esi, ecx
mov al, byte [esi + 0x2248]
test al, al
jne 0x10098d6f
mov cl, byte [esi + 0x1e18]
test cl, cl
jne 0x10097833
mov ecx, esi
call fcn.10087cd0
test al, al
je 0x10097833
lea edi, [esi + 0x1dd8]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov bl, byte [esi + 0x1df0]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test bl, bl
jne 0x10097827
lea edx, [esi + 0x1d28]
push edx
lea ecx, [esp + 0x84]
call fcn.10001700
mov ecx, dword [esi + 0x2730]
lea eax, [esi + 0x30d4]
push eax
mov dword [esp + 0x180], 0
call fcn.101357da
lea ecx, [esp + 0x80]
mov dword [esp + 0x17c], 0xffffffff
call fcn.10001720
mov ecx, esi
call fcn.1008a530
jmp 0x10098d6f
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
lea ecx, [esi + 0x1d75]
push ecx
mov dword [esp + 0x180], 1
call fcn.100eca36
mov ecx, eax
add esp, 4
or ecx, edx
jne 0x1009788d
mov eax, dword [esi + 0x250f]
mov edx, dword [esi + 0x2513]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
cmp ebp, eax
mov dword [esp + 0x28], edx
mov ebx, eax
jbe 0x100978b0
call fcn.1015988d
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x48]
cmp ebp, eax
lea edi, [esp + 0x44]
jbe 0x100978bd
call fcn.1015988d
push ebx
push edi
lea eax, [esp + 0x4c]
push ebp
push eax
lea edx, [esp + 0x148]
push edx
mov ecx, eax
call fcn.1008f860
xor edi, edi
push edi
call fcn.1015972a
add esp, 4
lea ecx, [esp + 0x74]
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
call fcn.10035840
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edi
mov ecx, dword [esi + 0xc]
cmp ecx, edi
mov byte [esp + 0x17c], 2
je 0x10097e47
lea eax, [esp + 0x74]
push eax
lea edx, [esp + 0x28]
push edx
call fcn.1006f210
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x4c]
mov edi, eax
jbe 0x1009793b
call fcn.1015988d
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp eax, ecx
mov dword [esp + 0x20], ecx
jbe 0x1009794c
call fcn.1015988d
mov ebx, dword [esp + 0x19c]
cmp edi, dword [esp + 0x20]
je 0x10097e47
cmp edi, dword [esp + 0x4c]
jb 0x10097968
call fcn.1015988d
cmp dword [edi], 0
jne 0x10097ba4
sub esp, 0x1c
mov eax, esp
mov dword [esp + 0x84], esp
push eax
mov ecx, esi
call fcn.10089770
mov eax, dword [esi + 8]
mov eax, dword [eax + 0x5c]
sub esp, 0x1c
mov edx, esp
mov dword [esp + 0x90], esp
lea ecx, [esi + 8]
push edx
lea edx, [esp + 0x188]
push edx
mov byte [esp + 0x1bc], 3
call eax
mov ecx, eax
call fcn.10012070
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097b1c
call fcn.1015988d
mov ecx, dword [edi + 0x80]
mov edx, dword [edi + 0x7c]
mov eax, dword [edi + 0x78]
push ecx
mov ecx, dword [edi + 0x74]
push edx
mov edx, dword [edi + 0x70]
push eax
mov eax, dword [edi + 0x6c]
push ecx
movzx ecx, byte [edi + 0x8c]
push edx
mov edx, dword [edi + 0x88]
push eax
movzx eax, byte [edi + 0x64]
push ecx
movzx ecx, byte [edi + 0x63]
push edx
movzx edx, byte [edi + 0x62]
cmp dword [edi], 0
push eax
movzx eax, byte [edi + 0x61]
push ecx
movzx ecx, byte [edi + 0x60]
push edx
movzx edx, word [edi + 0x24]
push eax
mov eax, dword [edi + 0x28]
push ecx
movzx ecx, byte [edi + 0x2c]
push edx
movzx edx, word [edi + 0x14]
push eax
movzx eax, word [edi + 0xc]
push ecx
mov ecx, dword [edi + 8]
push edx
mov edx, dword [edi + 0x10]
push eax
push ecx
movzx ecx, byte [edi + 0xe]
sete al
push edx
mov byte [esp + 0x204], 2
push eax
push ecx
mov ecx, dword [esp + 0x220]
call fcn.10043e70
jmp 0x10097e31
cmp edi, dword [esp + 0x4c]
jb 0x10097baf
call fcn.1015988d
cmp dword [edi], 1
jne 0x10097e31
sub esp, 0x1c
mov edx, esp
mov dword [esp + 0x74], esp
push edx
mov ecx, esi
call fcn.10089770
mov edx, dword [esi + 8]
mov edx, dword [edx + 0x5c]
sub esp, 0x1c
mov eax, esp
mov dword [esp + 0xa0], esp
lea ecx, [esi + 8]
push eax
lea eax, [esp + 0x19c]
push eax
mov byte [esp + 0x1bc], 4
call edx
mov ecx, eax
call fcn.10012070
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
cmp edi, dword [esp + 0x84]
jb 0x10097d60
call fcn.1015988d
mov eax, dword [edi + 0x80]
mov ecx, dword [edi + 0x7c]
mov edx, dword [edi + 0x78]
push eax
mov eax, dword [edi + 0x74]
push ecx
mov ecx, dword [edi + 0x70]
push edx
mov edx, dword [edi + 0x6c]
push eax
movzx eax, byte [edi + 0x8c]
push ecx
mov ecx, dword [edi + 0x88]
push edx
movzx edx, byte [edi + 0x64]
push eax
movzx eax, byte [edi + 0x63]
push ecx
movzx ecx, byte [edi + 0x62]
cmp dword [edi], 0
push edx
movzx edx, byte [edi + 0x61]
push eax
movzx eax, byte [edi + 0x60]
push ecx
movzx ecx, word [edi + 0x24]
push edx
mov edx, dword [edi + 0x28]
push eax
movzx eax, byte [edi + 0x2c]
push ecx
movzx ecx, word [edi + 0x14]
push edx
movzx edx, word [edi + 0xc]
push eax
mov eax, dword [edi + 8]
push ecx
mov ecx, dword [edi + 0x10]
push edx
sete dl
lea ebp, [edi + 8]
push eax
movzx eax, byte [edi + 0xe]
push ecx
mov ecx, dword [esp + 0x220]
push edx
push eax
mov byte [esp + 0x20c], 2
call fcn.10043e70
cmp edi, dword [esp + 0x4c]
jb 0x10097df1
call fcn.1015988d
mov ecx, dword [edi + 0x28]
add dword [ebx], ecx
adc dword [ebx + 4], 0
cmp edi, dword [esp + 0x4c]
jb 0x10097e05
call fcn.1015988d
mov edx, dword [edi + 0x28]
add dword [esp + 0x18], edx
adc dword [esp + 0x1c], 0
cmp edi, dword [esp + 0x4c]
jb 0x10097e1c
call fcn.1015988d
mov ecx, dword [esp + 0x1a0]
push ebp
lea eax, [esp + 0x144]
push eax
call fcn.10008d10
cmp edi, dword [esp + 0x4c]
jb 0x10097e3c
call fcn.1015988d
add edi, 0x90
jmp 0x10097953
mov ecx, dword [esp + 0x34]
xor edi, edi
cmp dword [esi + 0x272c], edi
mov dword [esp + 0x68], ecx
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
lea ebx, [edi + 0xf]
je 0x10098151
lea edi, [esi + 0x21c0]
push edi
mov byte [esp + 0x1b], 0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dl, byte [esi + 0x21d8]
push edi
mov byte [esp + 0x24], dl
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x78]
push ecx
mov ecx, dword [esi + 0x272c]
lea edx, [esp + 0x2c]
push edx
call fcn.1003d590
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x4c]
mov edi, eax
jbe 0x10097eba
call fcn.1015988d
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp eax, ecx
mov dword [esp + 0x20], ecx
jbe 0x10097ecb
call fcn.1015988d
mov ebp, dword [esp + 0x194]
cmp edi, dword [esp + 0x20]
je 0x10097fba
cmp edi, dword [esp + 0x4c]
jb 0x10097ee7
call fcn.1015988d
cmp dword [edi], 4
jne 0x10097fa4
cmp edi, dword [esp + 0x4c]
jb 0x10097efb
call fcn.1015988d
cmp edi, dword [esp + 0x4c]
movzx eax, byte [edi + 0x4c]
push eax
jb 0x10097f0b
call fcn.1015988d
cmp edi, dword [esp + 0x50]
movzx ecx, byte [edi + 0x5a]
push ecx
jb 0x10097f1b
call fcn.1015988d
cmp edi, dword [esp + 0x54]
movzx edx, word [edi + 0x58]
push edx
jb 0x10097f2b
call fcn.1015988d
cmp edi, dword [esp + 0x58]
mov eax, dword [edi + 0x20]
push eax
jb 0x10097f3a
call fcn.1015988d
cmp edi, dword [esp + 0x5c]
mov ecx, dword [edi + 8]
push ecx
jb 0x10097f49
call fcn.1015988d
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x88], esp
push 0xffffffffffffffff
lea eax, [edi + 0x30]
push 0
mov dword [ecx + 0x18], ebx
mov dword [ecx + 0x14], 0
push eax
mov byte [ecx + 4], 0
call fcn.10005470
mov ecx, ebp
call fcn.100440b0
cmp edi, dword [esp + 0x4c]
jb 0x10097f82
call fcn.1015988d
cmp byte [edi + 0x4c], 0
je 0x10097fa4
cmp edi, dword [esp + 0x4c]
mov byte [esp + 0x17], 1
jb 0x10097f98
call fcn.1015988d
mov edx, dword [edi + 0x28]
add dword [esp + 0x60], edx
adc dword [esp + 0x64], 0
cmp edi, dword [esp + 0x4c]
jb 0x10097faf
call fcn.1015988d
add edi, 0x90
jmp 0x10097ed2
mov eax, dword [esi + 0x263c]
xor edi, edi
push edi
push edi
shr eax, 0xa
push eax
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x88], esp
push 0x26
mov dword [ecx + 0x18], ebx
mov dword [ecx + 0x14], edi
push str.zGetUrl:________________1ACC_Max_Speed
mov byte [ecx + 4], 0
call fcn.10005610
mov ecx, ebp
call fcn.100440b0
mov ecx, dword [esi + 0x2640]
push edi
push edi
shr ecx, 0xa
push ecx
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x88], esp
push 0x26
mov dword [ecx + 0x18], ebx
mov dword [ecx + 0x14], edi
push str.zGetUrl:________________2ACC_Min_Speed
mov byte [ecx + 4], 0
call fcn.10005610
mov ecx, ebp
call fcn.100440b0
mov edx, dword [esi + 0x2644]
push edi
push edi
shr edx, 0xa
push edx
push edi
push edi
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x88], esp
push 0x27
mov dword [ecx + 0x18], ebx
mov dword [ecx + 0x14], edi
push str.zGetUrl:________________3ACC_Drop_Speed
mov byte [ecx + 4], 0
call fcn.10005610
mov ecx, ebp
call fcn.100440b0
mov ebp, dword [esi + 0x3370]
cmp ebp, dword [esi + 0x3374]
lea edi, [esi + 0x336c]
jbe 0x10098080
call fcn.1015988d
lea ebx, [ebx]
mov ebx, dword [edi + 8]
cmp dword [edi + 4], ebx
jbe 0x1009808d
call fcn.1015988d
cmp edi, edi
je 0x10098096
call fcn.1015988d
cmp ebp, ebx
je 0x100980fd
cmp ebp, dword [edi + 8]
jb 0x100980a4
call fcn.1015988d
cmp ebp, dword [edi + 8]
movzx eax, byte [ebp + 0x1c]
push eax
push 0
jb 0x100980b5
call fcn.1015988d
cmp ebp, dword [edi + 8]
mov ecx, dword [ebp + 0x20]
push ecx
push 0
push 0
jb 0x100980c7
call fcn.1015988d
sub esp, 0x1c
mov edx, esp
mov dword [esp + 0x88], esp
push ebp
push str.zGetUrl:
push edx
call fcn.1002aa70
mov ecx, dword [esp + 0x1d0]
add esp, 0xc
call fcn.100440b0
cmp ebp, dword [edi + 8]
jb 0x100980f8
call fcn.1015988d
add ebp, 0x64
jmp 0x10098080
cmp byte [esp + 0x17], 0
je 0x10098139
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp byte [esi + 0x3258], 0
je 0x1009812a
mov edx, dword [esi + 0x3254]
mov ecx, eax
sub ecx, edx
cmp eax, edx
jae 0x10098124
sub ecx, 1
add dword [esi + 0x3250], ecx
mov byte [esi + 0x3258], 1
mov dword [esi + 0x3254], eax
jmp 0x1009814a
mov dword [esi + 0x3254], 0
mov byte [esi + 0x3258], 0
xor edi, edi
mov ebx, 0xf
push 0xffffffffffffffff
lea eax, [esi + 0x242a]
push edi
push eax
lea ecx, [esp + 0xcc]
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe0], edi
mov byte [esp + 0xd0], 0
call fcn.10005470
cmp dword [esp + 0xd8], 0x10
jb 0x10098197
mov eax, dword [esp + 0xc4]
push eax
call fcn.10159534
add esp, 4
cmp dword [esp + 0x38], edi
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xd4], edi
mov byte [esp + 0xc4], 0
jne 0x100981bf
add dword [esi + 0x2fd0], 1
jmp 0x10098241
cmp byte [esi + 0x2560], 1
jne 0x10098230
lea ecx, [esi + 0x3350]
push ecx
lea edx, [esp + 0x70]
push edx
mov ecx, 0x101cef5c
call fcn.10089440
mov ebp, dword [esp + 0x6c]
test ebp, ebp
mov ebx, dword [0x101cef60]
je 0x100981f4
cmp ebp, 0x101cef5c
je 0x100981f9
call fcn.1015988d
mov edi, dword [esp + 0x70]
cmp edi, ebx
je 0x10098230
test ebp, ebp
jne 0x1009820a
call fcn.1015988d
cmp edi, dword [ebp + 4]
jne 0x10098214
call fcn.1015988d
add dword [edi + 0x58], 1
cmp edi, dword [ebp + 4]
jne 0x10098222
call fcn.1015988d
mov eax, dword [esp + 0x18]
add dword [edi + 0x60], eax
mov ecx, dword [esp + 0x1c]
adc dword [edi + 0x64], ecx
mov dword [esi + 0x2fd0], 0
mov ebx, 0xf
xor edi, edi
cmp dword [esi + 0x1d70], edi
jne 0x100982f5
mov ecx, dword [esi + 0x2730]
call fcn.10135579
mov ecx, dword [esi + 0x2730]
mov ebx, eax
mov dword [esp + 0x5c], edx
call fcn.10135425
mov ecx, dword [esi + 0x2730]
mov edi, eax
mov ebp, edx
call fcn.10135524
mov dword [esp + 0x1c], edx
mov ecx, edi
sub ecx, dword [esi + 0x3100]
mov edx, ebp
sbb edx, dword [esi + 0x3104]
add ecx, ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x5c]
adc edx, eax
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x18]
sub edx, dword [esi + 0x3108]
mov dword [esi + 0x3110], ebx
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x1c]
sbb edx, dword [esi + 0x310c]
add edi, ebx
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x18]
adc ebp, eax
mov dword [esi + 0x3108], edx
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x3100], edi
mov dword [esp + 0x34], ecx
mov dword [esi + 0x3104], ebp
mov dword [esi + 0x310c], edx
mov dword [esi + 0x3114], eax
mov ebx, 0xf
xor edi, edi
jmp 0x100982f9
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x68]
cmp ecx, ebp
ja 0x10098303
mov ebp, ecx
push 0xffffffffffffffff
push edi
lea eax, [esi + 0x242a]
push eax
lea ecx, [esp + 0x94]
mov dword [esp + 0xac], ebx
mov dword [esp + 0xa8], edi
mov byte [esp + 0x98], 0
call fcn.10005470
cmp dword [esp + 0xa0], 0x10
jb 0x10098349
mov eax, dword [esp + 0x8c]
push eax
call fcn.10159534
add esp, 4
cmp byte [esi + 0x33a9], 1
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x9c], edi
mov byte [esp + 0x8c], 0
je 0x1009837e
cmp byte [esi + 0x255f], 1
je 0x1009837e
mov ecx, dword [esp + 0x34]
push ecx
push ebp
mov ecx, esi
call fcn.10087da0
mov eax, dword [esp + 0x34]
cmp eax, dword [esi + 0x325c]
jbe 0x10098390
mov dword [esi + 0x325c], eax
cmp dword [esi + 0x3310], 2
jne 0x100983a4
cmp eax, 0xc00
jge 0x10098455
mov ecx, dword [esi + 0x2648]
cmp ecx, 1
jne 0x100983c1
mov edx, eax
sub edx, dword [esp + 0x60]
cmp edx, dword [esi + 0x2644]
ja 0x100983c7
cmp ecx, ecx
je 0x100983e4
sub eax, dword [esp + 0x60]
je 0x100983e4
cmp ecx, 1
jne 0x100983dc
mov eax, dword [esi + 0x2338]
cmp eax, 2
jl 0x100983dc
add eax, 0xfffffffe
jmp 0x1009844f
mov dword [esi + 0x2338], edi
jmp 0x10098455
lea edi, [esi + 0x2344]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov bl, byte [esi + 0x235c]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test bl, bl
je 0x10098455
mov eax, dword [esi + 0x2648]
cmp eax, 1
mov ecx, dword [esp + 0x34]
jne 0x10098424
mov edx, ecx
sub edx, dword [esp + 0x60]
cmp edx, dword [esi + 0x2640]
jb 0x10098430
cmp eax, 1
je 0x10098455
sub ecx, dword [esp + 0x60]
cmp ecx, 0x400
jae 0x10098455
add dword [esi + 0x2338], 1
mov ecx, dword [esi + 0x2338]
xor edx, edx
cmp eax, 1
setne dl
lea edx, [edx + edx + 6]
mov eax, edx
cmp ecx, eax
jle 0x10098455
mov dword [esi + 0x2338], eax
lea eax, [esp + 0x100]
push eax
mov dword [esp + 0xfc], 0x1019a840
mov dword [esp + 0x100], 0x10199604
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea edi, [esi + 0x2344]
push edi
call ebp
mov bl, byte [esi + 0x235c]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call edi
lea ecx, [esp + 0x100]
push ecx
call ebp
lea edx, [esp + 0x100]
push edx
mov byte [esp + 0x11c], bl
call edi
push 0xffffffffffffffff
push 0
lea eax, [esi + 0x242a]
push eax
lea ecx, [esp + 0xb0]
mov byte [esp + 0x188], 5
mov dword [esp + 0xc8], 0xf
mov dword [esp + 0xc4], 0
mov byte [esp + 0xb4], 0
call fcn.10005470
cmp dword [esp + 0xbc], 0x10
jb 0x10098509
mov eax, dword [esp + 0xa8]
push eax
call fcn.10159534
add esp, 4
lea ecx, [esp + 0x100]
push ecx
mov dword [esp + 0xc0], 0xf
mov dword [esp + 0xbc], 0
mov byte [esp + 0xac], 0
mov byte [esp + 0x180], 2
mov dword [esp + 0xfc], 0x1019a840
mov dword [esp + 0x100], 0x10199604
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
cmp dword [esp + 0x34], 0
mov dword [esp + 0xfc], 0x10199600
je 0x10098575
push 0
call fcn.1015972a
add esp, 4
mov dword [esi + 0x33b8], eax
cmp byte [esi + 0x3020], 0
mov eax, dword [esi + 0x263c]
je 0x10098594
mov ecx, dword [esi + 0x272c]
test ecx, ecx
je 0x10098594
push eax
call fcn.10036d20
cmp dword [esp + 0x34], 0
jle 0x10098608
lea edi, [esi + 0x2be0]
push edi
call ebp
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push edi
mov dword [esi + 0x2bf8], 0
call ebx
lea edi, [esi + 0x2c04]
push edi
call ebp
push edi
mov word [esi + 0x2c1c], 0
call ebx
lea edi, [esi + 0x2c28]
push edi
call ebp
push edi
mov word [esi + 0x2c40], 0
call ebx
lea edi, [esi + 0x2c4c]
push edi
call ebp
push edi
mov word [esi + 0x2c64], 0
call ebx
lea edi, [esi + 0x2bbc]
push edi
call ebp
mov byte [esi + 0x2bd4], 0
jmp 0x1009865b
lea edi, [esi + 0x2bbc]
push edi
call ebp
mov dl, byte [esi + 0x2bd4]
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push edi
mov byte [esp + 0x1b], dl
call ebx
cmp byte [esp + 0x17], 0
jne 0x1009865e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea edi, [esi + 0x2be0]
push edi
mov dword [esp + 0x6c], eax
call ebp
mov eax, dword [esp + 0x68]
push edi
mov dword [esi + 0x2bf8], eax
call ebx
lea edi, [esi + 0x2bbc]
push edi
call ebp
mov byte [esi + 0x2bd4], 1
push edi
call ebx
cmp byte [esi + 0x3021], 0
jne 0x1009868d
mov ecx, dword [esi + 0x2730]
mov edx, dword [ecx]
mov eax, dword [edx + 0x30]
push 0
call eax
test al, al
jne 0x1009868d
mov ecx, dword [esi + 0x2730]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov byte [esi + 0x3021], al
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
add dword [esi + 0x30f8], 1
mov edi, dword [esp + 0x188]
mov edx, eax
and edx, ecx
cmp edx, 0xffffffff
je 0x10098765
or eax, ecx
je 0x1009876c
cmp dword [esi + 0x1d70], 0
jne 0x1009876c
mov ecx, esi
call fcn.10087a10
push 0
push 0
mov ecx, esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
call fcn.10087c20
mov dword [edi + 0xc], eax
cmp byte [esi + 0xba7], 4
jne 0x1009876c
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.10087ae0
push 0
push 0x3e8
push edx
push eax
call fcn.1015a7a0
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x28]
push ecx
push edx
push eax
call fcn.1015bb60
xor ecx, ecx
cmp edx, ecx
jg 0x10098756
jl 0x10098727
cmp eax, dword [esp + 0x18]
jae 0x10098756
mov ecx, esi
call fcn.10087ae0
push 0
push 0x3e8
push edx
push eax
call fcn.1015a7a0
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x28]
push ecx
push edx
push eax
call fcn.1015bb60
mov dword [esp + 0x1c], edx
mov dword [edi + 0x18], eax
jmp 0x1009876c
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov dword [edi + 0x18], eax
jmp 0x1009876c
mov dword [edi + 0xc], 0
mov dl, byte [esi + 0x1e18]
test dl, dl
je 0x10098783
mov dword [esp + 0x34], 0
jmp 0x100989ca
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ebp, [esi + 0x22c4]
push ebp
mov dword [esp + 0x24], 0
call ebx
mov eax, dword [esi + 0x22e4]
mov edi, dword [esi + 0x22e0]
push ebp
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
or edi, dword [esp + 0x1c]
je 0x100988a7
lea edi, [esi + 0x22f0]
push edi
call ebx
mov ebp, dword [esi + 0x2308]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [esp + 0x54], ebp
jle 0x100988a7
lea edi, [esi + 0x22f0]
push edi
call ebx
mov ebp, dword [esi + 0x2308]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0x54]
sub edi, ebp
cmp edi, 1
jge 0x10098801
mov edi, 1
lea ebp, [esi + 0x22c4]
push ebp
call ebx
mov ecx, dword [esi + 0x22e0]
mov edx, dword [esi + 0x22e4]
push ebp
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x2c]
sub ecx, dword [esi + 0x3028]
mov ebp, dword [esp + 0x30]
sbb ebp, dword [esi + 0x302c]
sub ecx, dword [esp + 0x18]
mov eax, edi
sbb ebp, dword [esp + 0x1c]
cdq
push edx
push eax
push ebp
push ecx
call fcn.1015bb60
test eax, eax
mov dword [esp + 0x20], eax
jge 0x1009885d
mov dword [esp + 0x20], 0
lea edi, [esi + 0x22c4]
push edi
call ebx
mov edx, dword [esi + 0x22e0]
mov ebp, dword [esi + 0x22e4]
push edi
mov dword [esp + 0x1c], edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x30]
cmp eax, ebp
mov eax, dword [esp + 0x34]
jl 0x1009889b
jg 0x10098895
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [esp + 0x18]
jbe 0x1009889b
cmp dword [esp + 0x20], eax
jl 0x1009889f
test eax, eax
jne 0x100988a7
mov edx, dword [esp + 0x20]
mov dword [esp + 0x34], edx
lea edi, [esi + 0x22c4]
push edi
call ebx
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0xffffffffffffffff
xor ebp, ebp
push ebp
lea eax, [esi + 0x242a]
mov edi, 0xf
push eax
lea ecx, [esp + 0xe8]
mov dword [esp + 0x100], edi
mov dword [esp + 0xfc], ebp
mov byte [esp + 0xec], 0
call fcn.10005470
cmp dword [esp + 0xf4], 0x10
jb 0x10098904
mov eax, dword [esp + 0xe0]
push eax
call fcn.10159534
add esp, 4
cmp byte [esi + 0x3021], 0
mov dword [esp + 0xf4], edi
mov dword [esp + 0xf0], ebp
mov byte [esp + 0xe0], 0
je 0x1009892b
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x34], ebp
jne 0x1009893a
add dword [esi + 0x2330], 1
jmp 0x10098940
mov dword [esi + 0x2330], ebp
cmp dword [esi + 0x2330], 6
jge 0x10098999
lea edi, [esi + 0x2314]
push edi
call ebx
mov ebp, dword [esi + 0x232c]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebp, ebp
je 0x1009899d
lea edi, [esi + 0x2314]
push edi
call ebx
mov ebp, dword [esi + 0x232c]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x34]
lea edx, [eax + eax*2]
lea ecx, [edx + ebp*2]
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x34], eax
jmp 0x1009899d
mov dword [esp + 0x34], ebp
lea edi, [esi + 0x2314]
push edi
call ebx
mov ecx, dword [esp + 0x34]
push edi
mov dword [esi + 0x232c], ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0x188]
lea eax, [esi + 0x22f0]
push eax
call ebp
mov edx, dword [esp + 0x54]
lea eax, [esi + 0x22f0]
push eax
mov dword [esi + 0x2308], edx
call ebx
lea eax, [esi + 0x22c4]
push eax
call ebp
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [esi + 0x22e0], eax
lea eax, [esi + 0x22c4]
push eax
mov dword [esi + 0x22e4], ecx
call ebx
xor eax, eax
cmp dword [esp + 0x34], eax
mov dword [esi + 0x3028], eax
mov dword [esi + 0x302c], eax
jle 0x10098a2b
lea ecx, [esi + 0x2690]
call fcn.10029870
mov dl, byte [esi + 0x273c]
test dl, dl
jne 0x10098a43
cmp dword [esp + 0x34], 0
jle 0x10098a43
mov byte [esi + 0x273c], 1
mov eax, dword [esi + 0x2426]
mov edx, dword [esp + 0x184]
mov dword [edi], eax
cmp byte [esi + 0x2420], 2
setne cl
mov byte [edx], cl
mov al, byte [esi + 0x26d4]
test al, al
je 0x10098d1d
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x40]
push 0xffffffffffffffff
mov dword [edi + 0x10], eax
push 0
lea eax, [esi + 0x242a]
mov dword [edi + 0x14], ecx
push eax
lea ecx, [esp + 0x128]
mov dword [edi + 8], edx
mov dword [esp + 0x140], 0xf
mov dword [esp + 0x13c], 0
mov byte [esp + 0x12c], 0
call fcn.10005470
cmp dword [esp + 0x134], 0x10
jb 0x10098ad7
mov edx, dword [esp + 0x120]
push edx
call fcn.10159534
add esp, 4
mov eax, dword [esi + 0xc]
test eax, eax
je 0x10098bd7
mov eax, dword [eax + 0x200]
lea edi, [esi + 0x3178]
push eax
mov ecx, edi
call fcn.10041ae0
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 0x204]
push edx
mov ecx, edi
call fcn.10041af0
mov eax, dword [esi + 0xc]
cmp byte [eax + 0x208], 0
sete cl
push ecx
mov ecx, edi
call fcn.10041b10
mov edx, dword [esi + 0xc]
mov eax, dword [edx + 0x20c]
push eax
mov ecx, edi
call fcn.10041b00
mov ecx, dword [esi + 0xc]
cmp byte [ecx + 0x210], 0
mov ecx, edi
sete dl
push edx
call fcn.10041b40
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x214]
push ecx
mov ecx, edi
call fcn.10041b30
mov edx, dword [esi + 0xc]
cmp byte [edx + 0x218], 0
mov ecx, edi
sete al
push eax
call fcn.10041b60
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 0x21c]
push edx
mov ecx, edi
call fcn.10041b50
mov eax, dword [esi + 0xc]
cmp byte [eax + 0x220], 0
sete cl
push ecx
mov ecx, edi
call fcn.10041b80
mov edx, dword [esi + 0xc]
mov eax, dword [edx + 0x224]
push eax
mov ecx, edi
call fcn.10041b70
mov ecx, dword [esi + 0xc]
cmp byte [ecx + 0x228], 0
mov ecx, edi
sete dl
push edx
call fcn.10041bb0
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x22c]
push ecx
mov ecx, edi
call fcn.10041ba0
mov edx, dword [esi + 0xc]
movzx eax, byte [edx + 0x230]
push eax
mov ecx, edi
call fcn.10041b20
mov eax, dword [esi + 0x272c]
test eax, eax
je 0x10098c33
movzx ecx, byte [eax + 0x15b0]
lea edi, [esi + 0x3178]
push ecx
mov ecx, edi
call fcn.10041a90
mov edx, dword [esi + 0x272c]
mov eax, dword [edx + 0x15b4]
push eax
mov ecx, edi
call fcn.10041aa0
mov ecx, dword [esi + 0x272c]
movzx edx, byte [ecx + 0x15b8]
push edx
mov ecx, edi
call fcn.10041ab0
mov eax, dword [esi + 0x272c]
mov ecx, dword [eax + 0x15bc]
push ecx
mov ecx, edi
call fcn.10041ac0
sub esp, 0x1c
mov edx, esp
mov dword [esp + 0x74], esp
push edx
mov ecx, esi
call fcn.10089770
lea ecx, [esi + 0x3178]
mov dword [esp + 0x70], ecx
call fcn.100425e0
mov ecx, esi
call fcn.10087a10
mov ecx, dword [esi + 0x2730]
mov edi, eax
mov ebp, edx
call fcn.10135579
mov ecx, dword [esi + 0x2730]
mov ebx, eax
mov dword [esp + 0x84], edx
call fcn.10135425
mov ecx, dword [esi + 0x3348]
and ecx, dword [esi + 0x334c]
cmp ecx, 0xffffffff
jne 0x10098c9a
mov dword [esi + 0x3348], edi
mov dword [esi + 0x334c], ebp
sub edi, dword [esi + 0x3348]
sbb ebp, dword [esi + 0x334c]
mov ecx, edi
mov edi, dword [esp + 0x84]
mov dword [esp + 0x6c], ecx
mov esi, ebp
sub ecx, eax
mov dword [esp + 0x70], esi
sbb esi, edx
sub ecx, ebx
sbb esi, edi
test esi, esi
jg 0x10098cd9
jl 0x10098ccf
cmp ecx, 0x100000
jae 0x10098cd9
test esi, esi
jg 0x10098ce9
jl 0x10098cd9
test ecx, ecx
ja 0x10098ce9
add eax, ebx
adc edx, edi
mov dword [esp + 0x18], eax
or eax, edx
mov dword [esp + 0x1c], edx
jne 0x10098ced
fldz
jmp 0x10098cfb
fild qword [esp + 0x6c]
fild qword [esp + 0x18]
fdivp st(1)
fld1
fsubrp st(1)
mov ecx, dword [esp + 0x54]
sub esp, 8
fstp qword [esp]
call fcn.10041b90
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x18c]
push edx
call fcn.1008a160
jmp 0x10098d27
movzx eax, word [esi + 0x2548]
mov dword [edi + 0xc], eax
lea ecx, [esp + 0x74]
call fcn.100384c0
mov ecx, dword [esp + 0x78]
push ecx
call fcn.10159534
mov eax, dword [esp + 0x4c]
add esp, 4
test eax, eax
mov dword [esp + 0x78], 0
je 0x10098d6f
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x50]
lea ecx, [esp + 0x48]
push ecx
push edx
push eax
call fcn.10037cf0
mov eax, dword [esp + 0x58]
push eax
call fcn.10159534
add esp, 0x14
mov ecx, dword [esp + 0x174]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x16c
ret 0x20