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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
mov ebx, edx
push esi
mov esi, ecx
mov dword [ebp - 0x18], ebx
push edi
mov edi, dword [ebx + 4]
add edi, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov eax, dword [esi + 0x80]
mov byte [ebx], 0
cmp byte [ebx + 2], 0
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 8], edi
je 0x5838d0
mov edx, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x28]
mov ecx, dword [ebx + 0x30]
cmp edx, dword [ebx + 0x34]
jb 0x583c57
ja 0x583821
cmp eax, ecx
jb 0x583c57
sub eax, ecx
mov dword [ebp - 0x1c], 0
mov ecx, dword [ebp + 8]
sbb edx, dword [ebx + 0x34]
cmp dword [ebp - 0x1c], edx
jb 0x58383d
ja 0x58383b
cmp ecx, eax
jb 0x58383d
mov ecx, eax
mov edx, dword [ebp - 0xc]
mov eax, dword [esi + 0x80]
add eax, ecx
cmp byte [esi + 0x1a], 0
mov dword [ebp - 0x24], eax
mov eax, 1
mov dword [ebp - 0x28], eax
jne 0x583ceb
nop dword [eax]
mov ecx, dword [ebx + 8]
sub edx, ecx
mov eax, dword [esi]
mov dword [ebp - 0x10], edx
cmp eax, 7
jne 0x583c6b
mov ecx, dword [esi + 0x80]
cmp ecx, dword [ebp - 0x20]
jne 0x583cda
mov al, byte [esi + 0x19]
mov edi, dword [esi + 0x20]
mov byte [ebp - 1], al
lea eax, [esi + 0x20]
cmp byte [ebp - 1], 2
mov dword [ebp - 0x14], eax
je 0x5839a0
mov eax, dword [ebp - 0x24]
sub eax, ecx
cmp eax, edi
cmovbe edi, eax
cmp byte [ebp - 1], 0
jne 0x5838d8
mov eax, dword [esi + 0x78]
cmp edi, edx
cmovbe edx, edi
add eax, ecx
push edx
push dword [ebp - 8]
mov dword [ebp - 0x10], edx
push eax
call fcn.0058aed0
mov edi, dword [ebp - 0x10]
add esp, 0xc
add dword [ebp - 8], edi
add dword [ebx + 8], edi
jmp 0x5838ec
mov ecx, dword [ebp + 8]
jmp 0x583840
movzx eax, byte [esi + 0xb]
push edi
push eax
mov eax, dword [esi + 0x78]
add eax, ecx
push eax
call fcn.0058ad30
add esp, 0xc
mov ecx, dword [esi + 0x80]
mov edx, ecx
mov eax, dword [esi + 0x38]
and eax, 0x1f
sub edx, eax
mov eax, dword [esi + 0x9c]
add eax, edi
mov dword [ebp - 0x10], edx
lea edx, [ecx + edi]
mov ecx, dword [esi + 0x98]
cmp eax, ecx
mov dword [esi + 0x80], edx
cmovb ecx, eax
xor eax, eax
add dword [esi + 0x38], edi
mov dword [esi + 0x9c], ecx
adc dword [esi + 0x3c], eax
mov dword [ebp - 0x1c], eax
cmp byte [esi + 0x1c], al
jne 0x583955
test byte [esi + 0x16], 4
je 0x583955
sub edx, dword [ebp - 0x10]
and edx, 0xffffffe0
je 0x583955
mov ecx, dword [esi + 0x78]
lea eax, [ecx + edx]
mov edx, dword [ebp - 0x10]
add eax, edx
add edx, ecx
push eax
lea ecx, [esi + 0x40]
call fcn.004655c0
mov edx, dword [ebp - 0x1c]
lea ecx, [ebx + 0x30]
mov eax, edi
add dword [ecx], eax
mov eax, dword [ebp - 0x14]
adc edx, dword [ecx + 4]
mov dword [ecx + 4], edx
sub dword [eax], edi
je 0x583bd5
cmp byte [ebx + 2], 0
je 0x583ca7
mov eax, dword [ebx + 0x2c]
cmp eax, dword [ecx + 4]
ja 0x583ca7
jb 0x583993
mov eax, dword [ebx + 0x28]
cmp eax, dword [ecx]
ja 0x583ca7
mov al, 4
mov byte [ebx], al
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [esi + 0x2c]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ecx]
sub edi, ecx
mov dword [ebp - 0x1c], ecx
test ecx, ecx
jne 0x583ada
mov ebx, dword [ebp - 0x10]
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
cmp edx, edi
jb 0x583adc
cmp dword [ebx + 8], 0xd
mov eax, dword [ebp - 8]
jae 0x583c1f
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
test cl, 2
jne 0x583a2c
shr ecx, 3
mov eax, 1
test byte [ebp - 0x14], 4
je 0x583a22
mov eax, dword [ebp - 8]
cmp edi, 3
jb 0x583c1f
mov ebx, dword [ebp - 0x14]
movzx eax, word [eax + 1]
shr ecx, 1
and ebx, 8
mov dword [ebp - 0x10], ebx
mov ebx, dword [ebp - 0x18]
jne 0x583a12
movzx eax, al
shl eax, 4
add ecx, eax
xor eax, eax
cmp dword [ebp - 0x10], eax
setne al
add eax, 2
test byte [ebp - 0x14], 1
cmovne ecx, dword [ebp - 0x28]
jmp 0x583a69
cmp edi, 5
jb 0x583c1f
mov eax, dword [eax + 1]
and ecx, 0xc
add ecx, 0x10
lea ecx, [ecx + ecx*2]
shr ecx, 4
mov dword [ebp - 0x10], ecx
lea ecx, [ecx*4 - 6]
shr eax, cl
mov dword [ebp - 0x14], eax
mov eax, 0x10
shl eax, cl
mov ecx, dword [ebp - 0x14]
dec eax
and ecx, eax
je 0x583c1c
mov eax, dword [ebp - 0x10]
add eax, ecx
cmp eax, edi
jae 0x583c1c
mov ecx, dword [ebp - 8]
movzx ecx, byte [eax + ecx]
inc eax
cmp ecx, 0x7f
jbe 0x583ab7
cmp eax, edi
jae 0x583c1c
mov ebx, dword [ebp - 8]
add ecx, 0xffffff80
movzx ebx, byte [eax + ebx]
inc eax
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x18]
cmp ecx, 0x7f
jne 0x583ab1
cmp eax, edi
jae 0x583c1c
mov ecx, dword [ebp - 8]
movzx ecx, byte [eax + ecx]
add ecx, 0x7f
inc eax
shl ecx, 8
add ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x583c1c
add eax, dword [ebx + 8]
cmp eax, 0xf
jae 0x583c1c
mov ecx, dword [ebp - 0x1c]
lea eax, [esi + 0x2c]
mov dword [ebp - 0x10], eax
lea eax, [esi + 0x20]
mov dword [ebp - 0x14], eax
cmp edx, edi
cmovbe edi, edx
test edi, edi
je 0x583b16
test ecx, ecx
jne 0x583af1
mov eax, dword [esi + 0x60]
xorps xmm0, xmm0
movups xmmword [eax + 0x30], xmm0
mov eax, dword [esi + 0x60]
push edi
push dword [ebp - 8]
add eax, 0x40
add eax, ecx
push eax
call fcn.0058aed0
mov eax, dword [ebp - 0x10]
add esp, 0xc
add dword [ebx + 8], edi
mov ecx, dword [ebp - 0x1c]
add dword [ebp - 8], edi
add ecx, edi
mov dword [eax], ecx
mov eax, dword [ebp - 0x14]
cmp ecx, dword [eax]
jne 0x583d21
mov eax, dword [esi + 0x60]
xorps xmm0, xmm0
mov edx, 0x40
movups xmmword [ecx + eax + 0x40], xmm0
mov edi, dword [esi + 0x60]
add edi, 0x40
cmp dword [ebx + 0x20], 0
mov eax, dword [esi + 0x80]
mov ecx, dword [esi + 0x28]
mov dword [ebp - 0x14], eax
je 0x583b54
mov eax, dword [esi + 0x7c]
sub eax, dword [ebp - 0x14]
cmp ecx, eax
cmova ecx, eax
push ecx
push edx
push dword [esi + 0x20]
mov edx, edi
lea ecx, [esi + 0x78]
call fcn.00583040
add esp, 0xc
test eax, eax
jne 0x583cee
mov eax, dword [esi + 0x38]
mov edx, dword [esi + 0x80]
and eax, 0x1f
mov ecx, dword [ebp - 0x14]
sub edx, dword [ebp - 0x14]
sub ecx, eax
mov dword [ebp - 0x1c], ecx
mov eax, 0
mov ecx, edx
add dword [ebx + 0x30], ecx
lea ecx, [ebx + 0x30]
adc eax, dword [ebx + 0x34]
mov dword [ebx + 0x34], eax
add dword [esi + 0x38], edx
adc dword [esi + 0x3c], 0
cmp byte [esi + 0x1c], 0
jne 0x583bd5
test byte [esi + 0x16], 4
lea ecx, [ebx + 0x30]
je 0x583bd5
mov eax, dword [esi + 0x80]
lea ecx, [ebx + 0x30]
mov edx, dword [ebp - 0x1c]
sub eax, edx
and eax, 0xffffffe0
je 0x583bd5
add eax, dword [esi + 0x78]
lea ecx, [esi + 0x40]
add eax, edx
add edx, dword [esi + 0x78]
push eax
call fcn.004655c0
lea ecx, [ebx + 0x30]
cmp byte [esi + 0x18], 0
jne 0x583c34
mov dword [esi], 6
cmp byte [ebx + 2], 0
je 0x583bf8
mov eax, dword [ebx + 0x2c]
cmp eax, dword [ecx + 4]
jb 0x583c57
ja 0x583bf8
mov eax, dword [ebx + 0x28]
cmp eax, dword [ecx]
jb 0x583c57
mov eax, dword [ebp - 0x20]
cmp dword [esi + 0x80], eax
jne 0x583cc4
mov edi, dword [ebp - 8]
cmp byte [esi + 0x1a], 0
jne 0x583ce6
mov edx, dword [ebp - 0xc]
jmp 0x583860
mov eax, dword [ebp - 8]
mov dword [ebp - 0x1c], eax
sub edx, edi
add eax, edi
add dword [ebx + 8], edi
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 8], eax
jmp 0x583b37
test byte [esi + 0x16], 4
je 0x583c63
mov dword [esi], 1
cmp byte [ebx + 2], 0
je 0x583c07
mov eax, dword [ebx + 0x2c]
cmp eax, dword [ecx + 4]
jb 0x583c57
ja 0x583c07
mov eax, dword [ebx + 0x28]
cmp eax, dword [ecx]
jae 0x583c07
mov byte [ebx], 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi], 8
jmp 0x583c07
cmp eax, 8
je 0x583d2d
cmp eax, 5
je 0x583cbb
cmp eax, 3
je 0x583cf9
test edx, edx
je 0x583d21
lea eax, [ecx + 1]
mov ecx, esi
mov dword [ebx + 8], eax
lea eax, [ebx + 0x38]
mov dl, byte [edi]
push eax
call fcn.00583490
add esp, 4
mov dword [esi], eax
inc edi
mov dword [ebp - 8], edi
jmp 0x583c0a
cmp byte [esi + 0x19], 0
jne 0x583cb7
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebx + 8]
mov al, 3
je 0x583cb9
mov al, 2
mov byte [ebx], al
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebx + 8]
sete al
add al, 2
mov byte [ebx], al
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xb
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 1
mov byte [ebx], 0
mov byte [esi + 0x1a], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x20]
mov ecx, edx
cmp dword [ebp - 0x10], edx
cmovbe ecx, dword [ebp - 0x10]
add dword [ebx + 8], ecx
sub edx, ecx
mov dword [esi + 0x20], edx
jne 0x583d21
mov dword [esi], 0
xor eax, eax
mov byte [ebx], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [ebx], 3
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [ebx], 1
test byte [esi + 0x16], 0xe0
je 0x583d52
mov ecx, dword [esi + 0x30]
cmp ecx, dword [esi + 0x38]
jne 0x583d46
mov ecx, dword [esi + 0x34]
cmp ecx, dword [esi + 0x3c]
je 0x583d52
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
mov ecx, 3
cmp byte [esi + 0x1b], al
pop edi
pop esi
cmovne eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret