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

Disassembly:
push 0xffffffffffffffff
push 0x4751c7
mov eax, dword fs:[0]
push eax
sub esp, 0xb4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48a2c4]
xor eax, esp
push eax
lea eax, [esp + 0xc8]
mov dword fs:[0], eax
mov ebp, dword [esp + 0xe0]
mov ebx, dword [esp + 0xdc]
mov edi, dword [esp + 0xe4]
mov ecx, ebp
sub ecx, ebx
mov eax, 0x66666667
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
sub eax, edx
sar eax, 1
lea esi, [eax + eax*4]
push edi
shl esi, 4
add ebp, 0xffffffb0
push ebp
add esi, ebx
push esi
push ebx
call fcn.0043a530
add esp, 0x10
lea ebp, [esi + 0x50]
mov dword [esp + 0x1c], ebp
cmp ebx, esi
jae 0x43b74a
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push esi
call fcn.00438290
sub esp, 0x50
lea ebx, [esi - 0x50]
mov ecx, esp
mov dword [esp + 0xb4], esp
push ebx
mov dword [esp + 0x174], 0
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call edi
add esp, 0xa0
test eax, eax
jne 0x43b74a
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push ebx
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push esi
mov dword [esp + 0x174], 1
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call edi
add esp, 0xa0
test eax, eax
jne 0x43b74a
mov esi, ebx
cmp dword [esp + 0xdc], esi
jb 0x43b6b2
or ebx, 0xffffffff
cmp ebp, dword [esp + 0xe0]
jae 0x43b7f2
lea ebx, [ebx]
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push esi
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push ebp
mov dword [esp + 0x174], 2
call fcn.00438290
mov dword [esp + 0x170], ebx
call edi
add esp, 0xa0
test eax, eax
jne 0x43b7ee
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push ebp
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push esi
mov dword [esp + 0x174], 3
call fcn.00438290
mov dword [esp + 0x170], ebx
call edi
add esp, 0xa0
test eax, eax
jne 0x43b7ee
add ebp, 0x50
cmp ebp, dword [esp + 0xe0]
jb 0x43b760
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], esi
lea ebx, [ebx]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
cmp edi, dword [esp + 0xe0]
jae 0x43b8cd
mov ebx, dword [esp + 0xe4]
lea esp, [esp]
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push edi
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push esi
mov dword [esp + 0x174], 4
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call ebx
add esp, 0xa0
test eax, eax
jne 0x43b8b5
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push esi
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push edi
mov dword [esp + 0x174], 5
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call ebx
add esp, 0xa0
test eax, eax
jne 0x43b8c5
mov eax, ebp
push edi
push eax
add ebp, 0x50
call fcn.004386d0
add esp, 8
add edi, 0x50
cmp edi, dword [esp + 0xe0]
jb 0x43b820
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edi
mov ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0xdc]
jbe 0x43bc0f
lea edi, [ebx - 0x50]
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push esi
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push edi
mov dword [esp + 0x174], 6
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call dword [esp + 0x184]
add esp, 0xa0
test eax, eax
jne 0x43bbed
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0x68], esp
push edi
call fcn.00438290
sub esp, 0x50
mov ecx, esp
mov dword [esp + 0xb4], esp
push esi
mov dword [esp + 0x174], 7
call fcn.00438290
mov dword [esp + 0x170], 0xffffffff
call dword [esp + 0x184]
add esp, 0xa0
test eax, eax
jne 0x43bc04
sub esi, 0x50
cmp esi, edi
je 0x43bbed
push esi
lea ecx, [esp + 0x2c]
call fcn.00438290
mov edx, dword [edi]
mov eax, dword [esi]
mov dword [esp + 0xd0], 8
mov dword [esp + 0x14], edx
cmp eax, edx
je 0x43ba6c
mov ecx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
test ecx, ecx
jge 0x43b9be
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
jne 0x43b9c4
cmp dword [edx - 0xc], 0
jge 0x43ba33
cmp ecx, 1
mov ebp, dword [edx - 8]
jg 0x43b9d1
cmp ebp, dword [eax - 4]
jle 0x43ba08
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43b9fc
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43b9f5
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov dword [esi], eax
push ebp
mov ecx, esi
call fcn.00412460
test eax, eax
je 0x43ba6c
mov eax, dword [esi]
lea ebx, [ebp + ebp]
lea ecx, [ebx + 2]
cmp ecx, ebx
jb 0x43ba24
mov edx, dword [esp + 0x14]
push ebx
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [esi]
mov dword [eax - 8], ebp
mov ecx, dword [esi]
xor edx, edx
mov word [ebx + ecx], dx
jmp 0x43ba6c
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43ba5e
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43ba57
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov dword [esi], eax
mov eax, dword [edi]
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [edi + 4]
mov dword [esi + 4], ecx
mov edx, dword [edi + 8]
mov dword [esi + 8], edx
mov eax, dword [edi + 0xc]
mov dword [esi + 0xc], eax
mov ecx, dword [edi + 0x10]
lea eax, [edi + 0x14]
mov dword [esi + 0x10], ecx
push eax
lea ecx, [esi + 0x14]
call fcn.00437540
lea eax, [edi + 0x2c]
push eax
lea ecx, [esi + 0x2c]
call fcn.00437540
mov edx, dword [edi + 0x44]
mov dword [esi + 0x44], edx
mov eax, dword [edi + 0x48]
mov dword [esi + 0x48], eax
mov ecx, dword [edi + 0x4c]
mov dword [esi + 0x4c], ecx
mov eax, dword [edi]
mov ecx, dword [esp + 0x28]
cmp eax, ecx
je 0x43bb86
mov edx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
test edx, edx
jge 0x43bad1
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
jne 0x43bad7
cmp dword [ecx - 0xc], 0
jge 0x43bb4b
cmp edx, 1
mov ebp, dword [ecx - 8]
mov dword [esp + 0x14], ecx
jg 0x43bae8
cmp ebp, dword [eax - 4]
jle 0x43bb20
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bb14
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bb0c
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov dword [edi], edx
push ebp
mov ecx, edi
call fcn.00412460
test eax, eax
je 0x43bb86
mov eax, dword [edi]
lea ebx, [ebp + ebp]
lea ecx, [ebx + 2]
cmp ecx, ebx
jb 0x43bb3c
mov edx, dword [esp + 0x14]
push ebx
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [edi]
mov dword [eax - 8], ebp
mov ecx, dword [edi]
xor edx, edx
mov word [ebx + ecx], dx
jmp 0x43bb86
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bb7a
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bb6f
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov ecx, dword [esp + 0x28]
mov dword [edi], eax
mov dword [edi], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [edi + 8], edx
lea edx, [esp + 0x3c]
mov dword [edi + 0x10], ecx
push edx
lea ecx, [edi + 0x14]
mov dword [edi + 0xc], eax
call fcn.00437540
lea eax, [esp + 0x54]
push eax
lea ecx, [edi + 0x2c]
call fcn.00437540
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov dword [edi + 0x44], ecx
lea ecx, [esp + 0x28]
mov dword [edi + 0x48], edx
mov dword [edi + 0x4c], eax
mov dword [esp + 0xd0], 0xffffffff
call fcn.004350e0
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
sub ebx, 0x50
sub edi, 0x50
mov dword [esp + 0x24], ebx
cmp dword [esp + 0xdc], ebx
jb 0x43b8e1
mov edi, dword [esp + 0x20]
cmp ebx, dword [esp + 0xdc]
jne 0x43c131
cmp edi, dword [esp + 0xe0]
je 0x43c915
cmp ebp, edi
je 0x43bea3
cmp esi, ebp
je 0x43bea3
push esi
lea ecx, [esp + 0x2c]
call fcn.00438290
mov edx, dword [ebp]
mov eax, dword [esi]
mov dword [esp + 0xd0], 9
mov dword [esp + 0x14], edx
cmp eax, edx
je 0x43bd1d
mov ecx, dword [eax - 0xc]
lea edi, [eax - 0xc]
test ecx, ecx
jge 0x43bc6d
lea ebx, [eax - 0xc]
cmp ebx, dword [0x488010]
jne 0x43bc73
cmp dword [edx - 0xc], 0
jge 0x43bce2
cmp ecx, 1
mov ebx, dword [edx - 8]
jg 0x43bc80
cmp ebx, dword [eax - 4]
jle 0x43bcb8
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bcac
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bca4
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [esi], ecx
push ebx
mov ecx, esi
call fcn.00412460
test eax, eax
je 0x43bd1d
mov eax, dword [esi]
lea edi, [ebx + ebx]
lea edx, [edi + 2]
cmp edx, edi
jb 0x43bcd3
mov ecx, dword [esp + 0x14]
push edi
push ecx
push eax
call fcn.004482d0
add esp, 0xc
mov edx, dword [esi]
mov dword [edx - 8], ebx
mov eax, dword [esi]
xor ecx, ecx
mov word [edi + eax], cx
jmp 0x43bd1d
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bd0e
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bd06
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov dword [esi], edx
mov eax, dword [ebp]
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov ecx, dword [ebp + 8]
mov dword [esi + 8], ecx
mov edx, dword [ebp + 0xc]
mov dword [esi + 0xc], edx
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x10], eax
lea eax, [ebp + 0x14]
push eax
lea ecx, [esi + 0x14]
call fcn.00437540
lea eax, [ebp + 0x2c]
push eax
lea ecx, [esi + 0x2c]
call fcn.00437540
mov ecx, dword [ebp + 0x44]
mov dword [esi + 0x44], ecx
mov edx, dword [ebp + 0x48]
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x48], edx
mov eax, dword [ebp + 0x4c]
mov dword [esi + 0x4c], eax
mov eax, dword [ebp]
cmp eax, ecx
je 0x43be44
mov edx, dword [eax - 0xc]
lea edi, [eax - 0xc]
test edx, edx
jge 0x43bd83
lea ebx, [eax - 0xc]
cmp ebx, dword [0x488010]
jne 0x43bd8d
cmp dword [ecx - 0xc], 0
jge 0x43be05
cmp edx, 1
mov ebx, dword [ecx - 8]
mov dword [esp + 0x14], ecx
jg 0x43bd9e
cmp ebx, dword [eax - 4]
jle 0x43bdd8
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bdcc
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bdc3
mov eax, dword [ebp]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [ebp], ecx
push ebx
mov ecx, ebp
call fcn.00412460
test eax, eax
je 0x43be44
mov eax, dword [ebp]
lea edi, [ebx + ebx]
lea edx, [edi + 2]
cmp edx, edi
jb 0x43bdf4
mov ecx, dword [esp + 0x14]
push edi
push ecx
push eax
call fcn.004482d0
add esp, 0xc
mov edx, dword [ebp]
mov dword [edx - 8], ebx
mov eax, dword [ebp]
xor ecx, ecx
mov word [edi + eax], cx
jmp 0x43be44
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43be37
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43be2a
mov eax, dword [ebp]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov ecx, dword [esp + 0x28]
mov dword [ebp], edx
mov dword [ebp], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov dword [ebp + 8], ecx
lea ecx, [esp + 0x3c]
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x38]
push ecx
lea ecx, [ebp + 0x14]
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x10], eax
call fcn.00437540
lea edx, [esp + 0x54]
push edx
lea ecx, [ebp + 0x2c]
call fcn.00437540
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x74]
mov dword [ebp + 0x48], ecx
lea ecx, [esp + 0x28]
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x4c], edx
mov dword [esp + 0xd0], 0xffffffff
call fcn.004350e0
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], 0x50
mov edi, eax
mov ebx, esi
add eax, 0x50
add esi, 0x50
mov dword [esp + 0x20], eax
cmp ebx, edi
je 0x43b800
push ebx
lea ecx, [esp + 0x2c]
call fcn.00438290
mov edx, dword [edi]
mov eax, dword [ebx]
mov dword [esp + 0xd0], 0xa
mov dword [esp + 0x18], edx
cmp eax, edx
je 0x43bfc8
mov ecx, dword [eax - 0xc]
lea ebp, [eax - 0xc]
mov dword [esp + 0x14], ebp
test ecx, ecx
jge 0x43bf04
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
mov ebp, dword [esp + 0x14]
jne 0x43bf0e
cmp dword [edx - 0xc], 0
jge 0x43bf8e
cmp ecx, 1
mov edx, dword [edx - 8]
mov dword [esp + 0x14], edx
jg 0x43bf21
mov ecx, edx
cmp ecx, dword [eax - 4]
jle 0x43bf5d
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bf4d
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bf45
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov dword [ebx], edx
mov eax, dword [esp + 0x14]
push eax
mov ecx, ebx
call fcn.00412460
test eax, eax
je 0x43bfc8
mov ebp, dword [esp + 0x14]
mov eax, dword [ebx]
add ebp, ebp
lea ecx, [ebp + 2]
cmp ecx, ebp
jb 0x43bf7b
mov edx, dword [esp + 0x18]
push ebp
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [ebx]
mov ecx, dword [esp + 0x14]
mov dword [eax - 8], ecx
mov edx, dword [ebx]
xor eax, eax
mov word [edx + ebp], ax
jmp 0x43bfc8
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43bfba
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43bfb2
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [ebx], ecx
mov eax, dword [edi]
mov dword [ebx], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov edx, dword [edi + 4]
mov dword [ebx + 4], edx
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x10]
lea eax, [edi + 0x14]
push eax
lea ecx, [ebx + 0x14]
mov dword [ebx + 0x10], edx
call fcn.00437540
lea eax, [edi + 0x2c]
push eax
lea ecx, [ebx + 0x2c]
call fcn.00437540
mov eax, dword [edi + 0x44]
mov dword [ebx + 0x44], eax
mov ecx, dword [edi + 0x48]
mov dword [ebx + 0x48], ecx
mov edx, dword [edi + 0x4c]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x4c], edx
mov eax, dword [edi]
cmp eax, ecx
je 0x43c0e1
mov edx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
test edx, edx
jge 0x43c02d
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
jne 0x43c033
cmp dword [ecx - 0xc], 0
jge 0x43c0a6
cmp edx, 1
mov ebp, dword [ecx - 8]
mov dword [esp + 0x18], ecx
jg 0x43c044
cmp ebp, dword [eax - 4]
jle 0x43c07b
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c06f
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c068
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov dword [edi], eax
push ebp
mov ecx, edi
call fcn.00412460
test eax, eax
je 0x43c0e1
mov eax, dword [edi]
lea ebx, [ebp + ebp]
lea ecx, [ebx + 2]
cmp ecx, ebx
jb 0x43c097
mov edx, dword [esp + 0x18]
push ebx
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [edi]
mov dword [eax - 8], ebp
mov ecx, dword [edi]
xor edx, edx
mov word [ebx + ecx], dx
jmp 0x43c0e1
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c0d5
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c0ca
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov ecx, dword [esp + 0x28]
mov dword [edi], eax
mov dword [edi], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [edi + 8], edx
lea edx, [esp + 0x3c]
mov dword [edi + 0x10], ecx
push edx
lea ecx, [edi + 0x14]
mov dword [edi + 0xc], eax
call fcn.00437540
lea eax, [esp + 0x54]
push eax
lea ecx, [edi + 0x2c]
call fcn.00437540
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov dword [edi + 0x44], ecx
mov dword [edi + 0x48], edx
mov dword [edi + 0x4c], eax
jmp 0x43c639
sub ebx, 0x50
mov dword [esp + 0x24], ebx
cmp edi, dword [esp + 0xe0]
jne 0x43c652
sub esi, 0x50
cmp ebx, esi
je 0x43c3cd
push ebx
lea ecx, [esp + 0x2c]
call fcn.00438290
mov edx, dword [esi]
mov eax, dword [ebx]
mov dword [esp + 0xd0], 0xb
mov dword [esp + 0x18], edx
cmp eax, edx
je 0x43c256
mov ecx, dword [eax - 0xc]
lea edi, [eax - 0xc]
mov dword [esp + 0x14], edi
test ecx, ecx
jge 0x43c192
lea edi, [eax - 0xc]
cmp edi, dword [0x488010]
mov edi, dword [esp + 0x14]
jne 0x43c19c
cmp dword [edx - 0xc], 0
jge 0x43c21c
cmp ecx, 1
mov edx, dword [edx - 8]
mov dword [esp + 0x14], edx
jg 0x43c1af
mov ecx, edx
cmp ecx, dword [eax - 4]
jle 0x43c1eb
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c1db
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c1d3
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov dword [ebx], edx
mov eax, dword [esp + 0x14]
push eax
mov ecx, ebx
call fcn.00412460
test eax, eax
je 0x43c256
mov edi, dword [esp + 0x14]
mov eax, dword [ebx]
add edi, edi
lea ecx, [edi + 2]
cmp ecx, edi
jb 0x43c209
mov edx, dword [esp + 0x18]
push edi
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [ebx]
mov ecx, dword [esp + 0x14]
mov dword [eax - 8], ecx
mov edx, dword [ebx]
xor eax, eax
mov word [edi + edx], ax
jmp 0x43c256
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c248
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c240
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [ebx], ecx
mov eax, dword [esi]
mov dword [ebx], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov eax, dword [esi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [esi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [esi + 0x10]
lea eax, [esi + 0x14]
push eax
lea ecx, [ebx + 0x14]
mov dword [ebx + 0x10], edx
call fcn.00437540
lea eax, [esi + 0x2c]
push eax
lea ecx, [ebx + 0x2c]
call fcn.00437540
mov eax, dword [esi + 0x44]
mov dword [ebx + 0x44], eax
mov ecx, dword [esi + 0x48]
mov dword [ebx + 0x48], ecx
mov edx, dword [esi + 0x4c]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x4c], edx
mov eax, dword [esi]
cmp eax, ecx
je 0x43c36e
mov edx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
test edx, edx
jge 0x43c2bb
lea edi, [eax - 0xc]
cmp edi, dword [0x488010]
jne 0x43c2c1
cmp dword [ecx - 0xc], 0
jge 0x43c333
cmp edx, 1
mov edi, dword [ecx - 8]
mov dword [esp + 0x18], ecx
jg 0x43c2d2
cmp edi, dword [eax - 4]
jle 0x43c309
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c2fd
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c2f6
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov dword [esi], eax
push edi
mov ecx, esi
call fcn.00412460
test eax, eax
je 0x43c36e
mov eax, dword [esi]
lea ebx, [edi + edi]
lea ecx, [ebx + 2]
cmp ecx, ebx
jb 0x43c324
mov edx, dword [esp + 0x18]
push ebx
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [esi]
mov dword [eax - 8], edi
mov ecx, dword [esi]
xor edx, edx
mov word [ebx + ecx], dx
jmp 0x43c36e
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c362
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c357
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov ecx, dword [esp + 0x28]
mov dword [esi], eax
mov dword [esi], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x38]
mov dword [esi + 8], edx
lea edx, [esp + 0x3c]
mov dword [esi + 0x10], ecx
push edx
lea ecx, [esi + 0x14]
mov dword [esi + 0xc], eax
call fcn.00437540
lea eax, [esp + 0x54]
push eax
lea ecx, [esi + 0x2c]
call fcn.00437540
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x74]
mov dword [esi + 0x44], ecx
lea ecx, [esp + 0x28]
mov dword [esi + 0x48], edx
mov dword [esi + 0x4c], eax
mov dword [esp + 0xd0], 0xffffffff
call fcn.004350e0
sub ebp, 0x50
mov dword [esp + 0x1c], ebp
cmp esi, ebp
je 0x43b800
push esi
lea ecx, [esp + 0x2c]
call fcn.00438290
mov edx, dword [ebp]
mov eax, dword [esi]
mov dword [esp + 0xd0], 0xc
mov dword [esp + 0x18], edx
cmp eax, edx
je 0x43c4c7
mov ecx, dword [eax - 0xc]
lea ebx, [eax - 0xc]
test ecx, ecx
jge 0x43c417
lea edi, [eax - 0xc]
cmp edi, dword [0x488010]
jne 0x43c41d
cmp dword [edx - 0xc], 0
jge 0x43c48c
cmp ecx, 1
mov edi, dword [edx - 8]
jg 0x43c42a
cmp edi, dword [eax - 4]
jle 0x43c462
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c456
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c44e
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [esi], ecx
push edi
mov ecx, esi
call fcn.00412460
test eax, eax
je 0x43c4c7
mov eax, dword [esi]
lea ebx, [edi + edi]
lea edx, [ebx + 2]
cmp edx, ebx
jb 0x43c47d
mov ecx, dword [esp + 0x18]
push ebx
push ecx
push eax
call fcn.004482d0
add esp, 0xc
mov edx, dword [esi]
mov dword [edx - 8], edi
mov eax, dword [esi]
xor ecx, ecx
mov word [ebx + eax], cx
jmp 0x43c4c7
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c4b8
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c4b0
mov eax, dword [esi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov dword [esi], edx
mov eax, dword [ebp]
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov ecx, dword [ebp + 8]
mov dword [esi + 8], ecx
mov edx, dword [ebp + 0xc]
mov dword [esi + 0xc], edx
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x10], eax
lea eax, [ebp + 0x14]
push eax
lea ecx, [esi + 0x14]
call fcn.00437540
lea eax, [ebp + 0x2c]
push eax
lea ecx, [esi + 0x2c]
call fcn.00437540
mov ecx, dword [ebp + 0x44]
mov dword [esi + 0x44], ecx
mov edx, dword [ebp + 0x48]
mov ecx, dword [esp + 0x28]
mov dword [esi + 0x48], edx
mov eax, dword [ebp + 0x4c]
mov dword [esi + 0x4c], eax
mov eax, dword [ebp]
cmp eax, ecx
je 0x43c5ee
mov edx, dword [eax - 0xc]
lea edi, [eax - 0xc]
test edx, edx
jge 0x43c52d
lea ebx, [eax - 0xc]
cmp ebx, dword [0x488010]
jne 0x43c537
cmp dword [ecx - 0xc], 0
jge 0x43c5af
cmp edx, 1
mov ebx, dword [ecx - 8]
mov dword [esp + 0x18], ecx
jg 0x43c548
cmp ebx, dword [eax - 4]
jle 0x43c582
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c576
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c56d
mov eax, dword [ebp]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [ebp], ecx
push ebx
mov ecx, ebp
call fcn.00412460
test eax, eax
je 0x43c5ee
mov eax, dword [ebp]
lea edi, [ebx + ebx]
lea edx, [edi + 2]
cmp edx, edi
jb 0x43c59e
mov ecx, dword [esp + 0x18]
push edi
push ecx
push eax
call fcn.004482d0
add esp, 0xc
mov edx, dword [ebp]
mov dword [edx - 8], ebx
mov eax, dword [ebp]
xor ecx, ecx
mov word [edi + eax], cx
jmp 0x43c5ee
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c5e1
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c5d4
mov eax, dword [ebp]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov edx, dword [0x488014]
mov ecx, dword [esp + 0x28]
mov dword [ebp], edx
mov dword [ebp], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov dword [ebp + 8], ecx
lea ecx, [esp + 0x3c]
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x38]
push ecx
lea ecx, [ebp + 0x14]
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x10], eax
call fcn.00437540
lea edx, [esp + 0x54]
push edx
lea ecx, [ebp + 0x2c]
call fcn.00437540
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], ecx
mov dword [ebp + 0x4c], edx
lea ecx, [esp + 0x28]
mov dword [esp + 0xd0], 0xffffffff
call fcn.004350e0
jmp 0x43b800
cmp edi, ebx
je 0x43c909
push edi
lea ecx, [esp + 0x7c]
call fcn.00438290
mov edx, dword [ebx]
mov eax, dword [edi]
mov dword [esp + 0xd0], 0xd
mov dword [esp + 0x18], edx
cmp eax, edx
je 0x43c75d
mov ecx, dword [eax - 0xc]
lea ebp, [eax - 0xc]
mov dword [esp + 0x14], ebp
test ecx, ecx
jge 0x43c69c
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
mov ebp, dword [esp + 0x14]
jne 0x43c6a6
cmp dword [edx - 0xc], 0
jge 0x43c723
cmp ecx, 1
mov edx, dword [edx - 8]
mov dword [esp + 0x14], edx
jg 0x43c6b7
cmp edx, dword [eax - 4]
jle 0x43c6f2
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c6e6
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c6db
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov edx, dword [esp + 0x14]
mov dword [edi], eax
push edx
mov ecx, edi
call fcn.00412460
test eax, eax
je 0x43c75d
mov ebp, dword [esp + 0x14]
mov eax, dword [edi]
add ebp, ebp
lea ecx, [ebp + 2]
cmp ecx, ebp
jb 0x43c710
mov edx, dword [esp + 0x18]
push ebp
push edx
push eax
call fcn.004482d0
add esp, 0xc
mov eax, dword [edi]
mov ecx, dword [esp + 0x14]
mov dword [eax - 8], ecx
mov edx, dword [edi]
xor eax, eax
mov word [edx + ebp], ax
jmp 0x43c75d
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c74f
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c747
mov eax, dword [edi]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov ecx, dword [0x488014]
mov dword [edi], ecx
mov eax, dword [ebx]
mov dword [edi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov edx, dword [ebx + 4]
mov dword [edi + 4], edx
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov ecx, dword [ebx + 0xc]
mov dword [edi + 0xc], ecx
mov edx, dword [ebx + 0x10]
lea eax, [ebx + 0x14]
push eax
lea ecx, [edi + 0x14]
mov dword [edi + 0x10], edx
call fcn.00437540
lea eax, [ebx + 0x2c]
push eax
lea ecx, [edi + 0x2c]
call fcn.00437540
mov eax, dword [ebx + 0x44]
mov dword [edi + 0x44], eax
mov ecx, dword [ebx + 0x48]
mov dword [edi + 0x48], ecx
mov edx, dword [ebx + 0x4c]
mov ecx, dword [esp + 0x78]
mov dword [edi + 0x4c], edx
mov eax, dword [ebx]
cmp eax, ecx
je 0x43c892
mov edx, dword [eax - 0xc]
lea ebp, [eax - 0xc]
mov dword [esp + 0x14], ebp
test edx, edx
jge 0x43c7ca
lea ebp, [eax - 0xc]
cmp ebp, dword [0x488010]
mov ebp, dword [esp + 0x14]
jne 0x43c7d4
cmp dword [ecx - 0xc], 0
jge 0x43c857
cmp edx, 1
mov dword [esp + 0x18], ecx
mov ecx, dword [ecx - 8]
mov dword [esp + 0x14], ecx
jg 0x43c7eb
mov edx, ecx
cmp edx, dword [eax - 4]
jle 0x43c826
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c816
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c80f
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov dword [ebx], eax
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, ebx
call fcn.00412460
test eax, eax
je 0x43c892
mov ebp, dword [esp + 0x14]
mov eax, dword [ebx]
add ebp, ebp
lea edx, [ebp + 2]
cmp edx, ebp
jb 0x43c844
mov ecx, dword [esp + 0x18]
push ebp
push ecx
push eax
call fcn.004482d0
add esp, 0xc
mov edx, dword [ebx]
mov eax, dword [esp + 0x14]
mov dword [edx - 8], eax
mov ecx, dword [ebx]
xor edx, edx
mov word [ecx + ebp], dx
jmp 0x43c892
add eax, 0xfffffff4
cmp eax, dword [0x488010]
je 0x43c886
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x43c87b
mov eax, dword [ebx]
sub eax, 0xc
push eax
call fcn.00448106
add esp, 4
mov eax, dword [0x488014]
mov ecx, dword [esp + 0x78]
mov dword [ebx], eax
mov dword [ebx], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x84]
mov dword [ebx + 4], ecx
mov ecx, dword [esp + 0x88]
mov dword [ebx + 8], edx
lea edx, [esp + 0x8c]
mov dword [ebx + 0x10], ecx
push edx
lea ecx, [ebx + 0x14]
mov dword [ebx + 0xc], eax
call fcn.00437540
lea eax, [esp + 0xa4]
push eax
lea ecx, [ebx + 0x2c]
call fcn.00437540
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
mov dword [ebx + 0x44], ecx
lea ecx, [esp + 0x78]
mov dword [ebx + 0x48], edx
mov dword [ebx + 0x4c], eax
mov dword [esp + 0xd0], 0xffffffff
call fcn.004350e0
add edi, 0x50
mov dword [esp + 0x20], edi
jmp 0x43b800
mov eax, dword [esp + 0xd8]
mov dword [eax], esi
mov dword [eax + 4], ebp
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc0
ret