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

Disassembly:
push edi
push esi
push ebp
push ebx
push ecx
mov eax, 0x44
call fcn.006021b0
mov ecx, dword [esp + 0x44]
mov ebx, ecx
mov esi, dword [esp + 0x60]
mov ebp, dword [esp + 0x64]
movzx eax, word [esp + 0x68]
mov word [ebx + 0x1f], ax
mov dword [ebx + 0xf], esi
xor edx, edx
mov dl, byte [ebx + 9]
and edx, 0xf7
xor eax, eax
mov al, byte [esi + 9]
and eax, 8
or edx, eax
mov byte [ebx + 9], dl
movzx edi, word [esi + 0x13]
mov word [ebx + 0x13], di
mov al, byte [esi + 0x16]
mov byte [ebx + 0x16], al
mov al, byte [esi + 0x15]
mov byte [ebx + 0x15], al
mov dword [ebx + 0x29], ebp
xor eax, eax
mov al, byte [esi + 0xa]
shl eax, 0x1a
and eax, 0xfc000000
cmp eax, 0x14000000
je 0x594de9
mov dword [ebx + 0x31], esi
mov ecx, dword [esi + 0x25]
mov dword [ebx + 0x21], ecx
test ebp, ebp
jne 0x594693
mov eax, dword [esi + 0x35]
mov dword [ebx + 0x29], eax
mov eax, dword [esi + 0x31]
mov dword [ebx + 0x35], eax
mov dword [ebx + 0x69], 1
test ebp, ebp
je 0x5946e4
mov ecx, ebx
call fcn.004f0a1c
mov esi, eax
test esi, esi
je 0x5946e1
mov ebp, dword [esi]
mov ecx, esi
call dword [ebp + 0x3c]
mov ebp, eax
mov edi, dword [ebx]
mov ecx, ebx
call dword [edi + 0x3c]
and ebp, 0xffff
and eax, 0xffff
cmp ebp, eax
jne 0x5946dc
mov eax, dword [esi + 0x69]
inc eax
mov dword [ebx + 0x69], eax
mov ecx, dword [ebx + 0x21]
jmp 0x5946e4
mov ecx, dword [ebx + 0x21]
jmp 0x5946e4
mov ecx, dword [ebx + 0x21]
xor edx, edx
mov dl, byte [ebx + 0x91]
and edx, 0xfffffffe
mov edi, dword [esp + 0x74]
and edi, 1
or edx, edi
mov byte [ebx + 0x91], dl
xor eax, eax
mov al, byte [ebx + 0x90]
and eax, 0xdf
mov esi, dword [esp + 0x78]
and esi, 1
shl esi, 5
or eax, esi
mov byte [ebx + 0x90], al
mov ebp, dword [esp + 0x6c]
mov dword [ebx + 0x2d], ebp
and edx, 0xfd
xor eax, eax
mov al, byte [ebp + 0x11b]
and eax, 0x40
shr eax, 6
and eax, 1
add eax, eax
or edx, eax
mov byte [ebx + 0x91], dl
call fcn.0051b950
test eax, eax
je 0x594773
mov ecx, dword [ebx + 0x29]
mov eax, dword [ecx]
call dword [eax + 0x7c]
push edx
push eax
mov ecx, dword [ebx + 0x21]
call fcn.0051ba9c
cmp eax, 2
jne 0x594773
mov al, byte [ebx + 0x91]
or al, 4
mov byte [ebx + 0x91], al
movzx ecx, word [esp + 0x68]
call fcn.0058f8a8
mov dword [ebx + 0x25], eax
mov ebp, dword [ebx + 0x21]
add ebp, 0x9f
push ebp
push ebx
mov ecx, eax
call fcn.0056001c
mov dword [ebx + 0x25], eax
mov ecx, eax
call fcn.00590020
test eax, eax
je 0x5947b0
mov ecx, dword [ebx + 0x25]
call fcn.00590020
push eax
mov ecx, ebx
call fcn.004f0a78
mov eax, dword [ebx + 0x21]
add eax, 0x9f
push eax
mov ecx, dword [ebx + 0x25]
call fcn.0055f7ec
mov ebp, eax
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx eax, word [esi + 0x10]
test eax, eax
je 0x594801
lea esi, [eax + eax]
add esi, esi
lea ecx, [esi + eax*8 + 0x690620]
lea esi, [esp + 0x20]
lea edi, [esp + 0x1c]
push edi
push esi
push 0x3a
call fcn.0051ab44
movzx ecx, word [esp + 0x20]
call fcn.00523d1c
mov dword [ebx + 0x4d], eax
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
mov eax, dword [esp + 0x5c]
movzx eax, byte [eax + 0x5e]
and eax, 2
test eax, 0xfffffffe
je 0x59485a
movzx eax, word [esi + 0xa]
test eax, eax
je 0x59485a
call fcn.00545934
mov dword [ebx + 0x6d], eax
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx ecx, word [esi + 0xa]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x594dde
mov ecx, esi
mov edx, ebx
call fcn.00594fac
test eax, eax
je 0x594dd3
mov esi, dword [esi + 2]
test esi, esi
jne 0x59483c
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
mov esi, dword [esi + 0x32]
mov dword [ebx + 0x88], esi
mov esi, dword [edi + 8]
movzx edi, word [esi + 8]
test edi, edi
je 0x5948e0
mov ecx, 0x74c020
push 0
push 0x14
call fcn.004e2a54
mov esi, eax
test esi, esi
je 0x594894
push 0
push 0x5a17e8
push 0x1f
mov ecx, esi
call fcn.004e76d8
jmp 0x594896
xor esi, esi
mov dword [ebx + 0x45], esi
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx ecx, word [esi + 8]
call fcn.0051c860
mov edi, eax
test edi, edi
je 0x594dc8
mov ecx, dword [ebx + 0x45]
mov dword [esp + 0x14], ecx
movzx esi, word [edi]
mov word [esp + 0x18], si
lea esi, [esp + 0x18]
push esi
call fcn.004e853c
test eax, eax
je 0x594d98
mov edi, dword [edi + 2]
test edi, edi
jne 0x5948b2
mov esi, dword [ebx + 0x25]
mov esi, dword [esi + 8]
movzx esi, word [esi + 2]
test esi, esi
je 0x594965
mov ecx, 0x74c010
push 0
push 8
call fcn.004e2a54
test eax, eax
je 0x594903
xor esi, esi
mov dword [eax], esi
mov dword [eax + 4], esi
jmp 0x594905
xor eax, eax
mov dword [ebx + 0x39], eax
mov dword [esp + 0x3c], ebx
mov esi, dword [esp + 0x70]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x44], esi
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx ecx, word [esi + 2]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x594947
lea edx, [esp + 0x3c]
mov ecx, esi
call fcn.00594f30
test eax, eax
je 0x594947
mov esi, dword [esi + 2]
test esi, esi
jne 0x594931
mov edi, dword [ebx + 0x39]
mov esi, dword [edi]
test esi, esi
jne 0x594c51
push 0x74f4a0
mov ecx, ebx
call fcn.004f0a78
jmp 0x594c51
mov ecx, 0x74c010
push 0
push 8
call fcn.004e2a54
test eax, eax
je 0x594980
xor esi, esi
mov dword [eax], esi
mov dword [eax + 4], esi
jmp 0x594982
xor eax, eax
mov dword [ebx + 0x3d], eax
mov esi, dword [ebx + 0x25]
mov edx, dword [esi + 8]
movzx edi, word [edx + 0x12]
test edi, edi
jne 0x594a09
mov edi, dword [0x756078]
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], ebx
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x38], edi
mov esi, dword [esi + 8]
movzx ecx, word [esi + 4]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x5949d1
lea edx, [esp + 0x30]
mov ecx, esi
call fcn.00594ea4
test eax, eax
je 0x5949d1
mov esi, dword [esi + 2]
test esi, esi
jne 0x5949bb
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx ecx, word [esi + 6]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x594c1e
lea edx, [esp + 0x30]
mov ecx, esi
call fcn.00594e1c
test eax, eax
je 0x594c1e
mov esi, dword [esi + 2]
test esi, esi
jne 0x5949ea
jmp 0x594c1e
xor eax, eax
mov al, byte [ebx + 9]
and eax, 8
and eax, 0xfffffff8
cmp eax, 8
je 0x594993
xor al, al
mov byte [esp + 8], al
xor eax, eax
mov al, byte [ebx + 0x91]
and eax, 2
shr eax, 1
mov dword [esp + 0x10], eax
mov esi, dword [ebx + 0x21]
movsx edi, word [esi + 0x3d]
movzx ecx, word [edx + 4]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x594d5c
mov eax, dword [ebx + 0x25]
mov eax, dword [eax + 8]
movzx eax, word [eax + 0x12]
movzx edx, word [esi]
cmp edx, eax
jne 0x594c85
mov eax, 1
test edi, edi
jle 0x594b1c
mov dword [esp + 0xc], esi
mov dword [esp + 4], edi
mov dword [esp], ebp
mov esi, eax
mov ecx, 0x74c0a0
push 1
push 0x86
call fcn.004e2a54
mov ebp, eax
test ebp, ebp
je 0x594a9d
mov ecx, ebp
call fcn.0051eb80
jmp 0x594a9f
xor ebp, ebp
push ebp
mov ecx, dword [ebx + 0x3d]
call fcn.0055f64c
movsx edx, si
mov edi, dword [esp + 0xc]
movzx eax, word [edi]
mov edi, 1
push edi
push edi
push ebx
push eax
push edx
mov edi, dword [esp + 0x70]
push edi
mov ecx, ebp
call fcn.0051da5c
mov al, byte [ebp + 0x84]
or al, 1
mov byte [ebp + 0x84], al
mov al, byte [ebp + 0x83]
and al, 0xf7
or al, 0
mov byte [ebp + 0x83], al
inc word [ebx + 0x75]
mov edi, dword [ebp + 0x21]
mov edi, dword [edi + 0x96]
cmp edi, 1
je 0x594b01
mov eax, 1
mov dword [esp + 0x10], eax
mov ecx, ebp
call fcn.00566840
inc esi
mov ebp, dword [esp + 4]
cmp esi, ebp
jle 0x594a7d
mov esi, dword [esp + 0xc]
mov ebp, dword [esp]
mov esi, dword [esi + 2]
test esi, esi
je 0x594bb6
mov dword [esp], ebp
mov ecx, 0x74c0a0
push 1
push 0x86
call fcn.004e2a54
mov ebp, eax
test ebp, ebp
je 0x594b4a
mov ecx, ebp
call fcn.0051eb80
jmp 0x594b4c
xor ebp, ebp
push ebp
mov ecx, dword [ebx + 0x3d]
call fcn.0055f64c
mov edi, 1
movzx eax, word [esi]
push 0
push edi
push ebx
push eax
push edi
mov edi, dword [esp + 0x70]
push edi
mov ecx, ebp
call fcn.0051da5c
mov al, byte [ebp + 0x84]
or al, 1
mov byte [ebp + 0x84], al
mov al, byte [ebp + 0x83]
and al, 0xf7
or al, 0
mov byte [ebp + 0x83], al
inc word [ebx + 0x75]
mov edi, dword [ebp + 0x21]
mov ebp, dword [edi + 0x96]
cmp ebp, 1
je 0x594ba8
mov eax, 1
mov dword [esp + 0x10], eax
mov esi, dword [esi + 2]
test esi, esi
jne 0x594b2a
mov ebp, dword [esp]
mov esi, dword [0x756084]
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], ebx
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x2c], esi
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
movzx ecx, word [esi + 6]
call fcn.0051c860
mov esi, eax
test esi, esi
je 0x594bf7
lea edx, [esp + 0x24]
mov ecx, esi
call fcn.00594e1c
test eax, eax
je 0x594bf7
mov esi, dword [esi + 2]
test esi, esi
jne 0x594be1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x594c1e
mov al, byte [ebx + 0x91]
or al, 2
mov byte [ebx + 0x91], al
mov esi, dword [ebx + 0x2d]
mov al, byte [esi + 0x11b]
or al, 0x20
mov byte [esi + 0x11b], al
mov edi, dword [ebx + 0x3d]
mov esi, dword [edi]
test esi, esi
jne 0x594c33
push 0x74f4a0
mov ecx, ebx
call fcn.004f0a78
mov esi, dword [esp + 0x70]
test esi, esi
je 0x594c72
mov ecx, dword [esp + 0x70]
call fcn.00595018
mov esi, dword [ebx + 0x2d]
push eax
push ebx
mov ecx, dword [esi + 0x5d]
call fcn.00595104
test ebp, ebp
je 0x594c68
mov esi, dword [ebx + 0x21]
add esi, 0x9f
push esi
push ebp
mov ecx, dword [ebx + 0x25]
call fcn.0055f810
add esp, 0x48
pop ebx
pop ebp
pop esi
pop edi
ret 0x20
mov edi, dword [ebx + 0x2d]
mov ecx, dword [edi + 0x5d]
mov esi, dword [ecx + 0xc]
inc esi
push esi
push ebx
call fcn.00595104
jmp 0x594c51
mov dword [esp + 4], edi
mov dword [esp], ebp
mov ecx, 0x74c0a0
push 1
push 0x86
call fcn.004e2a54
mov ebp, eax
test ebp, ebp
je 0x594cac
mov ecx, ebp
call fcn.0051eb80
jmp 0x594cae
xor ebp, ebp
push ebp
mov ecx, dword [ebx + 0x3d]
call fcn.0055f64c
mov edi, 1
movzx eax, word [esi]
push 0
push edi
push ebx
push eax
push edi
mov edi, dword [esp + 0x70]
push edi
mov ecx, ebp
call fcn.0051da5c
xor eax, eax
mov al, byte [ebx + 0x91]
and eax, 2
and eax, 0xfffffffe
cmp eax, 2
je 0x594d6d
mov al, byte [esp + 8]
test al, al
jne 0x594cfe
mov edi, dword [ebp + 0x21]
mov edi, dword [edi + 0x96]
cmp edi, 2
jne 0x594d2d
mov al, 1
mov byte [esp + 8], al
mov al, byte [ebp + 0x84]
or al, 1
mov byte [ebp + 0x84], al
mov al, byte [ebp + 0x83]
and al, 0xf7
mov byte [ebp + 0x83], al
inc word [ebx + 0x75]
mov eax, 1
mov dword [esp + 0x10], eax
mov esi, dword [esi + 2]
test esi, esi
je 0x594d55
mov ebp, dword [ebx + 0x25]
mov ebp, dword [ebp + 8]
movzx ebp, word [ebp + 0x12]
movzx edi, word [esi]
cmp edi, ebp
jne 0x594c8c
mov edi, dword [esp + 4]
mov ebp, dword [esp]
jmp 0x594a63
mov edi, dword [esp + 4]
mov ebp, dword [esp]
push 0x74f6dc
mov ecx, ebx
call fcn.004f0a78
jmp 0x594a63
mov al, byte [ebp + 0x84]
or al, 1
mov byte [ebp + 0x84], al
mov al, byte [ebp + 0x83]
and al, 0xf7
mov byte [ebp + 0x83], al
inc word [ebx + 0x75]
mov eax, 1
mov dword [esp + 0x10], eax
jmp 0x594d2d
mov ecx, 0x31
call fcn.004dbd80
mov esi, eax
test esi, esi
je 0x594db8
movzx eax, word [edi]
push ebx
push 1
push eax
mov ecx, esi
call fcn.005a8ca4
jmp 0x594dba
xor esi, esi
push esi
mov ecx, dword [ebx + 0x45]
call fcn.004e7700
jmp 0x5948d3
mov esi, dword [ebx + 0x25]
mov esi, dword [esi + 8]
jmp 0x5948e0
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
jmp 0x59485a
mov edi, dword [ebx + 0x25]
mov esi, dword [edi + 8]
jmp 0x59485a
movzx eax, word [esp + 0x68]
push eax
push esi
push 5
mov ecx, ebx
call fcn.004f0978
mov esi, dword [ebx + 0x29]
mov eax, dword [ebx + 0xf]
test esi, esi
jne 0x594e09
mov esi, dword [eax + 0x29]
mov dword [ebx + 0x29], esi
mov ecx, dword [eax + 0x21]
mov dword [ebx + 0x21], ecx
mov esi, dword [eax + 0x31]
mov dword [ebx + 0x31], esi
jmp 0x594693