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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov dword [esp + 0x44], ecx
mov ecx, 0x6e1ef376
cmp dword [esp + 0x80], 0x27
jne 0x578780
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
xor ecx, 0x6e1ef37e
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
test eax, eax
je 0x5787d8
xor eax, eax
test al, al
mov dword [esp + 0x38], eax
mov byte [esp + 0x34], al
mov byte [esp + 0x40], ah
jne 0x5787e4
mov eax, dword [esp + 0x84]
mov byte [esp + 0x33], 0x48
mov dword [esp + 0x48], 4
mov dword [esp + 0x4c], 2
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], 0xfffffff0
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x578823
mov eax, 5
mov dword [esp + 0x2c], esi
mov byte [esp + 0x40], dl
mov byte [esp + 0x34], cl
cmp eax, 5
jne 0x578beb
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x578beb
mov esi, 0xa
mov al, byte [esp + 0x33]
movzx eax, al
cmp eax, 0x48
je 0x578eee
mov edx, 6
cmp eax, 0x65
je 0x578cb1
jmp 0x578fa7
lea edx, [ecx + ecx - 0x6e1ef36a]
lea eax, [ecx - 0x6e1ef36a]
add dl, 0x89
mov dword [esp + 0x44], edx
movzx ecx, dl
xor ecx, eax
add cl, 0x15
mov dword [esp + 0x40], ecx
mov bl, cl
xor bl, dl
add bl, 0xb
mov bh, bl
xor bh, 0x23
mov edx, dword [0x80dc24]
test edx, edx
jne 0x5788c4
mov ecx, edx
and ecx, 1
xor ecx, edx
mov dword [esp + 0x34], edx
not ecx
test ecx, ecx
mov dword [esp + 0x3c], ecx
jne 0x578bd8
jmp 0x578930
mov dword [esp + 0x38], eax
mov byte [esp + 0x34], al
mov byte [esp + 0x40], dl
mov byte [esp + 0x33], al
cmp ecx, 3
jne 0x578804
mov edx, ecx
not edx
and edx, 1
add edx, ecx
mov dword [esp + 0x3c], 0x700002bb
jne 0x578faf
mov edx, 0x16
mov ecx, 9
mov dword [esp + 0x3c], 0x7000002b
test esi, esi
jne 0x578d2b
jmp 0x578e7d
mov ecx, 0x12
lea esi, [esp + 0x48]
jmp 0x578883
xor edi, edi
mov cl, 0x33
movzx ecx, cl
cmp ecx, 0x33
je 0x578c4a
mov edx, 0x16
cmp ecx, 0x4c
jne 0x57886f
jmp 0x578ca5
mov ecx, 0xb
mov edx, edi
and edx, 1
xor edx, edi
cmp edx, 0xffffffff
setne dl
movzx edx, dl
add edi, edx
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov edx, edi
imul edx, edx
and edx, 3
cmp edx, 2
sbb edx, edx
and edx, 1
cmp edi, edx
jb 0x578850
cmp ecx, 0xb
je 0x578c39
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x578c39
lea eax, [esp + 0x5c]
mov dword [esp + 8], eax
lea eax, [esp + 0x60]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00593400
test eax, eax
je 0x578830
mov dword [esp + 0x3c], eax
jmp 0x578faf
mov dword [esp + 0x34], edx
mov dword [esp + 0x3c], ecx
jmp 0x578930
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
je 0x578bd8
xor edi, edi
mov dword [esp + 0x44], eax
jmp 0x578912
mov al, 0x14
mov dword [esp + 0x44], eax
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
add edi, eax
mov dword [esp], esi
call fcn.004936c0
test edi, edi
jne 0x578bc0
mov eax, edi
imul eax, eax
and eax, 3
cmp eax, 1
jbe 0x5788f0
jmp 0x578bc0
mov dword [esp + 0x38], ebp
xor ebp, ebp
cmp eax, 0xc
jne 0x578979
mov ecx, eax
not ecx
and ecx, 1
add ecx, eax
je 0x578979
mov edx, dword [esp + 0x34]
jmp 0x5789a0
mov al, 0x48
mov dword [esp + 0x40], eax
mov eax, ebp
not eax
and eax, 1
add eax, ebp
setne al
movzx eax, al
add ebp, eax
mov dword [esp], edi
call fcn.005926b0
mov eax, dword [esp + 0x3c]
mov dword [eax], 0
mov eax, ebp
and eax, 1
xor eax, ebp
cmp eax, 0xffffffff
setne al
movzx eax, al
cmp ebp, eax
jb 0x578950
mov ebp, dword [esp + 0x38]
jmp 0x578b50
mov eax, 9
mov ebp, dword [edx + 4]
mov esi, dword [edx + 0xc]
test esi, esi
jne 0x5789c0
mov ecx, esi
imul ecx, ecx
and ecx, 3
cmp ecx, 1
jbe 0x578bc0
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebp
nop dword [eax + eax]
cmp eax, 9
je 0x5789df
xor eax, eax
test al, al
je 0x578ac0
mov ebp, dword [esi + 0x10]
test ebp, ebp
jne 0x5789f8
mov eax, ebp
or eax, 2
mov ecx, ebp
xor ecx, 2
add ecx, eax
jne 0x578a85
mov eax, 0x12
movzx ecx, bh
cmp ecx, 1
je 0x578a30
mov bh, 1
mov dword [esp], ebp
mov dword [esp + 4], 0x4ddaa0
call fcn.007c56d0
mov dword [esp], ebp
call fcn.004936c0
mov dword [esi + 0x10], 0
jmp 0x578a85
cmp eax, 0xa
je 0x578b10
imul eax, eax
and eax, 3
cmp eax, 2
je 0x578b20
xor edi, edi
jmp 0x578a72
mov bh, 0x58
inc edi
mov dword [esp], ebp
mov dword [esp + 4], 0x4ddaa0
call fcn.007c56d0
mov dword [esp], ebp
call fcn.004936c0
mov dword [esi + 0x10], 0
mov eax, edi
not eax
and eax, 1
add eax, edi
setne al
movzx eax, al
cmp edi, eax
jb 0x578a50
mov eax, 0x12
movzx ecx, bl
cmp ecx, 0x1d
jne 0x5789d0
mov eax, 0xa
mov bl, 0x22
mov edi, dword [esi + 0x14]
test edi, edi
je 0x578a30
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
je 0x578a30
jmp 0x578acf
mov bl, 0x1d
mov edi, dword [esi + 0x14]
test edi, edi
je 0x578b30
xor eax, eax
test al, al
jne 0x578b40
lea eax, [esi + 0x14]
mov dword [esp + 0x3c], eax
mov ebp, dword [esp + 0x38]
mov eax, 0x10
mov ecx, dword [esp + 0x40]
movzx ecx, cl
cmp ecx, 0x1c
jne 0x578930
mov al, 0x1c
mov dword [esp + 0x40], eax
mov dword [esp], edi
call fcn.005926b0
mov eax, dword [esp + 0x3c]
mov dword [eax], 0
jmp 0x578b50
mov ebp, dword [esp + 0x38]
jmp 0x578b50
mov ebp, dword [esp + 0x38]
jmp 0x578b50
mov ebp, dword [esp + 0x38]
jmp 0x578b50
mov ebp, dword [esp + 0x38]
nop word cs:[eax + eax]
mov edi, 0xc
mov eax, dword [esp + 0x44]
movzx ecx, al
cmp ecx, 0xb
je 0x578b7e
mov eax, 0x10
cmp ecx, 0x14
je 0x578bcf
mov edi, 4
mov al, 0x6f
mov dword [esp + 0x44], eax
mov dword [esp], esi
call fcn.004936c0
cmp edi, 4
je 0x578bc0
xor edi, edi
jmp 0x578ba9
mov cl, 0xb
mov dword [esp + 0x44], ecx
cmp eax, 0xffffffff
setne al
movzx eax, al
add edi, eax
mov dword [esp], esi
call fcn.004936c0
mov eax, edi
and eax, 1
xor eax, edi
cmp eax, 0xffffffff
setne cl
movzx ecx, cl
cmp edi, ecx
jb 0x578b90
nop dword [eax]
mov eax, 0x16
test ebp, ebp
mov edx, ebp
jne 0x5789a0
cmp eax, 0x10
je 0x5788d0
mov dword [esp], 0x80dc2c
call fcn.00419df0
xor eax, eax
jmp 0x578ceb
mov byte [esp + 0x34], 0xe
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax + 8]
mov dword [esp + 0x5c], ebp
mov dword [esp], ebp
mov dword [esp + 4], 1
call fcn.00493840
mov ecx, eax
mov dword [esp + 0x60], ecx
test ecx, ecx
jne 0x578ce2
mov eax, ecx
not eax
and eax, 1
add eax, ecx
mov dword [esp + 0x3c], 0x70000003
mov al, byte [esp + 0x40]
jne 0x578faf
jmp 0x578ecc
mov dword [esp + 0x2c], eax
mov byte [esp + 0x34], al
mov dword [esp + 0x3c], eax
jmp 0x578f0e
mov dword [esp + 0x3c], eax
jmp 0x578c6f
mov ecx, 0x12
mov edx, edi
and edx, 1
xor edx, edi
cmp edx, 0xffffffff
setne dl
movzx edx, dl
add edi, edx
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov edx, edi
imul edx, edx
and edx, 3
test edi, edi
je 0x578c50
cmp edx, 3
je 0x578c50
mov dword [esp + 0x2c], esi
mov byte [esp + 0x34], al
cmp ecx, 0x10
je 0x578faf
imul ecx, ecx
and ecx, 3
cmp ecx, 3
jne 0x578f0e
jmp 0x578faf
mov dword [esp + 0x2c], eax
mov byte [esp + 0x34], al
mov byte [esp + 0x40], al
cmp edx, 6
je 0x578cd5
mov eax, edx
and eax, 1
inc eax
xor eax, edx
je 0x578cd5
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x3c], eax
mov dl, byte [esp + 0x40]
jmp 0x578f0e
mov dword [esp + 0x3c], 0x7000002b
jmp 0x578faf
mov al, byte [esp + 0x40]
jmp 0x578ecc
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 3
mov byte [esp + 0x40], 0x3e
mov edi, dword [esi]
test edi, edi
je 0x578d1d
mov edx, edi
and edx, 1
inc edx
xor edx, edi
je 0x578d1d
mov esi, 0xb
mov eax, 0x700002bb
mov ecx, dword [esp + 0x38]
jmp 0x578d41
mov al, byte [esp + 0x33]
mov byte [esp + 0x40], 0x3e
jmp 0x5787e4
cmp edx, 0xe
jne 0x578cf3
imul edx, edx
and edx, 3
cmp edx, 1
jbe 0x578e91
jmp 0x578cf3
cmp esi, 0xb
je 0x578d5d
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], eax
xor ecx, ecx
test cl, cl
je 0x578faf
jmp 0x578e91
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], eax
mov ecx, edi
nop word [eax + eax]
mov eax, dword [ecx + 0xc]
mov edx, dword [eax]
cmp edx, 0xfffffff0
je 0x578fce
mov esi, 0x13
mov edi, edx
and edi, 1
inc edi
xor edi, edx
je 0x578fce
mov edi, ecx
nop word cs:[eax + eax]
cmp esi, 5
je 0x578faf
movzx esi, byte [esp + 0x40]
cmp esi, 0x13
je 0x578de9
mov edx, 0xf
cmp esi, 0x3e
je 0x578e20
mov esi, 5
mov byte [esp + 0x40], 0xc
mov edi, dword [ecx + 4]
test edi, edi
mov dword [esp + 0x3c], 0x700002bb
je 0x578da0
mov edx, 0xe
mov eax, edi
and edi, 1
inc edi
xor edi, eax
mov edi, eax
je 0x578da0
jmp 0x578e17
mov byte [esp + 0x40], 0x3e
mov ecx, dword [ecx + 4]
mov dword [esp + 0x3c], 0x700002bb
test ecx, ecx
jne 0x578d70
mov edx, ecx
and edx, 1
xor edx, ecx
not edx
test edx, edx
je 0x578d70
jmp 0x578faf
mov esi, dword [esp + 0x7c]
jmp 0x578d2b
mov eax, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
cmp edx, 7
jne 0x578e58
mov eax, edx
not eax
and eax, 1
add eax, edx
je 0x578e58
mov eax, 9
movzx ecx, byte [esp + 0x34]
cmp ecx, 0x55
jne 0x578e98
mov cl, byte [esp + 0x34]
mov dl, byte [esp + 0x40]
mov esi, dword [esp + 0x2c]
jmp 0x578734
mov edi, dword [ecx + 4]
test edi, edi
mov eax, dword [esp + 0x2c]
je 0x578fc4
mov dword [esp + 0x3c], 0x700002bb
mov ecx, 0x17
mov byte [esp + 0x40], 0x13
mov dword [esp + 0x38], eax
cmp ecx, 9
jne 0x578e91
mov edx, 3
sub edx, ecx
xor edx, ecx
jne 0x578faf
mov ecx, edi
jmp 0x578d70
mov byte [esp + 0x34], 0x55
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 8]
mov dword [esp + 0x5c], esi
mov dword [esp], esi
mov dword [esp + 4], 1
call fcn.00493840
mov ecx, eax
mov dword [esp + 0x60], ecx
test ecx, ecx
je 0x578ffc
mov al, byte [esp + 0x40]
mov ebp, esi
mov byte [esp + 0x40], al
mov esi, 2
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
mov dword [esp + 8], ebp
mov dword [esp + 4], eax
mov dword [esp], ecx
mov ebx, ecx
call fcn.007c51d0
mov dl, byte [esp + 0x40]
cmp esi, 2
jne 0x578fa7
imul esi, esi
and esi, 3
cmp esi, 2
mov dword [esp + 0x3c], eax
jae 0x578fa7
mov dword [esp + 0x38], edi
mov byte [esp + 0x40], dl
xor edi, edi
mov eax, dword [esp + 0x3c]
jmp 0x578f86
mov esi, 0x14
mov eax, 3
sub eax, edi
xor eax, edi
setne al
movzx eax, al
add edi, eax
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], 0xfffffff0
mov dword [esp + 0x18], 0xff
mov dword [esp + 0x14], 0x12
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.00551d40
mov ecx, edi
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp edi, ecx
jb 0x578f20
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x38]
jmp 0x578d41
mov dword [esp + 0x3c], 0x7000002b
mov eax, dword [esp + 0x60]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x3c]
jmp 0x578ceb
mov dword [esp + 0x3c], 0x700002bb
jmp 0x578faf
mov edx, 7
mov byte [esp + 0x34], 0xe
test eax, eax
mov esi, eax
jne 0x579018
mov eax, 3
sub eax, esi
xor eax, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x3c], 0x700002bb
mov edi, ecx
jne 0x578faf
jmp 0x578e28
mov ecx, 0x10
mov dword [esp + 0x3c], 0x70000003
mov al, 0x55
mov dl, byte [esp + 0x40]
mov esi, dword [esp + 0x2c]
jmp 0x578c80
mov dword [esp + 0x2c], esi
mov edi, ecx
jmp 0x578e28