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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x55ec71
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
push ebx
push esi
push edi
mov eax, dword [0x569040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov eax, dword [esi]
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x3c], eax
je 0x5d6748
push eax
call fcn.0051f32b
test al, al
je 0x5d6748
mov eax, 1
xor ebx, ebx
mov byte [ebp - 0x38], al
mov dword [ebp - 4], ebx
cmp byte [0x569050], bl
jne 0x608214
mov eax, dword [esi]
mov eax, dword [eax + 0x18]
mov ecx, dword [eax]
lea edx, [ebp - 0x88]
push edx
push eax
mov eax, dword [ecx + 0x10]
call eax
mov eax, dword [ebp - 0x88]
mov ecx, dword [esi + 4]
mov dword [ecx + 0x20], eax
cmp eax, ebx
je 0x608220
lea edi, [eax + 2]
nop
nop
nop
nop
nop
nop
nop
nop
mov dx, word [eax]
add eax, 2
cmp dx, bx
jne 0x5d32b3
sub eax, edi
sar eax, 1
mov dword [ecx + 0x28], eax
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x14]
lea edx, [ebp - 0xb0]
add ecx, 0x30
push edx
mov dword [ebp - 0x4c], ebx
call fcn.005d3898
mov byte [ebp - 4], 1
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp - 0xb0]
push ecx
mov cl, byte [ebp + 0x10]
lea edx, [ebp + 0x14]
push edx
mov edi, esi
call fcn.005d39bc
mov edi, dword [ebp + 0xc]
mov byte [ebp + 0x13], al
mov byte [edi], bl
mov byte [edi + 1], bl
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
cmp al, bl
jne 0x608227
lea eax, [esi + 0x5c]
mov dword [ebp - 0x18], eax
mov dword [eax], ebx
mov eax, dword [esi + 0x10]
xor ecx, ecx
mov dword [esi + 0x60], eax
xor eax, eax
mov dword [esi + 0x68], ecx
mov ecx, dword [esi]
mov byte [esi + 0xaa], 1
mov dword [esi + 0x64], eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x78]
call edx
mov byte [edi], 1
xor eax, eax
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0x24]
mov byte [esi + 0xab], al
and ecx, 0xfffffff
mov eax, edi
and eax, 0xfffffff
sub ecx, eax
mov dword [esi + 0x98], ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xffffff
and edx, 0xffffff
sub edx, ecx
mov byte [esi + 0xa9], bl
mov dword [esi + 0x9c], edx
cmp byte [ebp + 0x13], bl
jne 0x60828d
xor eax, eax
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0x10]
cmp eax, ebx
jne 0x6082ad
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x90], ebx
lea ecx, [ebp - 0x94]
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
lea eax, [esi + 0x90]
mov dword [eax + 4], ecx
mov ecx, dword [ebp + 0x28]
mov dword [eax], edx
mov edx, dword [ebp + 0x1c]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x8c], ecx
mov ecx, dword [esi]
mov dword [esi + 0x80], edx
mov dword [esi + 0x84], edi
mov dword [esi + 0x88], eax
call fcn.005d3b0d
cmp byte [ebp - 0x38], bl
je 0x5d33fc
mov edx, dword [ebp - 0x1c]
mov dword [edx], ebx
mov byte [ebp - 0x38], bl
mov eax, dword [esi]
mov eax, dword [eax + 0x14]
add eax, 0x30
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 2
lea edx, [ebp - 0x58]
push edx
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 0x24]
push eax
mov eax, dword [esi]
mov ebx, dword [eax + 0x7c]
lea ecx, [esi + 8]
push edx
mov dword [ebp - 0x14], ecx
call fcn.005ce1ff
xor ebx, ebx
cmp byte [ebp + 0x13], bl
jne 0x6082e7
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x28]
sar eax, 5
add eax, 0x20
and eax, 0xffffffe0
cmp byte [esi + 0xaa], bl
je 0x6082f7
mov dword [ebp - 0x20], ebx
mov edx, dword [esi]
mov ecx, dword [edx + 0x14]
mov edi, dword [esi + 4]
add ecx, 0x30
mov dword [ebp - 0x48], ecx
lea ecx, [eax*4]
mov dword [ebp - 0x44], ecx
shr ecx, 2
mov dword [edi + 0x30], eax
cmp ecx, eax
jne 0x608308
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x48]
mov edx, dword [ecx]
push eax
push ebx
push edx
call dword [fcn.00401220]
cmp eax, ebx
je 0x60830d
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x44]
add dword [ecx + 4], edx
mov edx, dword [ecx + 4]
cmp edx, dword [ecx + 8]
ja 0x5d6740
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0x20]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 4]
mov dword [eax + 0x2c], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
mov esi, dword [esi + 4]
add esi, 0x3c
call fcn.005cbbbe
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x68]
mov eax, dword [eax + 4]
mov edi, dword [ebp - 0x14]
push ebx
and esi, 0xfffffff
push esi
add edi, 0x3c
add eax, 0x3c
push edi
push eax
or eax, 0xffffffff
call fcn.005d1faf
push esi
push edi
or eax, 0xffffffff
call fcn.005d1f6d
xor ecx, ecx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov byte [ebp - 4], 3
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x2c]
mov edi, dword [eax + 0xc]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
cmp edi, ebx
jne 0x608336
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
mov edx, dword [eax + 0xc]
mov eax, dword [eax + 8]
cmp edx, ebx
ja 0x608317
mov ebx, dword [esi + 4]
call fcn.005d3184
test al, al
je 0x60832c
mov edi, dword [esi]
lea ecx, [ebp - 0x84]
push ecx
call fcn.005ce2c8
mov ebx, 4
mov byte [ebp - 4], bl
cmp byte [ebp + 0x13], 0
mov edi, dword [ebp + 8]
jne 0x608373
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 4]
mov eax, dword [ecx + 0x20]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x74], eax
mov edx, dword [ecx + 0xc]
mov eax, dword [ebp - 0x18]
mov dword [edx], 0
or dword [ebp - 0x64], ebx
mov eax, dword [eax]
or dword [ebp - 0x64], 2
test eax, eax
jne 0x6083b2
and dword [ebp - 0x64], 0xfffffff7
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x24]
push ecx
lea edx, [ebp - 0x58]
push edx
push eax
lea ecx, [ebp - 0x84]
push ecx
mov ebx, edi
call fcn.005cf7ed
mov ecx, dword [ebp + 0xc]
or byte [ecx], al
cmp dword [edi + 0x10], 0
mov byte [edi + 0xa8], 1
jne 0x6083fb
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx + 0x34]
test eax, eax
jne 0x60848d
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x60854a
mov edx, dword [edi]
mov eax, dword [ebp - 0x18]
mov esi, dword [edx + 0x7c]
call fcn.005ce529
test byte [ebp - 0x64], 0x10
jne 0x60856f
mov edx, dword [edi]
mov ecx, dword [edx + 0x14]
mov edi, dword [edi + 4]
add ecx, 0x30
call fcn.005ce53d
mov esi, dword [ebp + 8]
cmp byte [esi + 0xab], 0
jne 0x6085b8
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x5d6751
push eax
call fcn.0051f32b
test al, al
je 0x5d6751
mov eax, 1
cmp byte [esi + 0xa8], 0
mov byte [ebp - 0x38], al
je 0x5d369e
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx]
mov ebx, dword [ebp + 0xc]
mov edx, dword [esi + 4]
mov byte [ebx + 1], 1
test eax, eax
jl 0x6085f6
cmp eax, dword [edx + 8]
jge 0x6085fb
mov edi, dword [edx + 4]
lea ecx, [eax + eax*2]
lea edi, [edi + ecx*4]
movzx edi, byte [edi + 3]
mov ecx, dword [esi + 0x6c]
cmp edi, ecx
je 0x608600
cmp byte [esi + 0xab], 0
mov dword [ebx + 8], eax
jne 0x608616
mov edx, dword [edx + 8]
dec edx
mov dword [ebx + 0xc], edx
cmp byte [esi + 0xab], 0
jne 0x608616
mov ecx, dword [ebp - 0x8c]
mov edx, dword [esi]
mov eax, dword [edx + 0xe8]
push ecx
push ecx
lea ecx, [esi + 0x64]
push ecx
call fcn.005ce5d6
mov edi, dword [esi]
add edi, 0xf0
mov ebx, eax
mov eax, dword [edi]
test eax, eax
je 0x5d36dc
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [edi], 0
mov eax, dword [esi]
mov edi, dword [eax + 0xe8]
add eax, 0xe8
mov dword [ebp - 0x40], edi
test edi, edi
je 0x5d36fe
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
push edi
call edx
mov byte [ebp - 4], 5
cmp byte [ebp - 0x38], 0
je 0x5d3715
mov eax, dword [ebp - 0x1c]
mov dword [eax], 0
mov byte [ebp - 0x38], 0
cmp ebx, 1
jne 0x60862b
mov ecx, dword [esi + 4]
mov ecx, dword [ecx + 0x24]
mov ebx, dword [ebp - 0x30]
xor eax, eax
cmp dword [ecx + 0xc], ebx
jne 0x5d724a
cmp dword [ecx + 0xc], 0
jg 0x60864d
cmp byte [esi + 0xab], 0
jne 0x60877e
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 8]
add eax, 0xffffffff
js 0x608786
cmp eax, dword [ecx + 8]
jge 0x60878b
lea edx, [eax + eax*2]
mov eax, dword [ecx + 4]
lea eax, [eax + edx*4]
mov eax, dword [eax + 4]
mov ebx, dword [esi + 0x98]
mov edx, dword [esi]
mov ecx, dword [edx + 0xe4]
mov edi, dword [ecx]
and eax, 0xfffffff
push ebx
push eax
mov eax, dword [esi + 0x68]
and eax, 0xfffffff
push eax
push edx
mov edx, dword [edi + 0xc]
call edx
mov eax, dword [esi]
mov eax, dword [eax + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x20]
push eax
call edx
xor edi, edi
cmp eax, edi
jl 0x6087e2
mov esi, dword [esi + 4]
mov dword [esi + 0x20], edi
cmp byte [0x569050], 0
jne 0x608790
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x40]
cmp eax, edi
je 0x5d37d3
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [ebp - 0x40], edi
mov bl, 3
mov byte [ebp - 4], bl
mov dword [ebp - 0x84], 0x4ada38
mov al, 7
mov byte [ebp - 4], al
lea ecx, [ebp - 0x60]
mov dword [ebp + 0x10], ecx
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x60]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5d380f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x78]
mov dword [ebp + 0x10], ecx
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x78]
cmp eax, edi
je 0x5d382a
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x34]
cmp eax, edi
jne 0x60879f
mov byte [ebp - 4], 1
mov edi, dword [ebp - 0x58]
test edi, edi
jne 0x6087ad
mov byte [ebp - 4], 0
lea eax, [ebp - 0xb0]
push eax
call fcn.005cb9a3
mov dword [ebp - 4], 0xffffffff
cmp byte [ebp - 0x38], 0
jne 0x6087d0
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24
mov dword [ecx + 8], edx
jmp 0x5d34ad
xor ebx, ebx
xor eax, eax
jmp 0x5d326e
xor eax, eax
jmp 0x5d3643
mov edi, dword [ebp - 0x34]
test ebx, ebx
mov ebx, dword [esi + 4]
jne 0x6086d0
test eax, eax
jl 0x608648
mov ecx, dword [ebx + 0x24]
dec ebx
and al, 0x3b
inc ecx
or al, 0xf
lea edx, [eax + 0x14]
add eax, dword [eax]
test ecx, ecx
je 0x6086c1
cmp eax, dword [ecx + 0xc]
jae 0x6086c6
mov ecx, dword [ecx + 8]
lea eax, [ecx + eax*4]
mov eax, dword [eax]
mov edx, dword [esi]
mov ecx, dword [edx + 0xe4]
mov edx, dword [ebx + 8]
add edx, 0xffffffff
js 0x608774
cmp edx, dword [ebx + 8]
jge 0x608779
mov edi, dword [ebx + 4]
lea edx, [edx + edx*2]
lea edx, [edi + edx*4]
mov edx, dword [edx + 4]
mov edi, dword [ecx]
and edx, 0xfffffff
push edx
push eax
mov eax, dword [edi + 8]
call eax
jmp 0x5d373c