Function at 0x418760
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x100
push ebx
mov eax, ecx
push ebp
push esi
push edi
mov esi, dword [eax]
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x48], eax
mov dword [esp + 0xb4], esi
call fcn.00419b20
test eax, eax
jne 0x41985d
nop
cmp dword [esi + 0x24], 0
jne 0x41985b
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 + 0x7c], edx
push 0
push 0
adc eax, 0
mov dword [esi + 0x30], ecx
push 0
lea edx, [esp + 0x80]
mov dword [esp + 0xb4], ebx
mov ecx, esi
mov dword [esi + 0x34], eax
call fcn.00418560
mov edi, dword [esi + 0x70]
mov ebp, eax
mov eax, dword [esp + 0x68]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x20], ebp
xor ebx, ebx
mov dword [esp + 0x18], edi
mov dword [esp + 0x44], 0
xorps xmm0, xmm0
mov dword [esp + 0x64], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x40], 0
movlpd qword [esp + 0x90], xmm0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], eax
test ebp, ebp
jne 0x418cdc
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ecx
test eax, eax
jne 0x418cdc
mov eax, dword [esp + 0x48]
mov ebx, dword [esi + 0x64]
sub ebx, dword [esi + 0x60]
movlpd qword [esp + 0x78], xmm0
mov edi, dword [eax + 8]
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], eax
test edi, edi
jne 0x4188c8
mov eax, dword [esi + 0x14]
mov ecx, eax
mov edx, dword [esi]
add edx, 0x10
mov eax, dword [eax]
call eax
mov edi, eax
test edi, edi
je 0x418ab7
mov ecx, dword [esp + 0x30]
mov dword [edi], 0
test ecx, ecx
je 0x4188c1
mov dword [ecx], edi
jmp 0x4188c8
mov eax, dword [esp + 0x48]
mov dword [eax + 8], edi
lea ecx, [edi + 0x10]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x2c], ecx
test ebx, ebx
je 0x418905
mov eax, dword [esi + 0x60]
mov edx, ebx
add eax, 0x10
mov dword [esp + 0x14], ebx
add eax, dword [esi + 0x5c]
mov dword [esp + 0x28], 0
mov dword [esp + 0x40], ebx
mov dword [esp + 0x84], edx
mov dword [esp + 0x2c], eax
jmp 0x4189e7
mov eax, dword [esi]
mov edx, ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x84], eax
lea eax, [esp + 0x84]
push eax
call fcn.00413c90
mov edx, dword [esp + 0x84]
mov ebp, eax
add dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
adc dword [esp + 0x28], 0
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x40]
cmove eax, edx
add dword [esi + 0x68], edx
mov dword [esp + 0x40], eax
adc dword [esi + 0x6c], 0
xor ecx, ecx
cmp edx, dword [esi]
setne cl
mov dword [esp + 0x18], ecx
je 0x418961
mov dword [esi + 0x70], 1
test ebp, ebp
je 0x41897d
mov dword [esi + 0x48], ebp
xor ebp, ebp
mov dword [esi + 0x70], 1
mov dword [esp + 0x18], 1
mov dword [esp + 0x20], ebp
mov ecx, dword [esp + 0x14]
sub ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x74]
jne 0x418994
cmp ecx, 1
jb 0x4189e7
push dword [esp + 0x9c]
lea edx, [esp + 0x6c]
mov ecx, esi
push dword [esp + 0x74]
push 0
push 0
push 0
push 0
call fcn.00418560
mov ebp, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x3c], eax
test ebp, ebp
jne 0x418c62
test eax, eax
jne 0x418c62
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x74], eax
xor eax, eax
mov dword [esp + 0xf8], edx
cmp dword [esp + 0x30], eax
lea ecx, [esp + 0xf0]
push ecx
mov ecx, dword [esp + 0x4c]
sete al
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [ecx + 4]
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x100], eax
mov eax, dword [esi + 0x18]
mov dword [esp + 0x108], 1
mov eax, dword [eax]
call eax
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x64], 1
mov dword [esp + 0x34], ecx
cmp eax, 1
je 0x418c26
mov ebp, dword [esp + 0xf8]
test ebx, ebx
je 0x418a81
push ebp
push dword [esp + 0x30]
lea eax, [edi + 0x10]
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x10c]
add esp, 0xc
add dword [esi + 0x60], ebp
test eax, eax
jne 0x418b02
cmp dword [esp + 0x18], eax
jne 0x418b17
cmp ebp, dword [esp + 0x84]
jne 0x418ac9
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x30], edi
mov edi, dword [edi]
test ebx, ebx
je 0x418893
xor ebx, ebx
mov dword [esi + 0x60], ebx
mov dword [esi + 0x64], ebx
jmp 0x418893
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x5c], edi
jmp 0x418c66
xor ecx, ecx
xor edx, edx
xor ebx, ebx
mov dword [esp + 0x1c], edx
mov ebp, 0xb
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x54], ecx
mov edi, 1
mov dword [esp + 0x20], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x60], 0
jmp 0x418ead
mov edi, dword [esp + 0x18]
cmp eax, 3
mov ecx, 1
cmove edi, ecx
mov dword [esp + 0x18], edi
jmp 0x418b1b
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x44], 1
cmp ebp, ecx
jne 0x418b45
mov ebp, dword [esp + 0x20]
mov dword [esi + 0x60], 0
mov dword [esi + 0x64], 0
jmp 0x418c66
cmp eax, 3
jne 0x418b84
mov eax, dword [esp + 0x2c]
sub ecx, ebp
mov edx, dword [esp + 0x40]
add eax, ebp
test ebx, ebx
mov dword [esp + 0x1c], eax
mov ebx, 0
setne bl
sub dword [esp + 0x14], ecx
sbb dword [esp + 0x28], 0
cmp dword [esp + 0x30], 0
cmove edx, ebp
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x40], edx
mov edx, eax
jmp 0x418c70
test ebx, ebx
je 0x418b96
mov dword [esp + 0x14], ebp
mov dword [esp + 0x28], 0
jmp 0x418c0a
mov eax, dword [esi + 0x5c]
test eax, eax
jne 0x418bc0
mov eax, dword [esi + 0x14]
mov ecx, eax
mov edx, dword [esi]
add edx, 0x10
mov eax, dword [eax]
call eax
test eax, eax
je 0x418bc7
mov ecx, dword [esp + 0x84]
mov ebp, dword [esp + 0xf8]
mov dword [esi + 0x5c], eax
lea edx, [eax + 0x10]
test edx, edx
jne 0x418bdd
mov ebp, dword [esp + 0x20]
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x5c], edi
jmp 0x418c66
mov eax, dword [esp + 0x2c]
sub ecx, ebp
sub dword [esp + 0x14], ecx
push ecx
sbb dword [esp + 0x2c], 0
add eax, ebp
push eax
push edx
mov dword [esi + 0x64], ecx
mov dword [esi + 0x60], 0
call sub.msvcrt.dll_memcpy
mov ebp, dword [esp + 0x104]
add esp, 0xc
cmp dword [esp + 0x30], 0
mov edx, dword [esp + 0x40]
cmove edx, ebp
mov ebp, dword [esp + 0x20]
xor edi, edi
mov dword [esp + 0x40], edx
mov dword [esp + 0x18], edi
jmp 0x418c66
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x6c], edi
test ebx, ebx
je 0x418c52
push dword [esp + 0x84]
mov eax, dword [esp + 0x94]
push dword [esp + 0x30]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [esi + 0x60], 0
mov dword [esi + 0x64], 0
jmp 0x418c66
mov edi, dword [esp + 0x18]
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x1c], edx
xor ebx, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ebx
test ebp, ebp
jne 0x418cf2
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], ebp
je 0x418cb5
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
jb 0x418cb5
ja 0x418cae
mov eax, dword [esp + 0x70]
cmp eax, dword [esi + 0x90]
jbe 0x418cb5
mov eax, 1
jmp 0x418cb7
xor eax, eax
mov ebp, dword [esi + 0x9c]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x68], eax
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
jmp 0x418cf2
mov eax, dword [esp + 0x94]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x14], eax
mov dword [esp + 0x54], 0
test ebp, ebp
jne 0x418ae4
cmp dword [esp + 0x44], ebp
je 0x418dee
cmp dword [esp + 0x3c], ebp
jne 0x418ae4
mov ecx, dword [esp + 0x48]
mov eax, dword [esi + 0x18]
mov edx, dword [ecx + 4]
mov ecx, dword [esi + 0x1c]
mov eax, dword [eax + 4]
call eax
mov dword [esp + 0x54], eax
test eax, eax
je 0x418df9
xorps xmm0, xmm0
mov dword [esp + 0x44], ebp
mov dword [esp + 0x18], 1
mov dword [esp + 0x20], ebp
mov dword [esp + 0x60], ebp
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0xc8], xmm0
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0xa0], xmm0
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x20]
call fcn.00419b20
test eax, eax
jne 0x41985d
cmp dword [esi + 0x24], 0
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x90], 1
mov dword [esp + 0x34], eax
jne 0x41985b
cmp dword [esi + 0x50], 0
je 0x419530
mov edi, 1
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], edi
jmp 0x41959e
cmp dword [esp + 0x3c], 0
jne 0x418ae4
mov dword [esp + 0x20], 0
mov dword [esp + 0x60], 0
test edi, edi
jne 0x418ea5
mov eax, dword [esi + 0x58]
mov edx, eax
cmp eax, dword [esi + 0x54]
jae 0x419145
cmp dword [esp + 0x34], edi
je 0x419145
lea eax, [eax + eax*4]
lea eax, [eax + 0x19]
lea eax, [esi + eax*8]
lea ecx, [eax + 0x20]
mov dword [esp + 0x50], eax
call fcn.004199b0
test eax, eax
jne 0x418e6d
mov ecx, dword [esp + 0x50]
add ecx, 0x1c
call fcn.004199b0
test eax, eax
jne 0x418e6d
mov eax, dword [esp + 0x50]
cmp dword [eax + 0x18], edi
lea ecx, [eax + 0x18]
jne 0x418e7b
push eax
mov edx, fcn.004198e0
call fcn.00419c50
test eax, eax
je 0x418e7b
jle 0x418e77
movzx eax, ax
or eax, 0x80070000
test eax, eax
jne 0x418e87
mov edx, dword [esi + 0x58]
inc edx
mov dword [esi + 0x58], edx
jmp 0x419145
mov edx, dword [esi + 0x58]
cmp edx, 1
jne 0x419142
mov edi, edx
mov dword [esp + 0x44], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x6c]
xorps xmm0, xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x88], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x64]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0xb8], eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xc0], edx
mov dword [esp + 0xbc], edi
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0xa0], xmm0
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0xc8], xmm0
test ebp, ebp
jne 0x418d6c
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edi
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0xa0], xmm0
test ecx, ecx
je 0x418d6c
cmp dword [esp + 0x8c], 0
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x74]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x54], ebp
mov ebp, dword [esp + 0xc0]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x4c]
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0xc4]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x50]
mov dword [esp + 0x38], ebp
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edi
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0xa0], xmm0
jne 0x418d6c
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x58]
mov ebx, dword [ebx + 8]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x6c], ecx
movlpd qword [esp + 0x78], xmm0
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x78]
movlpd qword [esp + 0xa0], xmm0
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0xbc]
mov dword [esp + 0x40], eax
mov eax, edx
mov edx, dword [esp + 0xa8]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], edi
mov dword [esp + 0x14], eax
nop word [eax + eax]
add edx, dword [esp + 0xb8]
mov dword [esp + 0xa8], edx
adc ecx, 0
mov dword [esp + 0x88], 1
mov dword [esp + 0xac], ecx
cmp edx, eax
jne 0x419175
cmp ecx, edi
jne 0x419175
mov ecx, 1
jmp 0x419177
mov dword [esi + 0x54], edx
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 4]
inc ecx
cmp ecx, edx
sbb eax, eax
and eax, ecx
add eax, 5
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
lea ecx, [eax + 0x1c]
mov dword [esp + 0x20], eax
call fcn.00419ab0
test eax, eax
jne 0x41985d
jmp 0x418ea5
xor ecx, ecx
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc0], eax
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0xcc]
mov dword [esp + 0x94], edx
mov edx, dword [esp + 0x24]
push eax
lea eax, [esp + 0xb0]
mov dword [esp + 0xd8], edx
mov edx, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x40]
push ecx
push dword [esp + 0xc8]
mov ecx, dword [esi + 0x1c]
add eax, 0x10
push eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x68], edi
mov edi, dword [esi + 0x18]
mov dword [esp + 0xa4], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x90], ebx
mov eax, dword [edi + 8]
call eax
mov ebx, eax
mov dword [esp + 0x54], ebx
test ebx, ebx
jne 0x4194ca
cmp dword [esp + 0x88], eax
jne 0x419527
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
cmp edx, dword [esp + 0x14]
jne 0x419267
cmp ecx, dword [esp + 0x28]
je 0x419527
mov edi, dword [esp + 0xc8]
mov eax, edx
sub eax, dword [esp + 0x58]
mov ebx, ecx
sbb ebx, dword [esp + 0x2c]
sub edi, dword [esp + 0x4c]
mov dword [esp + 0xc4], ebx
mov ebx, dword [esp + 0xcc]
sbb ebx, dword [esp + 0x30]
cmp dword [esp + 0xc4], 0
ja 0x4192aa
jb 0x4192a1
cmp eax, 1
jae 0x4192aa
test ebx, ebx
jne 0x4192aa
cmp edi, 1
jb 0x41930a
push dword [esp + 0x9c]
lea edx, [esp + 0x6c]
mov ecx, esi
push dword [esp + 0x74]
push ebx
push edi
push dword [esp + 0xd4]
push eax
call fcn.00418560
mov edi, dword [esp + 0x68]
mov ebp, eax
mov dword [esp + 0x3c], edi
test ebp, ebp
jne 0x418d96
test edi, edi
jne 0x418d96
mov edi, dword [esp + 0xc8]
mov edx, dword [esp + 0xa8]
mov ebx, edx
mov ecx, dword [esp + 0xac]
mov eax, ecx
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0xcc]
jmp 0x419316
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x58], ebx
mov ebx, dword [esi]
mov esi, dword [esp + 0xc0]
mov eax, dword [eax]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0xbc]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0xa0]
mov eax, edi
mov dword [esp + 0x40], esi
sub eax, edx
mov esi, dword [esp + 0x8c]
mov dword [esp + 0xb8], ebx
mov ebx, dword [esp + 0xe0]
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], ebx
sbb eax, ecx
mov ebx, dword [esp + 0xec]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0xe4]
mov dword [esp + 0x60], esi
xor esi, esi
mov dword [esp + 0x14], edi
cmp esi, eax
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0xb4]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x28], edi
mov dword [esp + 0x18], ebx
jb 0x419110
ja 0x41940a
mov eax, dword [esp + 0x88]
cmp dword [esp + 0xb8], eax
mov eax, dword [esp + 0x14]
jbe 0x419110
mov eax, dword [esp + 0x88]
mov esi, dword [esp + 0x8c]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x50]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x90]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x18], ebx
jmp 0x4190fd
lea edi, [esi + 0xb0]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x4194ff
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
ja 0x419520
mov eax, dword [esp + 0x70]
jb 0x419503
cmp eax, dword [esi + 0x90]
jae 0x419520
jmp 0x419503
mov eax, dword [esp + 0x70]
mov dword [esi + 0x90], eax
mov eax, dword [esp + 0x9c]
mov dword [esi + 0x94], eax
mov dword [esi + 0x88], 1
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0x3c]
jmp 0x418d9a
mov ecx, dword [esp + 0x5c]
test ebx, ebx
je 0x41954d
cmp ebx, 2
mov dword [esi + 0x50], 1
mov eax, 1
mov dword [esi + 0x4c], ebx
cmove ecx, eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x419567
mov dword [esi + 0x50], 1
mov dword [esi + 0x40], eax
mov dword [esp + 0x34], 0
test ecx, ecx
je 0x419581
mov dword [esi + 0x50], 1
mov dword [esi + 0x38], 1
mov dword [esp + 0x34], 0
cmp dword [esp + 0x6c], 0
je 0x41959e
mov dword [esi + 0x50], 1
mov dword [esi + 0x3c], 1
mov dword [esp + 0x34], 0
cmp dword [esp + 0x44], 0
je 0x419689
test edi, edi
je 0x4195c2
xorps xmm0, xmm0
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0xc8], xmm0
mov ebp, dword [esp + 0xa8]
sub ebp, dword [esp + 0x58]
mov edi, dword [esp + 0xac]
sbb edi, dword [esp + 0x2c]
mov eax, dword [esp + 0xc8]
sub eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0xcc]
sbb ebx, dword [esp + 0x30]
mov dword [esp + 0x8c], eax
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add ebp, dword [esi + 0xa0]
mov eax, dword [esi + 0xa4]
mov ecx, dword [esp + 0x8c]
adc eax, edi
add ecx, dword [esi + 0xa8]
mov edx, dword [esi + 0xac]
adc edx, ebx
mov dword [esp + 0x78], eax
cmp dword [esi + 0x9c], 0
mov dword [esi + 0xa0], ebp
mov dword [esi + 0xa4], eax
mov dword [esi + 0xa8], ecx
mov dword [esi + 0xac], edx
jne 0x419672
mov eax, dword [esi + 0x98]
test eax, eax
je 0x419672
push edx
push ecx
push dword [esp + 0x80]
mov ecx, eax
mov eax, dword [eax]
push ebp
call eax
test eax, eax
je 0x419672
mov dword [esi + 0x9c], 0xa
mov ebp, dword [esi + 0x9c]
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x18]
xor eax, eax
test ebx, ebx
sete al
cmp dword [esp + 0x64], 0
mov dword [esp + 0x8c], eax
mov dword [esp + 0xdc], eax
je 0x419780
test ebp, ebp
jne 0x4196c0
cmp dword [esp + 0x34], ebp
je 0x4196c0
test edi, edi
jne 0x4196c0
lea ecx, [ebp + 1]
jmp 0x4196c2
xor ecx, ecx
mov eax, dword [esi + 0x18]
lea edx, [esp + 0x90]
push edx
lea edx, [esp + 0xe0]
push edx
push dword [esp + 0x40]
mov eax, dword [eax + 0xc]
push dword [esp + 0x30]
push dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x60]
mov edx, dword [ecx + 4]
mov ecx, dword [esi + 0x1c]
call eax
mov ebp, eax
test ebp, ebp
je 0x41970b
mov dword [esp + 0xd0], 1
mov dword [esi + 0x50], 1
jmp 0x41971a
mov edi, dword [esp + 0xdc]
test edi, edi
jne 0x419787
test ebx, ebx
jne 0x419787
lea edi, [esi + 0xb0]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x41974f
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
ja 0x419770
mov eax, dword [esp + 0x70]
jb 0x419753
cmp eax, dword [esi + 0x90]
jae 0x419770
jmp 0x419753
mov eax, dword [esp + 0x70]
mov dword [esi + 0x90], eax
mov eax, dword [esp + 0x9c]
mov dword [esi + 0x94], eax
mov dword [esi + 0x88], 1
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov edi, dword [esp + 0xdc]
jmp 0x419787
mov edi, dword [esp + 0x8c]
cmp dword [esp + 0x90], 0
je 0x419801
cmp dword [esp + 0x44], 0
je 0x4197be
test ebp, ebp
jne 0x4197be
cmp dword [esi + 0x50], ebp
jne 0x4197be
cmp dword [esp + 0x54], ebp
jne 0x4197be
cmp dword [esp + 0x3c], ebp
jne 0x4197be
cmp dword [esi + 0x84], ebp
jne 0x4197d6
cmp dword [esp + 0xd0], ebp
je 0x419801
cmp dword [esi + 0x84], 0
jne 0x4197d6
mov ebp, dword [esp + 0x48]
mov eax, dword [ebp + 4]
mov dword [esi + 0x80], eax
jmp 0x4197da
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x14]
mov eax, edx
mov ecx, dword [esp + 0x28]
or eax, ecx
jne 0x4197ec
test ebx, ebx
jne 0x419812
mov eax, dword [esp + 0x40]
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x14], ecx
inc dword [esi + 0x84]
jmp 0x419805
mov ebp, dword [esp + 0x48]
test ebx, ebx
jne 0x419812
mov ecx, dword [esp + 0x20]
lea ecx, [ecx + 0x20]
jmp 0x41983a
test edi, edi
je 0x419827
lea ecx, [esi + 0xe8]
call fcn.00419ab0
test eax, eax
jne 0x41985d
jmp 0x419834
cmp dword [ebp + 4], 0
je 0x41985b
mov dword [esi + 0x24], 1
lea ecx, [esi + 0xe4]
call fcn.00419ab0
test eax, eax
jne 0x41985d
mov ecx, dword [ebp + 0x1c]
call fcn.00419b20
test eax, eax
je 0x418790
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret