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

Disassembly:
sub esp, 0xe0
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x20], edi
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, eax
mov eax, dword [edi + 0x14]
test eax, eax
je 0x5942e0
cmp eax, esi
jne 0x5942e0
inc dword [edi + 0x18]
jmp 0x594300
mov al, byte [edi + 5]
test al, al
je 0x5942ef
lea eax, [edi + 0x1c]
push eax
call ebp
jmp 0x5942f6
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x10]
mov dword [edi + 0x18], 0
mov dword [edi + 0x14], esi
push 1
push 0
push 0
mov ecx, edi
call fcn.0058f5f0
test al, al
jne 0x594375
mov eax, dword [edi + 0x18]
test eax, eax
je 0x594338
mov eax, dword [edi + 0x14]
test eax, eax
je 0x594338
call ebx
cmp dword [edi + 0x14], eax
jne 0x594338
dec dword [edi + 0x18]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
mov al, byte [edi + 5]
test al, al
mov dword [edi + 0x14], 0
je 0x59435f
add edi, 0x1c
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
lea ecx, [esp + 0x38]
call fcn.005a09e0
push 0x2710
lea ecx, [esp + 0x3c]
call fcn.0059c7b0
mov al, byte [edi + 0x64]
test al, al
je 0x59439e
mov dword [esp + 0x80], 3
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
mov edi, 0x6b6e10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6b6e10
lea ecx, [esp + 0x1c]
mov byte [esp + 0x91], 1
mov dword [esp + 0x1c], esi
call fcn.0049d9d0
or ecx, 0xffffffff
xor eax, eax
mov edi, str.LSID
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.LSID
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], esi
call fcn.0049d9d0
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x14]
push ecx
add edx, 0x74
push edx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x44]
call fcn.005a12b0
lea ecx, [esp + 0x10]
call fcn.004039f0
lea ecx, [esp + 0x14]
mov dword [esp + 0x10], esi
call fcn.004039f0
or ecx, 0xffffffff
xor eax, eax
mov edi, 0x6b6e10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6b6e10
lea ecx, [esp + 0x1c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], esi
call fcn.0049d9d0
or ecx, 0xffffffff
xor eax, eax
mov edi, 0x6b6e10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x6b6e10
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], esi
call fcn.0049d9d0
mov ecx, dword [esp + 0xf4]
push ecx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x34]
call fcn.0058f470
push eax
lea ecx, [esp + 0x4c]
call fcn.005a0e40
lea ecx, [esp + 0x28]
mov esi, eax
call fcn.004039f0
xor edi, edi
mov dword [esp + 0x28], edi
lea ecx, [esp + 0x10]
call fcn.004039f0
lea ecx, [esp + 0x14]
mov dword [esp + 0x10], edi
call fcn.004039f0
cmp esi, edi
jne 0x5944c9
lea edx, [esp + 0x24]
push edx
lea ecx, [esp + 0x3c]
call fcn.0059d050
mov ecx, dword [esp + 0x4c]
xor edi, edi
cmp ecx, edi
je 0x5944df
mov eax, dword [ecx]
call dword [eax + 0x4c]
cmp eax, 0xc8
je 0x594559
lea ecx, [esp + 0x24]
call fcn.004039f0
lea ecx, [esp + 0x38]
mov dword [esp + 0x24], edi
call fcn.005a0ce0
mov esi, dword [esp + 0x20]
cmp dword [esi + 0x18], edi
je 0x594520
cmp dword [esi + 0x14], edi
je 0x594520
call ebx
cmp dword [esi + 0x14], eax
jne 0x594520
mov eax, dword [esi + 0x18]
dec eax
pop edi
mov dword [esi + 0x18], eax
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
mov al, byte [esi + 5]
test al, al
mov dword [esi + 0x14], edi
je 0x594543
add esi, 0x1c
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x14]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xe0
ret 4
mov eax, dword [esp + 0x20]
lea edi, [eax + 0x90]
call ebx
mov esi, eax
mov eax, dword [edi + 0x14]
test eax, eax
je 0x594579
cmp eax, esi
jne 0x594579
inc dword [edi + 0x18]
xor ebp, ebp
jmp 0x594597
mov al, byte [edi + 5]
test al, al
je 0x594588
lea ecx, [edi + 0x1c]
push ecx
call ebp
jmp 0x59458f
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x10]
xor ebp, ebp
mov dword [edi + 0x18], ebp
mov dword [edi + 0x14], esi
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebp
call fcn.0049f6e0
mov eax, dword [esp + 0x34]
xor esi, esi
test eax, 0xfffffffe
mov dword [esp + 0x2c], esi
jbe 0x594cd8
mov edx, dword [esp + 0x30]
push ebp
push 0x3d
push ebp
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [edx + esi*4]
call fcn.0049f9e0
mov ecx, dword [esp + 0x30]
push ebp
push 0x3d
push 1
lea eax, [esp + 0x24]
push eax
lea ecx, [ecx + esi*4]
call fcn.0049f9e0
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x59461b
test dword [eax], 0xffffff00
je 0x59461b
mov cl, byte [eax + 4]
test cl, cl
je 0x59461b
mov eax, dword [esp + 0x18]
cmp eax, ebp
je 0x59461b
test dword [eax], 0xffffff00
je 0x59461b
mov cl, byte [eax + 4]
test cl, cl
jne 0x59463a
lea ecx, [esp + 0x18]
call fcn.004039f0
lea ecx, [esp + 0x10]
mov dword [esp + 0x18], ebp
call fcn.004039f0
mov dword [esp + 0x10], ebp
jmp 0x594cc5
or ecx, 0xffffffff
xor eax, eax
mov edi, str.services
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.services
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], ebp
call fcn.0049d9d0
mov ecx, dword [esp + 0x10]
cmp ecx, ebp
mov edi, dword [esp + 0x14]
je 0x5946f9
cmp edi, ebp
je 0x59470b
lea eax, [edi + 4]
cmp eax, ebp
je 0x59470b
lea esi, [ecx + 4]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x5946f2
test cl, cl
je 0x5946a6
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x5946f2
add eax, 2
add esi, 2
test cl, cl
jne 0x594682
xor eax, eax
mov ebp, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
sete bl
test edi, edi
je 0x59472a
mov eax, dword [edi]
and eax, 0xff
cmp eax, 0x80
mov esi, edi
jae 0x59472a
push edi
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x594719
mov ecx, dword [esi]
and ecx, 0xff
cmp ecx, 0x80
jae 0x594714
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594719
sbb eax, eax
sbb eax, 0xffffffff
jmp 0x5946a8
cmp edi, ebp
je 0x5946a6
lea eax, [edi + 4]
cmp eax, ebp
je 0x59470b
mov eax, 1
jmp 0x5946a8
cmp ecx, ebp
je 0x5946a6
or eax, 0xffffffff
jmp 0x5946a8
mov eax, 0xff
test eax, eax
jne 0x59472a
mov edx, dword [esp + 0x14]
push edx
call fcn.00499410
add esp, 4
test bl, bl
je 0x594755
mov eax, dword [esp + 0x18]
test eax, eax
je 0x59473b
add eax, 4
jmp 0x59473d
xor eax, eax
push eax
call fcn.0048858d
mov ecx, dword [esp + 0x24]
add esp, 4
mov dword [ecx + 0x78], eax
mov dword [ecx + 0x7c], edx
jmp 0x594bf9
or ecx, 0xffffffff
xor eax, eax
mov edi, str.email
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.email
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
call fcn.0049d9d0
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov edi, dword [esp + 0x14]
je 0x594812
test edi, edi
je 0x594824
lea eax, [edi + 4]
test eax, eax
je 0x594824
lea esi, [ecx + 4]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x59480b
test cl, cl
je 0x5947c5
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x59480b
add eax, 2
add esi, 2
test cl, cl
jne 0x5947a1
xor eax, eax
test eax, eax
sete bl
test edi, edi
je 0x594843
mov eax, dword [edi]
and eax, 0xff
cmp eax, 0x80
mov esi, edi
jae 0x594843
push edi
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x594832
mov ecx, dword [esi]
and ecx, 0xff
cmp ecx, 0x80
jae 0x59482d
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594832
sbb eax, eax
sbb eax, 0xffffffff
jmp 0x5947c7
test edi, edi
je 0x5947c5
lea eax, [edi + 4]
test eax, eax
je 0x594824
mov eax, 1
jmp 0x5947c7
test ecx, ecx
je 0x5947c5
or eax, 0xffffffff
jmp 0x5947c7
mov eax, 0xff
test eax, eax
jne 0x594843
mov edx, dword [esp + 0x14]
push edx
call fcn.00499410
add esp, 4
test bl, bl
je 0x594ac2
push 0
push 0x6aa8ac
lea ecx, [esp + 0x20]
call fcn.0049e490
test al, al
mov ebx, dword [esp + 0x20]
je 0x594981
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov ecx, ebx
call fcn.005951b0
mov esi, dword [esp + 0x18]
mov edi, eax
cmp esi, dword [edi]
je 0x594917
test esi, esi
je 0x5948e1
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x5948d9
push esi
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x5948c8
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x5948c3
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x5948c8
mov eax, 0xff
test eax, eax
jne 0x5948d9
mov ecx, dword [esp + 0x18]
push ecx
call fcn.00499410
add esp, 4
mov dword [esp + 0x18], 0
mov edi, dword [edi]
test edi, edi
mov dword [esp + 0x18], edi
je 0x594917
mov edx, dword [edi]
and edx, 0xff
cmp edx, 0x80
jae 0x59490e
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x594917
lea ecx, [esp + 0x18]
call fcn.0049d350
mov eax, dword [esp + 0x28]
test eax, eax
je 0x594972
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x594972
push eax
call ebp
and eax, 0xff
cmp eax, 0x7f
jne 0x594961
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x59495c
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594961
mov eax, 0xff
test eax, eax
jne 0x594972
mov eax, dword [esp + 0x28]
push eax
call fcn.00499410
add esp, 4
mov dword [esp + 0x28], 0
mov byte [ebx + 0x168], 1
mov ebp, dword [ebx + 0xcc]
lea edi, [ebx + 0xc8]
shr ebp, 1
xor ebx, ebx
test ebp, ebp
jbe 0x594a63
mov ecx, dword [edi]
mov dword [esp + 0x14], ecx
nop
mov edx, dword [esp + 0x10]
test edx, edx
je 0x5949ad
add edx, 4
jmp 0x5949af
xor edx, edx
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
je 0x594a1d
lea ecx, [eax + 4]
test ecx, ecx
je 0x594a00
test edx, edx
je 0x594a00
test eax, eax
je 0x5949cd
lea esi, [eax + 4]
jmp 0x5949cf
xor esi, esi
mov eax, edx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x5949f7
test cl, cl
je 0x5949f1
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x5949f7
add eax, 2
add esi, 2
test cl, cl
jne 0x5949d1
xor eax, eax
test eax, eax
jmp 0x594a48
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jmp 0x594a48
test eax, eax
je 0x594a1d
mov ecx, dword [eax]
shr ecx, 8
test ecx, ecx
je 0x594a1d
test eax, eax
je 0x594a16
lea ecx, [eax + 4]
jmp 0x594a18
xor ecx, ecx
cmp byte [ecx], 0
jne 0x594a3b
test edx, edx
je 0x594a26
cmp byte [edx], 0
jne 0x594a4f
mov ecx, dword [edi + 8]
lea eax, [esp + 0x18]
push eax
lea ecx, [ecx + ebx*4]
call fcn.00436200
jmp 0x594bf9
test eax, eax
je 0x594a44
add eax, 4
jmp 0x594a46
xor eax, eax
cmp eax, edx
sete al
test al, al
jne 0x594a26
mov ecx, dword [esp + 0x14]
inc ebx
add ecx, 4
cmp ebx, ebp
mov dword [esp + 0x14], ecx
jb 0x5949a0
test byte [edi + 4], 1
jne 0x594bf9
lea edx, [ebp - 1]
test ebp, edx
jne 0x594a83
mov ecx, edi
call fcn.004400e0
test eax, eax
je 0x594bf9
mov ecx, dword [edi + 4]
mov edx, dword [edi]
lea eax, [esp + 0x10]
shr ecx, 1
push eax
lea ecx, [edx + ecx*4]
call fcn.00436200
mov ecx, dword [edi + 4]
mov eax, ecx
and eax, 0xfffffffe
add eax, 2
and ecx, 1
xor eax, ecx
mov ecx, dword [edi]
mov dword [edi + 4], eax
shr eax, 1
lea eax, [ecx + eax*4 - 4]
test eax, eax
je 0x594bf9
lea esi, [edi + 8]
jmp 0x594bb7
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x1f]
push eax
lea esi, [edx + 0xc8]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
mov ecx, esi
mov dword [esp + 0x20], 0
mov byte [esp + 0x2b], 0
call fcn.00595d10
test eax, eax
jne 0x594bf9
mov al, byte [esp + 0x1f]
test al, al
je 0x594b62
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x14]
mov edx, dword [eax + ecx*4]
lea esi, [eax + ecx*4]
cmp edx, dword [esp + 0x18]
je 0x594bf9
mov ecx, esi
call fcn.004039f0
mov eax, dword [esp + 0x18]
mov dword [esi], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x594c54
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x594b56
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x594bf9
mov ecx, esi
call fcn.0049d350
jmp 0x594bf9
mov eax, dword [esi + 4]
test al, 1
jne 0x594bf9
shr eax, 1
lea edx, [eax - 1]
test eax, edx
jne 0x594b81
mov ecx, esi
call fcn.004400e0
test eax, eax
je 0x594bf9
mov ecx, dword [esi + 4]
mov edx, dword [esi]
lea eax, [esp + 0x10]
shr ecx, 1
push eax
lea ecx, [edx + ecx*4]
call fcn.00436200
mov ecx, dword [esi + 4]
mov eax, ecx
and eax, 0xfffffffe
add eax, 2
and ecx, 1
xor eax, ecx
mov ecx, dword [esi]
mov dword [esi + 4], eax
shr eax, 1
lea eax, [ecx + eax*4 - 4]
test eax, eax
je 0x594bf9
add esi, 8
mov eax, dword [esi + 4]
test al, 1
jne 0x594bf9
shr eax, 1
lea edx, [eax - 1]
test eax, edx
jne 0x594bd2
mov ecx, esi
call fcn.004400e0
test eax, eax
je 0x594bf9
mov ecx, dword [esi + 4]
mov edx, dword [esi]
shr ecx, 1
lea eax, [esp + 0x18]
lea ecx, [edx + ecx*4]
push eax
call fcn.00436200
mov eax, dword [esi + 4]
mov ecx, eax
and ecx, 0xfffffffe
add ecx, 2
and eax, 1
xor ecx, eax
mov dword [esi + 4], ecx
mov esi, dword [esp + 0x18]
test esi, esi
je 0x594c54
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x594c54
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x594c43
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x594c3e
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594c43
mov eax, 0xff
test eax, eax
jne 0x594c54
mov ecx, dword [esp + 0x18]
push ecx
call fcn.00499410
add esp, 4
mov esi, dword [esp + 0x10]
test esi, esi
mov dword [esp + 0x18], 0
je 0x594cb7
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x594cb7
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x594ca6
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x594ca1
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594ca6
mov eax, 0xff
test eax, eax
jne 0x594cb7
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00499410
add esp, 4
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x10], 0
xor ebp, ebp
mov edx, dword [esp + 0x34]
inc esi
shr edx, 1
cmp esi, edx
mov dword [esp + 0x2c], esi
jb 0x5945c2
mov ebx, dword [esp + 0x20]
lea eax, [esp + 0x2c]
push ebx
push eax
call fcn.005b1550
mov esi, dword [ebx + 0xd8]
mov ebp, eax
mov eax, dword [ebp]
lea edi, [ebx + 0xd8]
add esp, 8
cmp esi, eax
je 0x594d93
test esi, esi
je 0x594d60
mov ecx, dword [esi]
and ecx, 0xff
cmp ecx, 0x80
jae 0x594d5a
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x594d4b
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x594d46
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594d4b
mov eax, 0xff
test eax, eax
jne 0x594d5a
mov eax, dword [edi]
push eax
call fcn.00499410
add esp, 4
mov dword [edi], 0
mov eax, dword [ebp]
test eax, eax
mov dword [edi], eax
je 0x594d93
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
jae 0x594d8c
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
cmp eax, 0xff
jne 0x594d93
mov ecx, edi
call fcn.0049d350
mov eax, dword [esp + 0x2c]
xor ebp, ebp
cmp eax, ebp
je 0x594df2
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x594df2
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x594de1
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x594ddc
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594de1
mov eax, 0xff
cmp eax, ebp
jne 0x594df2
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00499410
add esp, 4
mov eax, dword [esp + 0x30]
cmp eax, ebp
je 0x594e17
mov edx, dword [eax - 4]
lea esi, [eax - 4]
push fcn.00438360
push edx
push 4
push eax
call fcn.00430de0
push esi
call fcn.004a1190
add esp, 4
mov ecx, dword [esp + 0x34]
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
and ecx, 1
lea esi, [ebx + 0x90]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ecx
cmp dword [esi + 0x18], ebp
je 0x594e4c
cmp dword [esi + 0x14], ebp
je 0x594e4c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi + 0x14], eax
jne 0x594e4c
dec dword [esi + 0x18]
jmp 0x594e65
mov al, byte [esi + 5]
test al, al
mov dword [esi + 0x14], ebp
je 0x594e5e
add esi, 0x1c
push esi
call edi
jmp 0x594e65
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
mov eax, dword [esp + 0x24]
cmp eax, ebp
je 0x594ec4
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x594ec4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x594eb3
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x594eae
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x594eb3
mov eax, 0xff
cmp eax, ebp
jne 0x594ec4
mov eax, dword [esp + 0x24]
push eax
call fcn.00499410
add esp, 4
lea ecx, [esp + 0x38]
mov dword [esp + 0x24], ebp
call fcn.005a0ce0
cmp dword [ebx + 0x18], ebp
je 0x594efc
cmp dword [ebx + 0x14], ebp
je 0x594efc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [ebx + 0x14], eax
jne 0x594efc
mov eax, dword [ebx + 0x18]
pop edi
pop esi
dec eax
mov dword [ebx + 0x18], eax
pop ebp
mov al, 1
pop ebx
add esp, 0xe0
ret 4
mov al, byte [ebx + 5]
test al, al
mov dword [ebx + 0x14], ebp
je 0x594f1b
add ebx, 0x1c
push ebx
call edi
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0xe0
ret 4
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x14]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0xe0
ret 4