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

Disassembly:
push 0xffffffffffffffff
push 0x78c304
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x856918]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00513890
cmp byte [esi + 0xa8], 0x3f
jne 0x517639
cmp dword [esi + 0xac], 1
jne 0x517639
mov ecx, esi
call fcn.00513890
mov cl, byte [esi + 0xa8]
movsx eax, cl
add eax, 0xffffffdf
xor ebp, ebp
xor edi, edi
mov byte [esp + 0x17], 0x3e
cmp eax, 0x31
ja case.0x516d48.41
movzx eax, byte [eax + 0x51776c]
mov ebx, dword [esp + 0x50]
jmp dword [eax*4 + 0x517748]
mov edi, 1
mov ecx, esi
call fcn.00513890
push 0xc
call fcn.005645f4
mov ebx, eax
add esp, 4
mov dword [esp + 0x28], ebx
mov dword [esp + 0x48], ebp
cmp ebx, ebp
je 0x516d98
mov edx, dword [esp + 0x50]
mov eax, dword [edx]
xor ecx, ecx
cmp edi, ebp
sete cl
and eax, 0xffffffef
push ecx
push eax
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, ebx
call fcn.0050f650
mov edi, eax
jmp 0x516d9a
xor edi, edi
push edi
lea ecx, [esi + 0x14]
mov dword [esp + 0x4c], 0xffffffff
call fcn.0050eba0
mov ecx, esi
call fcn.00513890
mov eax, edi
jmp 0x517732
mov al, byte [esi + 0xb8]
cmp al, 0x21
je 0x516dc9
cmp al, 0x3d
je 0x516dce
jmp case.0x516d48.39
mov edi, 1
mov ecx, esi
call fcn.00513890
mov ecx, esi
call fcn.00513890
push 0xc
call fcn.005645f4
mov ebp, eax
add esp, 4
mov dword [esp + 0x28], ebp
mov dword [esp + 0x48], 1
test ebp, ebp
je 0x516e17
mov edx, dword [ebx]
xor ecx, ecx
test edi, edi
sete cl
or edx, 0x10
push ecx
push edx
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, ebp
call fcn.0050f650
jmp 0x516e19
xor eax, eax
push eax
mov ecx, esi
mov dword [esp + 0x4c], 0xffffffff
call fcn.0050ebf0
mov edi, eax
test edi, edi
jne 0x51762b
xor ebp, ebp
cmp byte [esi + 0xa8], 0x50
jne case.0x516d48.34
mov ecx, esi
call fcn.00513890
mov al, byte [esi + 0xa8]
cmp al, 0x3c
jne 0x516e56
mov byte [esp + 0x17], 0x3e
jmp 0x516e5e
cmp al, 0x27
jne 0x516e5e
mov byte [esp + 0x17], al
mov ecx, esi
call fcn.00513890
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], eax
inc eax
push 0x1c
mov dword [esi + 0xc], eax
call fcn.005645f4
add esp, 4
cmp eax, ebp
je 0x516e8f
mov ecx, dword [ebx]
and ecx, 0x10
push ecx
mov ecx, eax
call fcn.00512200
mov ebx, eax
jmp 0x516e91
xor ebx, ebx
lea ebp, [esi + 0x14]
push ebx
mov ecx, ebp
call fcn.0050eba0
push 0x20
call fcn.005645f4
add esp, 4
test eax, eax
je 0x516ec4
mov edx, dword [esp + 0x50]
mov ecx, dword [edx]
shr ecx, 4
and ecx, 1
push ecx
push 0xffffffffffffffff
mov ecx, eax
call fcn.0050f750
mov edi, eax
jmp 0x516ec6
xor edi, edi
push edi
mov ecx, ebp
call fcn.0050eba0
push 0x20
call fcn.005645f4
add esp, 4
test eax, eax
je 0x516efa
mov edx, dword [esp + 0x50]
mov ecx, dword [edx]
shr ecx, 4
not ecx
and ecx, 1
push ecx
push 0xffffffffffffffff
mov ecx, eax
call fcn.0050f750
mov dword [esp + 0x1c], eax
jmp 0x516f02
mov dword [esp + 0x1c], 0
mov edx, dword [esp + 0x1c]
push edx
mov ecx, ebp
call fcn.0050eba0
lea ecx, [esp + 0x2c]
lea ebp, [edi + 0xc]
call fcn.0050eff0
cmp byte [esi + 0xa8], 0
mov dword [esp + 0x48], 2
je 0x516f7c
jmp 0x516f30
mov al, byte [esi + 0xa8]
cmp al, byte [esp + 0x17]
je 0x516f7c
push 1
mov byte [esp + 0x1c], al
push 1
lea eax, [esp + 0x20]
push eax
mov ecx, ebp
call fcn.0050f170
mov cl, byte [esi + 0xa8]
push 1
push 1
lea edx, [esp + 0x20]
mov byte [esp + 0x20], cl
push edx
lea ecx, [esp + 0x38]
call fcn.0050f170
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x516f30
mov ecx, esi
call fcn.00513890
lea ecx, [esp + 0x2c]
call fcn.0050f030
mov dword [esp + 0x20], eax
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x24]
push ecx
call fcn.0050ef40
add esp, 8
test eax, eax
je 0x516fca
mov edx, dword [esp + 0x20]
xor eax, eax
cmp byte [edx], al
sete al
test eax, eax
je 0x516fca
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov dword [edi + 4], eax
mov dword [ecx + 4], eax
mov ecx, ebp
call fcn.00512f60
lea ebp, [ebx + 4]
push edi
mov ecx, ebp
call fcn.0050eba0
mov edx, dword [esp + 0x50]
mov eax, dword [edx]
push eax
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, ebp
call fcn.0050eba0
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, ebp
call fcn.0050eba0
mov edi, dword [esp + 0x28]
push 0
push edi
lea ecx, [esi + 0x50]
call fcn.0050f7d0
mov edx, dword [esi + 0x5c]
mov dword [edx + edi*4], ebx
mov edi, ebx
jmp 0x517516
mov ecx, esi
call fcn.00513890
push 8
call fcn.005645f4
mov ebx, eax
add esp, 4
mov dword [esp + 0x28], ebx
mov dword [esp + 0x48], 3
cmp ebx, ebp
je 0x51704e
mov eax, dword [esp + 0x50]
mov ecx, dword [eax]
push ecx
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, ebx
call fcn.0050f860
jmp 0x517050
xor eax, eax
push eax
mov ecx, esi
mov dword [esp + 0x4c], 0xffffffff
call fcn.0050ebf0
mov ecx, esi
mov edi, eax
call fcn.00513890
mov eax, edi
jmp 0x517732
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
je 0x5170a4
movsx edx, byte [esi + 0xa8]
push edx
call fcn.005692e4
add esp, 4
test eax, eax
je 0x5170a4
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x517080
mov al, byte [esi + 0xa8]
cmp al, 0x3c
je 0x517160
cmp al, 0x27
je 0x51715e
lea ecx, [esp + 0x2c]
call fcn.0050eff0
cmp byte [esi + 0xa8], 0
mov dword [esp + 0x48], 5
je 0x517104
mov al, byte [esi + 0xa8]
cmp al, 0x29
je 0x517104
push 1
mov byte [esp + 0x54], al
push 1
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x38]
call fcn.0050f170
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x5170d4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x50], ebp
call fcn.0050f030
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x2c]
push edx
mov dword [esp + 0x30], eax
call fcn.0050ef40
push 0x20
call fcn.005645f4
add esp, 0xc
cmp eax, ebp
je 0x51714d
mov ecx, dword [esp + 0x50]
push ecx
mov ecx, eax
call fcn.0050f910
push eax
mov ecx, esi
call fcn.0050ebf0
mov edi, eax
jmp 0x51750d
xor eax, eax
push eax
mov ecx, esi
call fcn.0050ebf0
mov edi, eax
jmp 0x51750d
cmp al, 0x3c
setne bl
dec bl
and bl, 0x17
push 0x20
add bl, 0x27
call fcn.005645f4
add esp, 4
cmp eax, ebp
je 0x517184
push 0xfffffffffffffffd
mov ecx, eax
call fcn.0050f910
jmp 0x517186
xor eax, eax
push eax
mov ecx, esi
call fcn.0050ebf0
mov ecx, esi
mov edi, eax
call fcn.00513890
lea ecx, [esp + 0x2c]
lea ebp, [edi + 0xc]
call fcn.0050eff0
cmp byte [esi + 0xa8], 0
mov dword [esp + 0x48], 4
je 0x5171fe
mov al, byte [esi + 0xa8]
cmp al, bl
je 0x5171fe
push 1
push 1
lea edx, [esp + 0x58]
push edx
mov ecx, ebp
mov byte [esp + 0x5c], al
call fcn.0050f170
mov al, byte [esi + 0xa8]
push 1
push 1
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x38]
mov byte [esp + 0x5c], al
call fcn.0050f170
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x5171b4
mov ecx, esi
call fcn.00513890
lea ecx, [esp + 0x2c]
call fcn.0050f030
lea edx, [esp + 0x28]
mov dword [esp + 0x50], eax
push edx
lea eax, [esp + 0x54]
push eax
call fcn.0050ef40
add esp, 8
test eax, eax
je 0x51750d
mov ecx, dword [esp + 0x50]
xor eax, eax
cmp byte [ecx], al
sete al
test eax, eax
je 0x51750d
mov edx, dword [esp + 0x28]
mov ecx, ebp
mov dword [edi + 8], edx
call fcn.00512f60
jmp 0x51750d
push 0x28
call fcn.005645f4
add esp, 4
cmp eax, ebp
je 0x517269
mov ecx, eax
call fcn.0050f9d0
jmp 0x51726b
xor eax, eax
push eax
mov ecx, esi
call fcn.0050ebf0
mov ebx, eax
lea eax, [esp + 0x2c]
push eax
lea ecx, [esi + 0xb8]
mov byte [esp + 0x30], 0x3f
mov dword [esp + 0x34], 1
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
call fcn.0050eb50
mov ecx, esi
test eax, eax
je 0x5172b2
mov ebp, dword [esp + 0x50]
push ebp
call fcn.00516cd0
mov dword [ebx + 0x1c], eax
jmp 0x5173dc
call fcn.00513890
mov ebp, dword [esi + 0xb0]
push 0xc
call fcn.005645f4
mov edi, eax
add esp, 4
mov dword [esp + 0x28], edi
mov dword [esp + 0x48], 6
test edi, edi
je 0x5172f3
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx]
push 1
push edx
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, edi
call fcn.0050f650
jmp 0x5172f5
xor eax, eax
push eax
mov ecx, esi
call fcn.0050ebf0
mov dword [ebx + 0x1c], eax
mov eax, dword [esi + 0xb0]
push 1
sub eax, ebp
lea edi, [esi + 0x8c]
push eax
mov ecx, edi
call fcn.0050ed80
add eax, ebp
push eax
lea ecx, [ebx + 8]
call fcn.0050f170
lea ecx, [esp + 0x2c]
call fcn.0050eff0
cmp ebp, dword [esi + 0xb0]
mov dword [esp + 0x48], 7
jge 0x51736e
lea esp, [esp]
cmp ebp, dword [edi + 8]
jl 0x517349
xor al, al
jmp 0x51734f
mov ecx, dword [edi + 4]
mov al, byte [ecx + ebp]
push 1
push 1
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x38]
mov byte [esp + 0x24], al
call fcn.0050f170
inc ebp
cmp ebp, dword [esi + 0xb0]
jl 0x517340
lea ecx, [esp + 0x2c]
call fcn.0050f030
mov dword [esp + 0x20], eax
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x24]
push ecx
call fcn.0050ef40
add esp, 8
test eax, eax
je 0x5173b0
mov edx, dword [esp + 0x20]
xor eax, eax
cmp byte [edx], al
sete al
test eax, eax
je 0x5173b0
mov eax, dword [esp + 0x28]
mov dword [ebx + 4], eax
mov dword [ebx + 0x1c], 0
jmp 0x5173c0
push ebx
lea ecx, [esi + 0x78]
mov dword [ebx + 4], 0xffffffff
call fcn.0050f9f0
mov ecx, esi
call fcn.00513890
lea ecx, [esp + 0x2c]
mov dword [esp + 0x48], 0xffffffff
call fcn.0050e420
mov ebp, dword [esp + 0x50]
mov ecx, dword [ebp]
lea edx, [esp + 0x50]
mov dword [esp + 0x50], ecx
push edx
mov ecx, esi
call fcn.00516800
mov dword [ebx + 0x20], eax
cmp byte [esi + 0xa8], 0x7c
jne 0x517420
mov ecx, esi
call fcn.00513890
mov eax, dword [ebp]
push eax
mov ecx, esi
call fcn.00516b70
mov ecx, esi
mov dword [ebx + 0x24], eax
mov edi, ebx
call fcn.00513890
mov eax, edi
jmp 0x517732
mov ecx, esi
mov dword [ebx + 0x24], 0
mov edi, ebx
call fcn.00513890
mov eax, edi
jmp 0x517732
test cl, cl
je 0x517464
jmp 0x517440
movsx ecx, byte [esi + 0xa8]
push ecx
call fcn.005692e4
add esp, 4
test eax, eax
je 0x517464
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x517440
mov al, byte [esi + 0xa8]
cmp al, 0x30
jl 0x517535
cmp al, 0x39
jg 0x517535
lea ecx, [esp + 0x2c]
call fcn.0050eff0
cmp byte [esi + 0xa8], 0
mov dword [esp + 0x48], 8
je 0x5174c4
mov al, byte [esi + 0xa8]
cmp al, 0x29
je 0x5174c4
push 1
push 1
lea edx, [esp + 0x58]
push edx
lea ecx, [esp + 0x38]
mov byte [esp + 0x5c], al
call fcn.0050f170
mov ecx, esi
call fcn.00513890
cmp byte [esi + 0xa8], 0
jne 0x517494
lea ecx, [esp + 0x2c]
mov dword [esp + 0x50], ebp
call fcn.0050f030
mov dword [esp + 0x28], eax
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.0050ef40
push 0x20
call fcn.005645f4
add esp, 0xc
cmp eax, ebp
je 0x517502
mov edx, dword [esp + 0x50]
push edx
mov ecx, eax
call fcn.0050f910
mov edi, eax
jmp 0x517504
xor edi, edi
push edi
lea ecx, [esi + 0x14]
call fcn.0050eba0
push edi
lea ecx, [esi + 0x3c]
call fcn.0050f980
lea ecx, [esp + 0x2c]
mov dword [esp + 0x48], 0xffffffff
call fcn.0050e420
mov ecx, esi
call fcn.00513890
mov eax, edi
jmp 0x517732
mov eax, dword [esp + 0x50]
mov ebp, dword [eax]
mov ebx, 1
cmp byte [esi + 0xa8], 0
jne 0x517555
cmp dword [esi + 0xac], ebx
je 0x5175e1
mov cl, byte [esi + 0xa8]
cmp cl, 0x3a
je 0x5175e1
cmp cl, 0x29
je 0x5175e1
cmp cl, 0x28
jne 0x51757e
cmp dword [esi + 0xac], ebx
je 0x5175e1
movsx ecx, cl
add ecx, 0xffffffd3
xor eax, eax
cmp ecx, 0x46
ja case.0x517592.46
movzx ecx, byte [ecx + 0x5177b8]
jmp dword [ecx*4 + 0x5177a0]
mov eax, 8
test edi, edi
je 0x5175d3
not eax
mov ecx, esi
and ebp, eax
call fcn.00513890
jmp 0x517540
mov eax, ebx
jmp case.0x517592.46
mov eax, 2
jmp case.0x517592.46
mov eax, 4
jmp case.0x517592.46
not eax
mov ecx, esi
mov edi, ebx
and ebp, eax
call fcn.00513890
jmp 0x517540
mov ecx, esi
or ebp, eax
call fcn.00513890
jmp 0x517540
mov al, byte [esi + 0xa8]
cmp al, 0x3a
je 0x51761a
cmp al, 0x28
jne 0x5175f7
cmp dword [esi + 0xac], ebx
je 0x517616
mov edx, dword [esp + 0x50]
push 0
mov ecx, esi
mov dword [edx], ebp
call fcn.00513a40
mov ecx, esi
mov edi, eax
call fcn.00513890
mov eax, edi
jmp 0x517732
cmp al, 0x3a
jne 0x517621
mov ecx, esi
call fcn.00513890
push ebp
mov ecx, esi
call fcn.00516b70
mov edi, eax
mov ecx, esi
call fcn.00513890
mov eax, edi
jmp 0x517732
push 0x1c
call fcn.005645f4
mov edi, dword [esp + 0x54]
add esp, 4
test eax, eax
je 0x51765c
mov ecx, dword [edi]
and ecx, 0x10
push ecx
mov ecx, eax
call fcn.00512200
mov ebp, eax
jmp 0x51765e
xor ebp, ebp
lea ecx, [esi + 0x14]
push ebp
call fcn.0050eba0
inc dword [esi + 8]
mov ebx, dword [esi + 8]
push 0x20
call fcn.005645f4
add esp, 4
test eax, eax
je 0x517692
mov edx, dword [edi]
shr edx, 4
and edx, 1
push edx
push ebx
mov ecx, eax
call fcn.0050f750
mov dword [esp + 0x1c], eax
jmp 0x51769a
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
push eax
lea ecx, [esi + 0x14]
call fcn.0050eba0
mov ecx, dword [esp + 0x1c]
lea edi, [ebp + 4]
push ecx
mov ecx, edi
call fcn.0050eba0
mov edx, dword [esp + 0x50]
mov eax, dword [edx]
push eax
mov ecx, esi
call fcn.00516b70
push eax
mov ecx, edi
call fcn.0050eba0
push 0x20
call fcn.005645f4
add esp, 4
test eax, eax
je 0x5176f7
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx]
shr edx, 4
not edx
and edx, 1
push edx
push ebx
mov ecx, eax
call fcn.0050f750
mov dword [esp + 0x50], eax
jmp 0x5176ff
mov dword [esp + 0x50], 0
mov eax, dword [esp + 0x50]
push eax
lea ecx, [esi + 0x14]
call fcn.0050eba0
mov ecx, dword [esp + 0x50]
push ecx
mov ecx, edi
call fcn.0050eba0
push 0
push ebx
lea ecx, [esi + 0x28]
call fcn.0050e890
mov edx, dword [esi + 0x34]
mov ecx, esi
mov dword [edx + ebx*4], ebp
call fcn.00513890
mov eax, ebp
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret 4