Function at 0x555020
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.0055ab40
test eax, eax
jne 0x55611d
nop
cmp dword [esi + 0x24], 0
jne 0x55611b
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.00554e20
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 0x55559c
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ecx
test eax, eax
jne 0x55559c
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 0x555188
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 0x555377
mov ecx, dword [esp + 0x30]
mov dword [edi], 0
test ecx, ecx
je 0x555181
mov dword [ecx], edi
jmp 0x555188
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 0x5551c5
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 0x5552a7
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.005426e0
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 0x555221
mov dword [esi + 0x70], 1
test ebp, ebp
je 0x55523d
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 0x555254
cmp ecx, 1
jb 0x5552a7
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.00554e20
mov ebp, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x3c], eax
test ebp, ebp
jne 0x555522
test eax, eax
jne 0x555522
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 0x5554e6
mov ebp, dword [esp + 0xf8]
test ebx, ebx
je 0x555341
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 0x5553c2
cmp dword [esp + 0x18], eax
jne 0x5553d7
cmp ebp, dword [esp + 0x84]
jne 0x555389
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x30], edi
mov edi, dword [edi]
test ebx, ebx
je 0x555153
xor ebx, ebx
mov dword [esi + 0x60], ebx
mov dword [esi + 0x64], ebx
jmp 0x555153
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x5c], edi
jmp 0x555526
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 0x55576d
mov edi, dword [esp + 0x18]
cmp eax, 3
mov ecx, 1
cmove edi, ecx
mov dword [esp + 0x18], edi
jmp 0x5553db
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x44], 1
cmp ebp, ecx
jne 0x555405
mov ebp, dword [esp + 0x20]
mov dword [esi + 0x60], 0
mov dword [esi + 0x64], 0
jmp 0x555526
cmp eax, 3
jne 0x555444
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 0x555530
test ebx, ebx
je 0x555456
mov dword [esp + 0x14], ebp
mov dword [esp + 0x28], 0
jmp 0x5554ca
mov eax, dword [esi + 0x5c]
test eax, eax
jne 0x555480
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 0x555487
mov ecx, dword [esp + 0x84]
mov ebp, dword [esp + 0xf8]
mov dword [esi + 0x5c], eax
lea edx, [eax + 0x10]
test edx, edx
jne 0x55549d
mov ebp, dword [esp + 0x20]
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x5c], edi
jmp 0x555526
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 0x555526
mov edi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x6c], edi
test ebx, ebx
je 0x555512
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 0x555526
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 0x5555b2
lea eax, [esi + 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], ebp
je 0x555575
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
jb 0x555575
ja 0x55556e
mov eax, dword [esp + 0x70]
cmp eax, dword [esi + 0x90]
jbe 0x555575
mov eax, 1
jmp 0x555577
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 0x5555b2
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 0x5553a4
cmp dword [esp + 0x44], ebp
je 0x5556ae
cmp dword [esp + 0x3c], ebp
jne 0x5553a4
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 0x5556b9
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.0055ab40
test eax, eax
jne 0x55611d
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 0x55611b
cmp dword [esi + 0x50], 0
je 0x555df0
mov edi, 1
mov dword [esp + 0x3c], edi
mov dword [esp + 0x68], edi
jmp 0x555e5e
cmp dword [esp + 0x3c], 0
jne 0x5553a4
mov dword [esp + 0x20], 0
mov dword [esp + 0x60], 0
test edi, edi
jne 0x555765
mov eax, dword [esi + 0x58]
mov edx, eax
cmp eax, dword [esi + 0x54]
jae 0x555a05
cmp dword [esp + 0x34], edi
je 0x555a05
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.0055a9d0
test eax, eax
jne 0x55572d
mov ecx, dword [esp + 0x50]
add ecx, 0x1c
call fcn.0055a9d0
test eax, eax
jne 0x55572d
mov eax, dword [esp + 0x50]
cmp dword [eax + 0x18], edi
lea ecx, [eax + 0x18]
jne 0x55573b
push eax
mov edx, fcn.00556260
call fcn.0055ace0
test eax, eax
je 0x55573b
jle 0x555737
movzx eax, ax
or eax, 0x80070000
test eax, eax
jne 0x555747
mov edx, dword [esi + 0x58]
inc edx
mov dword [esi + 0x58], edx
jmp 0x555a05
mov edx, dword [esi + 0x58]
cmp edx, 1
jne 0x555a02
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 0x55562c
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 0x55562c
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 0x55562c
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 0x555a35
cmp ecx, edi
jne 0x555a35
mov ecx, 1
jmp 0x555a37
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.0055aad0
test eax, eax
jne 0x55611d
jmp 0x555765
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 0x555d8a
cmp dword [esp + 0x88], eax
jne 0x555de7
mov edx, dword [esp + 0xa8]
mov ecx, dword [esp + 0xac]
cmp edx, dword [esp + 0x14]
jne 0x555b27
cmp ecx, dword [esp + 0x28]
je 0x555de7
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 0x555b6a
jb 0x555b61
cmp eax, 1
jae 0x555b6a
test ebx, ebx
jne 0x555b6a
cmp edi, 1
jb 0x555bca
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.00554e20
mov edi, dword [esp + 0x68]
mov ebp, eax
mov dword [esp + 0x3c], edi
test ebp, ebp
jne 0x555656
test edi, edi
jne 0x555656
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 0x555bd6
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 0x5559d0
ja 0x555cca
mov eax, dword [esp + 0x88]
cmp dword [esp + 0xb8], eax
mov eax, dword [esp + 0x14]
jbe 0x5559d0
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 0x5559bd
lea edi, [esi + 0xb0]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x555dbf
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
ja 0x555de0
mov eax, dword [esp + 0x70]
jb 0x555dc3
cmp eax, dword [esi + 0x90]
jae 0x555de0
jmp 0x555dc3
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 0x55565a
mov ecx, dword [esp + 0x5c]
test ebx, ebx
je 0x555e0d
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 0x555e27
mov dword [esi + 0x50], 1
mov dword [esi + 0x40], eax
mov dword [esp + 0x34], 0
test ecx, ecx
je 0x555e41
mov dword [esi + 0x50], 1
mov dword [esi + 0x38], 1
mov dword [esp + 0x34], 0
cmp dword [esp + 0x6c], 0
je 0x555e5e
mov dword [esi + 0x50], 1
mov dword [esi + 0x3c], 1
mov dword [esp + 0x34], 0
cmp dword [esp + 0x44], 0
je 0x555f49
test edi, edi
je 0x555e82
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 0x555f32
mov eax, dword [esi + 0x98]
test eax, eax
je 0x555f32
push edx
push ecx
push dword [esp + 0x80]
mov ecx, eax
mov eax, dword [eax]
push ebp
call eax
test eax, eax
je 0x555f32
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 0x556040
test ebp, ebp
jne 0x555f80
cmp dword [esp + 0x34], ebp
je 0x555f80
test edi, edi
jne 0x555f80
lea ecx, [ebp + 1]
jmp 0x555f82
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 0x555fcb
mov dword [esp + 0xd0], 1
mov dword [esi + 0x50], 1
jmp 0x555fda
mov edi, dword [esp + 0xdc]
test edi, edi
jne 0x556047
test ebx, ebx
jne 0x556047
lea edi, [esi + 0xb0]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x88], 0
je 0x55600f
mov eax, dword [esp + 0x9c]
cmp eax, dword [esi + 0x94]
ja 0x556030
mov eax, dword [esp + 0x70]
jb 0x556013
cmp eax, dword [esi + 0x90]
jae 0x556030
jmp 0x556013
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 0x556047
mov edi, dword [esp + 0x8c]
cmp dword [esp + 0x90], 0
je 0x5560c1
cmp dword [esp + 0x44], 0
je 0x55607e
test ebp, ebp
jne 0x55607e
cmp dword [esi + 0x50], ebp
jne 0x55607e
cmp dword [esp + 0x54], ebp
jne 0x55607e
cmp dword [esp + 0x3c], ebp
jne 0x55607e
cmp dword [esi + 0x84], ebp
jne 0x556096
cmp dword [esp + 0xd0], ebp
je 0x5560c1
cmp dword [esi + 0x84], 0
jne 0x556096
mov ebp, dword [esp + 0x48]
mov eax, dword [ebp + 4]
mov dword [esi + 0x80], eax
jmp 0x55609a
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x14]
mov eax, edx
mov ecx, dword [esp + 0x28]
or eax, ecx
jne 0x5560ac
test ebx, ebx
jne 0x5560d2
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 0x5560c5
mov ebp, dword [esp + 0x48]
test ebx, ebx
jne 0x5560d2
mov ecx, dword [esp + 0x20]
lea ecx, [ecx + 0x20]
jmp 0x5560fa
test edi, edi
je 0x5560e7
lea ecx, [esi + 0xe8]
call fcn.0055aad0
test eax, eax
jne 0x55611d
jmp 0x5560f4
cmp dword [ebp + 4], 0
je 0x55611b
mov dword [esi + 0x24], 1
lea ecx, [esi + 0xe4]
call fcn.0055aad0
test eax, eax
jne 0x55611d
mov ecx, dword [ebp + 0x1c]
call fcn.0055ab40
test eax, eax
je 0x555050
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