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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x38]
cmp eax, dword [ecx + 8]
jbe 0x581d8f
sub esp, 0xb8
mov eax, dword [esp + 0xbc]
mov ecx, dword [eax + 0x20]
mov edx, dword [eax + 0x1c]
test edx, edx
je 0x581d13
lea ebx, [eax + 0x24]
test byte [ebx], al
mov ebp, dword [esp + 0xc0]
mov esi, dword [ebp]
mov edi, dword [ebp + 8]
mov ebp, dword [ebp + 4]
cmp edi, 5
jb 0x581d88
mov dword [esp + 0xb4], ecx
mov ecx, dword [esp + 0xc4]
add ecx, 5
cmp ecx, ebp
ja 0x581d88
mov dword [esp + 0x84], ebp
mov edx, dword [edx + 0x10]
mov dword [esp + 0x80], edx
mov edx, dword [eax + 0x64]
mov ebp, dword [eax + 0x60]
mov eax, dword [eax + 0x5c]
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], 8
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], 5
mov dword [esp + 0x24], edi
sub edi, ecx
mov eax, edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and edi, ecx
lea edx, [esi + edi]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x84]
sub edx, ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0xb4]
mov dword [esp], eax
mov eax, dword [esp + 0x80]
call eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0xa0], ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x60], edx
mov ebx, dword [esp + 0xc0]
mov ebp, dword [ebx + 4]
mov dword [esp + 0x84], ebp
mov dword [esp], ebx
lea esi, [edx + ebp]
mov dword [esp + 4], esi
call fcn.00581da0
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov ebx, dword [eax]
mov ebp, dword [esp + 0x84]
cmp ebp, ecx
ja 0x581d81
sub edx, ebp
neg edx
sar edx, 0x1f
and edx, ebp
add edx, ebx
sub ecx, ebp
mov ebx, dword [esp + 0x60]
cmp ecx, ebx
jle 0x581d08
mov ecx, ebx
mov ebp, dword [esp + 0xa0]
cmp edx, ebp
je 0x581787
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
call fcn.0044d1e0
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0xbc]
mov dword [edx + 0x60], ecx
mov ecx, dword [esp + 0x64]
mov dword [edx + 0x64], ecx
mov ecx, dword [0xa8f2d0]
test ecx, ecx
jne 0x581cf4
mov eax, dword [esp + 0xa0]
mov dword [edx + 0x5c], eax
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax + 8]
mov ebx, dword [eax + 4]
mov ebp, dword [eax]
cmp ebx, 5
jb 0x581d7a
add ecx, 0xfffffffb
mov esi, ecx
neg ecx
sar ecx, 0x1f
and ecx, 5
add ecx, ebp
mov ebp, dword [edx + 0x18]
mov edi, dword [edx + 0x14]
test edi, edi
je 0x58186f
je 0x581d60
mov dword [esp + 0x84], ebx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xb4], ebp
mov dword [esp + 0x80], edi
lea eax, [0x73eea0]
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
call fcn.00407c20
mov eax, dword [esp + 0x84]
add eax, 0xfffffffb
mov ecx, dword [esp + 0xc]
movzx edx, byte [esp + 0x14]
mov ebx, dword [esp + 0x10]
test dl, dl
je 0x5818c6
mov ecx, dword [ecx + 0x10]
mov edx, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebp
mov dword [esp], ebx
call ecx
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
cmp edx, 3
jbe 0x581d21
add edx, 0xfffffffb
mov ebx, edx
sar edx, 8
mov byte [ecx + 3], dl
mov ecx, dword [eax + 4]
mov eax, dword [eax]
cmp ecx, 4
jbe 0x581d1a
mov byte [eax + 4], bl
mov eax, dword [esp + 0xbc]
mov dword [esp], eax
call fcn.005809e0
mov byte [esp + 0xc8], 1
mov byte [esp + 0xc9], 0
add esp, 0xb8
ret
mov dword [esp + 0x54], eax
lea eax, [0x75ae40]
mov dword [esp], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xb4]
mov dword [esp + 8], ecx
call fcn.00407c20
mov eax, dword [esp + 0xc]
movzx ecx, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
test cl, cl
je 0x581ad1
mov dword [esp + 0x70], eax
mov dword [esp + 0xac], edx
mov ecx, dword [esp + 0xc0]
mov ebx, dword [ecx + 4]
mov dword [esp + 0x84], ebx
mov ebp, dword [eax + 0x18]
mov dword [esp], edx
call ebp
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc0]
mov dword [esp], ecx
mov edx, dword [esp + 0x84]
add eax, edx
mov dword [esp + 4], eax
call fcn.00581da0
mov eax, dword [esp + 0x84]
add eax, 0xfffffffb
mov ecx, dword [esp + 0xc4]
sub eax, ecx
mov edx, dword [esp + 0xc0]
mov ebx, dword [edx + 4]
mov ebp, dword [edx]
mov esi, dword [edx + 8]
lea edi, [ecx + 5]
test edi, edi
jl 0x581d59
cmp edi, 5
jb 0x581d59
cmp edi, esi
ja 0x581d59
lea edx, [esi - 5]
mov dword [esp + 0x5c], edx
neg edx
sar edx, 0x1f
and edx, 5
add edx, ebp
test ecx, ecx
jne 0x581aac
mov ecx, dword [esp + 0xbc]
lea edx, [ecx + 0x24]
test byte [edx], al
mov dword [esp + 0x90], eax
mov eax, 8
mov dword [esp + 0x5c], eax
mov eax, 8
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x90]
cmp edi, ebx
ja 0x581d52
sub esi, edi
mov ebx, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, edi
add ebp, esi
test eax, eax
jl 0x581d4b
cmp eax, ebx
ja 0x581d4b
lea esi, [ecx + 0x30]
mov dword [esp + 0xb0], esi
test byte [esi], al
lea edi, [ecx + 0x24]
test byte [edi], al
mov edi, dword [ecx + 0x28]
mov esi, dword [ecx + 0x24]
mov dword [ecx + 0x30], esi
mov dword [ecx + 0x34], edi
mov esi, dword [esp + 0xc0]
mov edi, dword [esi]
mov esi, dword [esi + 8]
cmp esi, 3
jb 0x581d44
lea esi, [ecx + 0x38]
cmp edi, esi
je 0x581a3c
movzx esi, word [edi]
movzx edi, byte [edi + 2]
mov word [ecx + 0x38], si
xchg edi, eax
mov byte [ecx + 0x3a], al
xchg edi, eax
mov esi, eax
sar eax, 8
mov byte [ecx + 0x3b], al
xchg esi, eax
mov byte [ecx + 0x3c], al
xchg esi, eax
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x1c]
mov dword [esp + 4], ebp
mov dword [esp + 8], 0
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ebx
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], 0xd
mov dword [esp + 0x30], 0xd
mov edx, dword [esp + 0xac]
mov dword [esp], edx
call eax
jmp 0x58186f
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x88]
jmp 0x5819ca
lea eax, [0x74ac80]
mov dword [esp], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 8], eax
call fcn.00407c20
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
je 0x581d60
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x74], edx
mov eax, dword [edx + 0x10]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0xc4]
test ecx, ecx
jle 0x581ce0
mov edx, dword [esp + 0x7c]
cmp ecx, edx
ja 0x581d3d
mov eax, dword [esp + 0x74]
mov ebx, dword [eax + 0x18]
mov ebp, dword [esp + 0x9c]
mov dword [esp + 4], ebp
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
call ebx
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x54]
cmp eax, ecx
ja 0x581d36
sub ecx, eax
mov edx, dword [esp + 0x7c]
sub edx, eax
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, eax
mov ebp, dword [esp + 0x9c]
add edx, ebp
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x78]
mov dword [esp + 0xc], eax
call fcn.005814a0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x4c], ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x98], edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x6c], ebx
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x68], ebp
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xa4], esi
mov edi, dword [esp + 0xc0]
mov dword [esp], edi
mov ebx, dword [esp + 0xc4]
lea esi, [ecx + ebx]
lea esi, [ebp + esi + 5]
mov dword [esp + 4], esi
call fcn.00581da0
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
mov ebx, dword [eax]
mov ebp, dword [esp + 0xc4]
lea esi, [ebp + 5]
cmp esi, edx
ja 0x581d2f
mov eax, dword [esp + 0x74]
mov ebp, dword [eax + 0x14]
sub ecx, esi
mov edi, ecx
neg ecx
sar ecx, 0x1f
and ecx, esi
add ecx, ebx
mov dword [esp + 4], ecx
sub edx, esi
mov dword [esp + 8], edx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0xa8]
mov dword [esp], edx
call ebp
mov eax, dword [esp + 0xc0]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov ebx, dword [eax + 8]
mov ebp, dword [esp + 0xc4]
mov esi, dword [esp + 0x4c]
lea ebp, [esi + ebp + 5]
cmp ebp, ecx
ja 0x581d28
mov eax, dword [esp + 0x74]
mov eax, dword [eax + 0x14]
sub ebx, ebp
mov esi, ebx
neg ebx
sar ebx, 0x1f
and ebx, ebp
add edx, ebx
mov dword [esp + 4], edx
sub ecx, ebp
mov dword [esp + 8], ecx
mov dword [esp + 0xc], esi
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp], ecx
call eax
jmp 0x58186f
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x9c]
jmp 0x581b93
lea edi, [edx + 0x5c]
mov eax, dword [esp + 0xa0]
call fcn.0044c9e0
jmp 0x5817b4
mov ebx, ecx
mov ecx, dword [esp + 0x60]
jmp 0x58176c
mov edx, eax
jmp 0x5817b4
call fcn.004266e0
ud2
call fcn.004266e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
lea eax, [0x730dc0]
mov dword [esp], eax
lea eax, [0x7fc618]
mov dword [esp + 4], eax
call fcn.004275c0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.004267e0
ud2
call fcn.0044b280
jmp fcn.005815f0