Function at 0x45d680
Capabilities:
Create thread
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xfc
mov eax, ecx
mov dword [esp + 0xd0], 1
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
mov esi, dword [eax]
push edi
mov dword [esp + 0x24], eax
mov dword [esp + 0xb0], esi
nop
push 0xffffffffffffffff
push dword [eax + 0x1c]
xorps xmm0, xmm0
mov dword [esp + 0x8c], 0
movlpd qword [esp + 0x68], xmm0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x30], 0
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x45d6f6
call ebx
test eax, eax
je 0x45e891
test eax, eax
jne 0x45e89d
cmp dword [esi + 0x24], eax
jne 0x45e89b
mov ebx, dword [esi + 0x34]
mov eax, ebx
mov edx, dword [esi + 0x30]
mov ecx, edx
push ebx
push edx
push 0
add ecx, 1
mov dword [esp + 0x84], edx
push 0
adc eax, 0
mov dword [esi + 0x30], ecx
push 0
push 0
lea edx, [esp + 0x6c]
mov dword [esp + 0xb8], ebx
mov ecx, esi
mov dword [esi + 0x34], eax
call fcn.0045d5b0
mov ebx, dword [esi + 0x70]
xor edx, edx
mov ecx, dword [esp + 0x6c]
mov edi, eax
add esp, 0x18
mov dword [esp + 0x10], ebx
mov dword [esp + 0x34], edx
xorps xmm0, xmm0
mov dword [esp + 0x58], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x38], edx
movlpd qword [esp + 0x90], xmm0
mov dword [esp + 0x40], ecx
test edi, edi
jne 0x45df7d
test ecx, ecx
jne 0x45df7d
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x24]
mov ebx, dword [esi + 0x64]
sub ebx, dword [esi + 0x60]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x60]
mov eax, dword [eax + 8]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], ebx
test eax, eax
jne 0x45d802
mov ecx, dword [esi + 0x14]
mov eax, dword [esi]
add eax, 0x10
push eax
mov eax, dword [ecx]
push ecx
call eax
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
je 0x45dddf
mov edx, dword [esp + 0x3c]
mov dword [eax], 0
test edx, edx
je 0x45d7fb
mov dword [edx], eax
jmp 0x45d802
mov ecx, dword [esp + 0x24]
mov dword [ecx + 8], eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], eax
test ebx, ebx
je 0x45d833
mov eax, dword [esi + 0x60]
add eax, 0x10
mov dword [esp + 0x14], ebx
add eax, dword [esi + 0x5c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x38], ebx
mov dword [esp + 0x20], eax
jmp 0x45d955
mov edi, dword [esi]
mov edx, eax
mov eax, dword [esi + 0xc]
xor ebx, ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x90], eax
test edi, edi
je 0x45d894
nop dword [eax + eax]
lea ecx, [esp + 0x44]
mov dword [esp + 0x44], edi
push ecx
push edx
push eax
mov eax, dword [eax]
call eax
mov edx, dword [esp + 0x68]
mov ecx, eax
mov eax, dword [esp + 0x50]
add esp, 0xc
add edx, eax
mov dword [esp + 0x88], ecx
add ebx, eax
mov dword [esp + 0x5c], edx
sub edi, eax
test ecx, ecx
jne 0x45da02
test eax, eax
je 0x45d894
mov eax, dword [esp + 0x90]
test edi, edi
jne 0x45d850
xor edi, edi
add dword [esp + 0x14], ebx
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
adc edx, 0
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x18], edx
cmove eax, ebx
add dword [esi + 0x68], ebx
mov dword [esp + 0x38], eax
adc dword [esi + 0x6c], 0
xor ecx, ecx
cmp ebx, dword [esi]
setne cl
mov dword [esp + 0x10], ecx
je 0x45d8d0
mov dword [esi + 0x70], 1
test edi, edi
je 0x45d8e8
mov dword [esi + 0x48], edi
xor edi, edi
mov dword [esi + 0x70], 1
mov dword [esp + 0x10], 1
mov ecx, dword [esp + 0x14]
mov eax, edx
sub ecx, dword [esp + 0x80]
sbb eax, dword [esp + 0x7c]
mov dword [esp + 0x94], eax
jne 0x45d907
cmp ecx, 1
jb 0x45d955
push dword [esp + 0xa0]
lea edx, [esp + 0x58]
mov ecx, esi
push dword [esp + 0x7c]
push 0
push 0
push 0
push 0
call fcn.0045d5b0
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x45df6c
mov eax, dword [esp + 0x54]
mov dword [esp + 0x40], eax
test eax, eax
jne 0x45de6f
mov eax, dword [esp + 0x14]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x7c], eax
xor eax, eax
mov dword [esp + 0xe8], ebx
cmp dword [esp + 0x3c], eax
lea ecx, [esp + 0xe0]
push ecx
mov ecx, dword [esp + 0x28]
sete al
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x14]
push dword [ecx + 4]
mov dword [esp + 0xf4], eax
mov eax, dword [esi + 0x18]
push dword [esi + 0x1c]
mov dword [esp + 0x100], 1
mov eax, dword [eax]
call eax
mov ecx, dword [esp + 0xfc]
add esp, 0xc
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x58], 1
mov dword [esp + 0x28], eax
cmp ecx, 1
je 0x45de31
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x45da0e
push dword [esp + 0xe8]
push dword [esp + 0x24]
push dword [esp + 0x38]
call fcn.0058aed0
mov eax, dword [esp + 0xf4]
add esp, 0xc
add dword [esi + 0x60], eax
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xf0]
jmp 0x45da15
mov edi, dword [esp + 0x88]
jmp 0x45d896
mov eax, dword [esp + 0xe8]
test ecx, ecx
jne 0x45dd2c
cmp dword [esp + 0x10], ecx
jne 0x45dd4b
cmp eax, ebx
jne 0x45da52
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov eax, dword [eax]
mov dword [esp + 0x2c], eax
test ebx, ebx
je 0x45d7c8
xor ebx, ebx
mov dword [esi + 0x60], ebx
mov dword [esi + 0x64], ebx
jmp 0x45d7c4
mov edi, 0xb
mov dword [esp + 0x3c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov ebx, 1
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x6c]
xorps xmm0, xmm0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x88], edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x20], edi
mov dword [esp + 0xa4], edx
mov dword [esp + 0xb4], ebx
movlpd qword [esp + 0x60], xmm0
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0x98], xmm0
movlpd qword [esp + 0xb8], xmm0
test edi, edi
jne 0x45df45
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
movlpd qword [esp + 0x60], xmm0
movlpd qword [esp + 0xa8], xmm0
test ecx, ecx
je 0x45df45
cmp dword [esp + 0x88], 0
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0xb4]
mov dword [esp + 0x84], esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x80]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0xa4]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0xb0]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
movlpd qword [esp + 0x60], xmm0
movlpd qword [esp + 0xa8], xmm0
jne 0x45df45
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xa4]
mov ebx, dword [ebx + 8]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x18], ecx
movlpd qword [esp + 0x60], xmm0
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x60]
movlpd qword [esp + 0xa8], xmm0
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x38], eax
nop word [eax + eax]
add edx, eax
mov dword [esp + 0x8c], 1
mov dword [esp + 0x98], edx
adc ecx, 0
mov dword [esp + 0x9c], ecx
cmp edx, dword [esp + 0x14]
jne 0x45e0bf
cmp ecx, dword [esp + 0x18]
jne 0x45e0bf
mov edx, 1
jmp 0x45e0c1
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0xf0], 3
cmove ecx, dword [esp + 0xdc]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 0x34], 1
cmp eax, ebx
je 0x45de59
cmp ecx, 3
jne 0x45dd9e
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x84], ecx
mov ecx, ebx
sub ecx, eax
xor ebx, ebx
test edx, edx
mov dword [esp + 0x74], ecx
setne bl
sub dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x38]
sbb dword [esp + 0x18], 0
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x70], ebx
cmove ecx, eax
mov dword [esp + 0x38], ecx
jmp 0x45de67
test edx, edx
je 0x45ddb0
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
jmp 0x45de19
mov ecx, dword [esi + 0x5c]
test ecx, ecx
jne 0x45ddd8
mov ecx, dword [esi + 0x14]
mov eax, dword [esi]
add eax, 0x10
push eax
mov eax, dword [ecx]
push ecx
call eax
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x45dddf
mov eax, dword [esp + 0xe8]
mov dword [esi + 0x5c], ecx
lea edx, [ecx + 0x10]
test edx, edx
jne 0x45ddee
mov ebx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x48], ebx
jmp 0x45de6b
sub ebx, eax
mov dword [esi + 0x60], 0
sub dword [esp + 0x14], ebx
push ebx
sbb dword [esp + 0x1c], 0
add eax, dword [esp + 0x24]
push eax
push edx
mov dword [esi + 0x64], ebx
call fcn.0058aed0
mov eax, dword [esp + 0xf4]
add esp, 0xc
cmp dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x38]
cmove ecx, eax
xor ebx, ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], ebx
jmp 0x45de6b
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x10], 1
mov dword [esp + 0x6c], 1
je 0x45de59
push ebx
push dword [esp + 0x24]
push dword [esp + 0x38]
call fcn.0058aed0
add esp, 0xc
mov dword [esi + 0x64], 0
mov dword [esi + 0x60], 0
mov ebx, dword [esp + 0x10]
test edi, edi
jne 0x45dec4
lea ebx, [esi + 0xb0]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x45dea9
mov eax, dword [esp + 0xa0]
cmp eax, dword [esi + 0x94]
jb 0x45dea9
ja 0x45dea2
mov eax, dword [esp + 0x78]
cmp eax, dword [esi + 0x90]
jbe 0x45dea9
mov eax, 1
jmp 0x45deab
xor eax, eax
mov edi, dword [esi + 0x9c]
push ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x58], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x3c], 0
test edi, edi
jne 0x45da5f
test edx, edx
je 0x45df98
test ecx, ecx
jne 0x45da5f
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + 0x18]
push dword [ecx + 4]
mov eax, dword [eax + 4]
push dword [esi + 0x1c]
call eax
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
je 0x45dfa0
xorps xmm0, xmm0
mov dword [esp + 0x34], edi
mov dword [esp + 0x10], 1
mov dword [esp + 0x50], edi
mov dword [esp + 0x4c], edi
movlpd qword [esp + 0x98], xmm0
movlpd qword [esp + 0xb8], xmm0
movlpd qword [esp + 0x60], xmm0
movlpd qword [esp + 0xa8], xmm0
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x30], eax
jmp 0x45e4a2
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
jmp 0x45dec8
mov eax, dword [esp + 0x94]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x14], eax
jmp 0x45decc
test ecx, ecx
jne 0x45da5f
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
test ebx, ebx
jne 0x45da78
mov ecx, dword [esi + 0x58]
mov eax, ecx
cmp ecx, dword [esi + 0x54]
jae 0x45e071
cmp dword [esp + 0x28], ebx
je 0x45e071
add ecx, 5
lea eax, [ecx + ecx*4]
lea eax, [esi + eax*8]
mov ecx, eax
mov dword [esp + 0x44], eax
call fcn.0045d4a0
mov ecx, eax
test ecx, ecx
jne 0x45e040
mov eax, dword [esp + 0x44]
cmp dword [eax + 0x18], ecx
je 0x45dffc
mov eax, dword [esi + 0x58]
inc eax
mov dword [esi + 0x58], eax
jmp 0x45e071
lea ecx, [esp + 0x104]
push ecx
push 0
push eax
push fcn.0045e8b0
push 0
push 0
call fcn.005934c4
mov ecx, dword [esp + 0x5c]
add esp, 0x18
mov dword [ecx + 0x18], eax
test eax, eax
jne 0x45e037
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ecx, 1
cmovne ecx, eax
test ecx, ecx
jne 0x45e040
mov eax, dword [esi + 0x58]
inc eax
mov dword [esi + 0x58], eax
jmp 0x45e071
jle 0x45e04b
movzx ecx, cx
or ecx, 0x80070000
mov eax, dword [esi + 0x58]
test ecx, ecx
jne 0x45e058
inc eax
mov dword [esi + 0x58], eax
jmp 0x45e071
cmp eax, 1
jne 0x45e06e
mov dword [esp + 0x34], 0
mov dword [esp + 0x4c], ecx
jmp 0x45da6f
mov dword [esi + 0x54], eax
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 4]
inc ecx
cmp ecx, eax
sbb eax, eax
and eax, ecx
add eax, 5
lea eax, [eax + eax*4]
push dword [esi + eax*8 + 0x1c]
lea eax, [esi + eax*8]
mov dword [esp + 0x54], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x45da78
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov ecx, 1
cmovne ecx, eax
test ecx, ecx
je 0x45da78
mov eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor edx, edx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0xa8], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x5c], ebx
lea ebx, [esp + 0x8c]
push ebx
mov dword [esp + 0x48], ecx
lea ebx, [esp + 0xbc]
mov ecx, dword [esp + 0x3c]
push ebx
mov dword [esp + 0xd0], ecx
lea ebx, [esp + 0xa0]
mov ecx, dword [esp + 0x74]
push ebx
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x54]
push edx
push eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xe8], ecx
add eax, 0x10
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x84]
push eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x9c]
push dword [eax + 4]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esi + 0x18]
push dword [esi + 0x1c]
mov eax, dword [ecx + 8]
call eax
mov ebx, dword [esp + 0x38]
add esp, 0x20
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x45e441
cmp dword [esp + 0x8c], 0
jne 0x45e49e
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
cmp edx, dword [esp + 0x14]
jne 0x45e1bd
cmp ecx, ebx
je 0x45e49e
mov esi, dword [esp + 0xbc]
mov eax, edx
sub eax, dword [esp + 0x20]
mov ebx, ecx
sbb ebx, dword [esp + 0x28]
mov dword [esp + 0xb4], ebx
mov ebx, dword [esp + 0xb8]
sub ebx, dword [esp + 0x30]
sbb esi, dword [esp + 0x1c]
cmp dword [esp + 0xb4], 0
mov dword [esp + 0xa4], esi
mov esi, dword [esp + 0xb0]
ja 0x45e214
jb 0x45e205
cmp eax, 1
jae 0x45e214
cmp dword [esp + 0xa4], 0
ja 0x45e214
cmp ebx, 1
jb 0x45e286
push dword [esp + 0xa0]
lea edx, [esp + 0x58]
mov ecx, esi
push dword [esp + 0x7c]
push dword [esp + 0xac]
push ebx
push dword [esp + 0xc4]
push eax
call fcn.0045d5b0
mov edi, eax
add esp, 0x18
mov eax, dword [esp + 0x54]
mov dword [esp + 0x40], eax
test edi, edi
jne 0x45e49e
test eax, eax
jne 0x45e49e
mov esi, dword [esp + 0xb8]
mov ecx, dword [esp + 0x9c]
mov eax, ecx
mov ebx, dword [esp + 0x98]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0xbc]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0xb0]
jmp 0x45e28e
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x48], edx
mov eax, dword [eax]
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0xc8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x98]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x20], ebx
mov ebx, dword [esi]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xa4], ebx
sbb eax, ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x4c], edx
xor edx, edx
mov dword [esp + 0x18], ebx
cmp edx, eax
mov ebx, dword [esp + 0xa8]
mov edx, dword [esp + 0x98]
mov eax, dword [esi]
mov dword [esp + 0x10], ebx
jb 0x45dcf0
ja 0x45e380
mov eax, dword [esp + 0xa4]
cmp eax, dword [esp + 0x8c]
jbe 0x45dcf0
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0xc8]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x74], ebx
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xd4]
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0xd8]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x60]
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x88]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0xa8]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0xb0]
mov dword [esp + 0x10], ebx
jmp 0x45dcf0
lea ebx, [esi + 0xb0]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x45e476
mov eax, dword [esp + 0xa0]
cmp eax, dword [esi + 0x94]
ja 0x45e497
mov eax, dword [esp + 0x78]
jb 0x45e47a
cmp eax, dword [esi + 0x90]
jae 0x45e497
jmp 0x45e47a
mov eax, dword [esp + 0x78]
mov dword [esi + 0x90], eax
mov eax, dword [esp + 0xa0]
mov dword [esi + 0x94], eax
mov dword [esi + 0x88], 1
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
push 0xffffffffffffffff
push dword [eax + 0x20]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x45e4c4
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x45e891
test eax, eax
jne 0x45e89d
cmp dword [esi + 0x24], 0
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x90], 1
mov dword [esp + 0x2c], eax
jne 0x45e89b
cmp dword [esi + 0x50], 0
je 0x45e505
mov eax, 1
mov dword [esp + 0x40], eax
mov dword [esp + 0x54], eax
jmp 0x45e57b
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x48]
test eax, eax
je 0x45e526
cmp eax, 2
mov dword [esi + 0x4c], eax
mov eax, 1
mov dword [esi + 0x50], 1
cmove ecx, eax
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x45e540
mov dword [esi + 0x50], 1
mov dword [esi + 0x40], eax
mov dword [esp + 0x2c], 0
test ecx, ecx
je 0x45e55a
mov dword [esi + 0x50], 1
mov dword [esi + 0x38], 1
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x6c], 0
mov eax, dword [esp + 0x40]
je 0x45e57b
mov dword [esi + 0x50], 1
mov dword [esi + 0x3c], 1
mov dword [esp + 0x2c], 0
cmp dword [esp + 0x34], 0
je 0x45e667
test eax, eax
je 0x45e59f
xorps xmm0, xmm0
movlpd qword [esp + 0x98], xmm0
movlpd qword [esp + 0xb8], xmm0
mov eax, dword [esp + 0x98]
sub eax, dword [esp + 0x20]
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x60], eax
sbb edi, ebx
mov eax, dword [esp + 0xb8]
sub eax, dword [esp + 0x30]
mov ebx, dword [esp + 0xbc]
sbb ebx, dword [esp + 0x1c]
mov dword [esp + 0xa8], eax
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [esp + 0x60]
add ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0xa4]
mov edx, dword [esp + 0xa8]
adc eax, edi
add edx, dword [esi + 0xa8]
mov edi, dword [esi + 0xac]
adc edi, ebx
mov dword [esp + 0x60], eax
cmp dword [esi + 0x9c], 0
mov dword [esi + 0xa0], ecx
mov dword [esi + 0xa4], eax
mov dword [esi + 0xa8], edx
mov dword [esi + 0xac], edi
jne 0x45e654
mov eax, dword [esi + 0x98]
test eax, eax
je 0x45e654
push edi
push edx
push dword [esp + 0x68]
push ecx
push eax
mov eax, dword [eax]
call eax
add esp, 0x14
test eax, eax
je 0x45e654
mov dword [esi + 0x9c], 0xa
mov edi, dword [esi + 0x9c]
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ebx, dword [esp + 0x10]
xor ecx, ecx
test ebx, ebx
sete cl
cmp dword [esp + 0x58], 0
mov dword [esp + 0xc4], ecx
je 0x45e766
test edi, edi
jne 0x45e699
cmp dword [esp + 0x2c], edi
je 0x45e699
cmp dword [esp + 0x40], edi
jne 0x45e699
lea ecx, [edi + 1]
jmp 0x45e69b
xor ecx, ecx
mov eax, dword [esi + 0x18]
lea edx, [esp + 0x90]
push edx
lea edx, [esp + 0xc8]
push edx
push dword [esp + 0x78]
mov eax, dword [eax + 0xc]
push dword [esp + 0x80]
push dword [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x3c]
push dword [ecx + 4]
push dword [esi + 0x1c]
call eax
mov edi, eax
add esp, 0x20
test edi, edi
je 0x45e6ed
mov dword [esp + 0x88], 1
mov dword [esi + 0x50], 1
jmp 0x45e6fc
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jne 0x45e766
test ebx, ebx
jne 0x45e766
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x45e731
mov eax, dword [esp + 0xa0]
cmp eax, dword [esi + 0x94]
ja 0x45e752
mov eax, dword [esp + 0x78]
jb 0x45e735
cmp eax, dword [esi + 0x90]
jae 0x45e752
jmp 0x45e735
mov eax, dword [esp + 0x78]
mov dword [esi + 0x90], eax
mov eax, dword [esp + 0xa0]
mov dword [esi + 0x94], eax
mov dword [esi + 0x88], 1
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0xc4]
cmp dword [esp + 0x90], 0
je 0x45e7e5
cmp dword [esp + 0x34], 0
je 0x45e79d
test edi, edi
jne 0x45e79d
cmp dword [esi + 0x50], edi
jne 0x45e79d
cmp dword [esp + 0x3c], edi
jne 0x45e79d
cmp dword [esp + 0x40], edi
jne 0x45e79d
cmp dword [esi + 0x84], edi
jne 0x45e7b3
cmp dword [esp + 0x88], edi
je 0x45e7e5
cmp dword [esi + 0x84], 0
jne 0x45e7b3
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 4]
mov dword [esi + 0x80], eax
mov edi, dword [esp + 0x14]
mov eax, edi
mov edx, dword [esp + 0x18]
or eax, edx
jne 0x45e7c5
test ebx, ebx
jne 0x45e811
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
mov dword [esi + 0xc], eax
mov eax, esi
mov esi, dword [esp + 0xb0]
mov dword [eax + 0x10], edi
mov dword [eax + 0x14], edx
inc dword [esi + 0x84]
test ebx, ebx
jne 0x45e811
mov eax, dword [esp + 0x50]
push dword [eax + 0x20]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
mov eax, dword [esp + 0x24]
jne 0x45d6b0
call ebx
mov ecx, 1
jmp 0x45e87b
test ecx, ecx
je 0x45e843
push dword [esi + 0xe8]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x45e85a
call ebx
mov edi, 1
test eax, eax
mov ecx, edi
cmovne ecx, eax
test ecx, ecx
jne 0x45e0b6
jmp 0x45e85f
mov eax, dword [esp + 0x24]
cmp dword [eax + 4], 0
je 0x45e89b
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x24], 1
mov edi, 1
push dword [esi + 0xe4]
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
mov eax, dword [esp + 0x24]
jne 0x45d6b0
call ebx
mov ecx, edi
test eax, eax
cmovne ecx, eax
test ecx, ecx
jne 0x45e0b6
mov eax, dword [esp + 0x24]
jmp 0x45d6b0
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret