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

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x30]
push ebp
mov ebp, dword [esp + 0x30]
push esi
push edi
mov edi, dword [esp + 0x34]
push ebp
lea esi, [edi + 0x40]
push esi
call fcn.0040ed80
cmp eax, 0xffffffff
jne 0x43bf55
push ebp
mov eax, esi
call fcn.0043be00
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x28]
push eax
call fcn.0043d150
test eax, eax
mov ebp, dword [esp + 0x28]
je 0x43bef0
mov esi, dword [esp + 0x2c]
mov eax, esi
shr eax, 1
lea ecx, [eax + eax*8]
lea edx, [ebp + ecx*4]
push edx
call fcn.0043c700
mov eax, esi
and eax, 0xfffffffe
add eax, 2
and esi, 1
xor eax, esi
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x7c]
test al, 1
lea ebx, [edi + 0x78]
jne 0x43bf34
shr eax, 1
lea ecx, [eax - 1]
test eax, ecx
jne 0x43bf0d
push ebx
call fcn.0043d090
test eax, eax
je 0x43bf34
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
lea edx, [esp + 0x28]
shr eax, 1
push edx
lea esi, [ecx + eax*8]
call fcn.0043d210
mov eax, dword [ebx + 4]
mov edx, eax
and edx, 0xfffffffe
add edx, 2
and eax, 1
xor edx, eax
mov dword [ebx + 4], edx
test ebp, ebp
je 0x43bf3f
mov eax, ebp
call fcn.0043d4c0
mov eax, dword [edi + 0x74]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov ecx, edi
mov edx, dword [ecx + 0x78]
lea esi, [edx + eax*8]
xor edi, edi
test dword [esi + 4], 0xfffffffe
mov byte [esp + 0x38], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], edi
jbe 0x43c69b
lea esp, [esp]
mov ecx, dword [esi]
lea eax, [edi + edi*8]
lea ebp, [ecx + eax*4]
mov eax, dword [ebp + 4]
test eax, eax
je 0x43bf94
add eax, 4
jmp 0x43bf96
xor eax, eax
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x43bff0
lea edx, [ecx + 4]
test edx, edx
je 0x43bfde
test eax, eax
je 0x43bfde
test ecx, ecx
je 0x43bfb1
add ecx, 4
jmp 0x43bfb3
xor ecx, ecx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x43bfd5
test dl, dl
je 0x43bfcf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x43bfd5
add eax, 2
add ecx, 2
test dl, dl
jne 0x43bfb3
xor eax, eax
test eax, eax
jmp 0x43c004
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jmp 0x43c004
test ecx, ecx
je 0x43bff0
test dword [ecx], 0xffffff00
je 0x43bff0
cmp byte [ecx + 4], 0
jne 0x43bfff
test eax, eax
je 0x43c00f
cmp byte [eax], 0
jne 0x43c680
jmp 0x43c00f
add ecx, 4
cmp ecx, eax
sete al
test al, al
je 0x43c680
mov eax, dword [ebx]
cmp eax, 3
je 0x43c665
cmp eax, 2
je 0x43c665
cmp eax, 1
jne 0x43c680
mov edi, dword [ebx + 0xc]
shr edi, 1
je 0x43c332
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 1
add edi, eax
cmp edi, 0x1fffffff
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], edi
jbe 0x43c070
mov eax, dword [ebp + 8]
test eax, eax
je 0x43c332
call fcn.004012e0
and dword [ebp + 0xc], 1
mov dword [ebp + 8], 0
jmp 0x43c332
and ecx, 1
cmp edi, eax
jne 0x43c07f
mov eax, dword [ebp + 8]
jmp 0x43c2cf
test ecx, ecx
je 0x43c185
test edi, edi
mov dword [esp + 0x38], 0
je 0x43c15f
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
call fcn.00457920
test eax, eax
je 0x43c0db
lea esi, [eax + 4]
mov dword [eax], edi
push 4
mov ebx, 0x401810
mov eax, edi
mov ecx, esi
call fcn.00401380
test esi, esi
mov dword [esp + 0x38], esi
jne 0x43c0f0
mov ecx, dword [ebp + 0xc]
and ecx, 1
lea edx, [edi + edi]
xor eax, eax
or ecx, edx
mov dword [ebp + 0xc], ecx
jmp 0x43c2cf
mov eax, dword [ebp + 0xc]
shr eax, 1
cmp eax, edi
jbe 0x43c101
mov eax, edi
mov dword [esp + 0x14], edi
jmp 0x43c105
mov dword [esp + 0x14], eax
xor ebx, ebx
test eax, eax
jbe 0x43c15f
mov edi, dword [esp + 0x38]
nop
mov eax, dword [ebp + 8]
mov ecx, dword [edi]
cmp ecx, dword [eax + ebx*4]
lea esi, [eax + ebx*4]
je 0x43c14f
call fcn.00401700
mov eax, dword [esi]
test eax, eax
mov dword [edi], eax
je 0x43c14f
movzx edx, byte [eax]
cmp edx, 0x80
jae 0x43c148
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c14f
mov eax, edi
call fcn.00459380
add ebx, 1
add edi, 4
cmp ebx, dword [esp + 0x14]
jb 0x43c110
mov edi, dword [esp + 0x10]
mov eax, dword [ebp + 8]
test eax, eax
je 0x43c16b
call fcn.004012e0
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x38]
and ecx, 1
lea edx, [edi + edi]
or ecx, edx
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], ecx
jmp 0x43c2cf
mov esi, 1
cmp edi, esi
jb 0x43c196
mov edi, edi
add esi, esi
cmp esi, edi
jbe 0x43c190
mov ebx, dword [ebp + 8]
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x38], ecx
fild dword [esp + 0x38]
jge 0x43c1ad
fadd dword [0x6c0a38]
fstp dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
shr ecx, 0x17
and ecx, 0xff
sub ecx, 0x7f
js 0x43c1cc
mov edx, 1
shl edx, cl
jmp 0x43c1ce
xor edx, edx
cmp edx, eax
jae 0x43c1d4
add edx, edx
cmp edx, esi
je 0x43c2bf
test esi, esi
mov dword [esp + 0x38], 0
je 0x43c2a6
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
call fcn.00457920
test eax, eax
je 0x43c050
lea edi, [eax + 4]
mov dword [eax], esi
push 4
mov ebx, 0x401810
mov eax, esi
mov ecx, edi
call fcn.00401380
test edi, edi
mov dword [esp + 0x38], edi
je 0x43c050
mov eax, dword [ebp + 0xc]
shr eax, 1
cmp eax, esi
jbe 0x43c249
mov eax, esi
mov dword [esp + 0x14], esi
jmp 0x43c24d
mov dword [esp + 0x14], eax
xor ebx, ebx
test eax, eax
jbe 0x43c2a2
mov edi, dword [esp + 0x38]
mov eax, dword [ebp + 8]
mov ecx, dword [edi]
cmp ecx, dword [eax + ebx*4]
lea esi, [eax + ebx*4]
je 0x43c296
call fcn.00401700
mov eax, dword [esi]
test eax, eax
mov dword [edi], eax
je 0x43c296
movzx edx, byte [eax]
cmp edx, 0x80
jae 0x43c28f
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c296
mov eax, edi
call fcn.00459380
add ebx, 1
add edi, 4
cmp ebx, dword [esp + 0x14]
jb 0x43c257
mov edi, dword [esp + 0x10]
mov eax, dword [ebp + 8]
test eax, eax
je 0x43c2b2
call fcn.004012e0
mov eax, dword [esp + 0x38]
test eax, eax
mov dword [ebp + 8], eax
mov ebx, eax
je 0x43c332
mov eax, dword [ebp + 0xc]
and eax, 1
lea ecx, [edi + edi]
or eax, ecx
mov dword [ebp + 0xc], eax
mov eax, ebx
test eax, eax
je 0x43c332
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0xc]
shr eax, 1
mov esi, dword [ecx + 8]
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
lea edi, [edx + ecx*4]
je 0x43c332
sub esi, edi
mov ebx, eax
nop
mov edx, dword [edi]
cmp edx, dword [esi + edi]
je 0x43c32a
call fcn.00401700
mov eax, dword [esi + edi]
test eax, eax
mov dword [edi], eax
je 0x43c32a
movzx ecx, byte [eax]
cmp ecx, 0x80
jae 0x43c323
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c32a
mov eax, edi
call fcn.00459380
add edi, 4
sub ebx, 1
jne 0x43c2f0
mov edx, dword [esp + 0x3c]
mov edx, dword [edx + 0x14]
shr edx, 1
je 0x43c652
mov ecx, dword [ebp + 0x14]
mov eax, ecx
shr eax, 1
lea esi, [eax + edx]
cmp esi, 0x1fffffff
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], esi
jbe 0x43c38c
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x43c652
call fcn.004012e0
and dword [ebp + 0x14], 1
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov dword [ebp + 0x10], 0
mov byte [esp + 0x38], 1
jmp 0x43c680
and ecx, 1
cmp esi, eax
jne 0x43c39b
mov eax, dword [ebp + 0x10]
jmp 0x43c5ea
test ecx, ecx
je 0x43c49a
xor edi, edi
test esi, esi
je 0x43c476
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
call fcn.00457920
test eax, eax
je 0x43c3f1
lea edi, [eax + 4]
mov dword [eax], esi
push 4
mov ebx, 0x401810
mov eax, esi
mov ecx, edi
call fcn.00401380
test edi, edi
mov dword [esp + 0x14], edi
jne 0x43c406
mov edx, dword [ebp + 0x14]
lea ecx, [esi + esi]
and edx, 1
xor eax, eax
or ecx, edx
mov dword [ebp + 0x14], ecx
jmp 0x43c5ea
mov eax, dword [ebp + 0x14]
shr eax, 1
cmp eax, esi
mov dword [esp + 0x10], esi
ja 0x43c417
mov dword [esp + 0x10], eax
mov edi, dword [esp + 0x14]
xor esi, esi
cmp dword [esp + 0x10], esi
jbe 0x43c472
mov eax, dword [ebp + 0x10]
mov ecx, dword [edi]
cmp ecx, dword [eax + esi*4]
lea ebx, [eax + esi*4]
je 0x43c462
call fcn.00401700
mov eax, dword [ebx]
test eax, eax
mov dword [edi], eax
je 0x43c462
movzx edx, byte [eax]
cmp edx, 0x80
jae 0x43c45b
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c462
mov eax, edi
call fcn.00459380
add esi, 1
add edi, 4
cmp esi, dword [esp + 0x10]
jb 0x43c423
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x43c482
call fcn.004012e0
mov edx, dword [ebp + 0x14]
lea ecx, [esi + esi]
and edx, 1
or ecx, edx
mov dword [ebp + 0x10], edi
mov eax, edi
mov dword [ebp + 0x14], ecx
jmp 0x43c5ea
mov edi, dword [esp + 0x38]
mov esi, 1
cmp edi, esi
jb 0x43c4ad
add esi, esi
cmp esi, edi
jbe 0x43c4a7
mov ebx, dword [esp + 0x18]
mov edx, dword [ebp + 0x10]
mov eax, ebx
test eax, eax
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
jge 0x43c4c8
fadd dword [0x6c0a38]
fstp dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
shr ecx, 0x17
and ecx, 0xff
sub ecx, 0x7f
js 0x43c4e7
mov eax, 1
shl eax, cl
jmp 0x43c4e9
xor eax, eax
cmp eax, ebx
jae 0x43c4ef
add eax, eax
cmp eax, esi
je 0x43c5da
test esi, esi
mov dword [esp + 0x14], 0
je 0x43c5c1
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
call fcn.00457920
test eax, eax
je 0x43c35b
lea edi, [eax + 4]
mov dword [eax], esi
push 4
mov ebx, 0x401810
mov eax, esi
mov ecx, edi
call fcn.00401380
test edi, edi
mov dword [esp + 0x14], edi
je 0x43c35b
mov eax, dword [ebp + 0x14]
shr eax, 1
cmp eax, esi
jbe 0x43c564
mov eax, esi
mov dword [esp + 0x10], esi
jmp 0x43c568
mov dword [esp + 0x10], eax
xor ebx, ebx
test eax, eax
jbe 0x43c5bd
mov edi, dword [esp + 0x14]
mov eax, dword [ebp + 0x10]
mov ecx, dword [edi]
cmp ecx, dword [eax + ebx*4]
lea esi, [eax + ebx*4]
je 0x43c5b1
call fcn.00401700
mov eax, dword [esi]
test eax, eax
mov dword [edi], eax
je 0x43c5b1
movzx edx, byte [eax]
cmp edx, 0x80
jae 0x43c5aa
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c5b1
mov eax, edi
call fcn.00459380
add ebx, 1
add edi, 4
cmp ebx, dword [esp + 0x10]
jb 0x43c572
mov edi, dword [esp + 0x38]
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x43c5cd
call fcn.004012e0
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [ebp + 0x10], eax
mov edx, eax
je 0x43c652
mov ecx, dword [ebp + 0x14]
lea eax, [edi + edi]
and ecx, 1
or eax, ecx
mov dword [ebp + 0x14], eax
mov eax, edx
test eax, eax
je 0x43c652
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x14]
shr eax, 1
mov esi, dword [ecx + 0x10]
mov edx, dword [ebp + 0x10]
mov ecx, dword [esp + 0x18]
lea edi, [edx + ecx*4]
je 0x43c652
sub esi, edi
mov ebx, eax
lea ebx, [ebx]
mov edx, dword [edi]
cmp edx, dword [esi + edi]
je 0x43c64a
call fcn.00401700
mov eax, dword [esi + edi]
test eax, eax
mov dword [edi], eax
je 0x43c64a
movzx ecx, byte [eax]
cmp ecx, 0x80
jae 0x43c643
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x43c64a
mov eax, edi
call fcn.00459380
add edi, 4
sub ebx, 1
jne 0x43c610
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov byte [esp + 0x38], 1
jmp 0x43c680
cmp byte [esp + 0x38], 0
je 0x43c675
mov dword [ebp], 0
jmp 0x43c680
push ebp
mov byte [esp + 0x3c], 1
call fcn.0043c700
mov edx, dword [esi + 4]
add edi, 1
shr edx, 1
cmp edi, edx
mov dword [esp + 0x1c], edi
jb 0x43bf80
cmp byte [esp + 0x38], 0
jne 0x43c6db
mov eax, dword [esi + 4]
test al, 1
jne 0x43c6db
shr eax, 1
lea ecx, [eax - 1]
test eax, ecx
jne 0x43c6b5
push esi
call fcn.0043d150
test eax, eax
je 0x43c6db
mov eax, dword [esi + 4]
shr eax, 1
lea edx, [eax + eax*8]
mov eax, dword [esi]
lea ecx, [eax + edx*4]
push ecx
call fcn.0043c700
mov eax, dword [esi + 4]
mov edx, eax
and edx, 0xfffffffe
add edx, 2
and eax, 1
xor edx, eax
mov dword [esi + 4], edx
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x74]
push ecx
call dword [sym.imp.KERNEL32.dll_SetEvent]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x20
ret 0xc