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

Disassembly:
push 0xffffffffffffffff
push 0x5a40ae
mov eax, dword fs:[0]
push eax
sub esp, 0xd4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x61e69c]
xor eax, esp
push eax
lea eax, [esp + 0xe8]
mov dword fs:[0], eax
lea eax, [esp + 0x84]
xor edi, edi
push eax
mov dword [esp + 0x28], edi
call fcn.00445380
lea ecx, [esp + 0x34]
push ecx
mov dword [esp + 0xf4], edi
call fcn.00445380
lea edx, [esp + 0x54]
push edx
mov byte [esp + 0xf4], 1
call fcn.00445380
mov byte [esp + 0xf0], 2
mov eax, dword [0x6285c4]
mov edx, dword [eax + 0xc]
mov ecx, 0x6285c4
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], edi
call edx
add eax, 0x10
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x100]
push eax
push edi
push 0x2710
push edi
lea ecx, [esp + 0x84]
push ecx
sub esp, 0x1c
mov byte [esp + 0x120], 3
mov ecx, esp
mov dword [esp + 0x58], esp
push 0xc
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], edi
push str.host:devices
xor esi, esi
mov byte [ecx + 4], 0
call fcn.00409ea0
mov edx, dword [esp + 0x128]
mov ecx, esi
call fcn.004800a0
mov ebx, dword [esp + 0x7c]
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add ebx, 0xfffffff0
mov dword [esp + 0x28], ebx
call eax
cmp dword [ebx + 0xc], edi
lea edx, [ebx + 0xc]
jl 0x487b99
cmp eax, dword [ebx]
jne 0x487b99
mov esi, ebx
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x487bd5
mov ecx, dword [ebx + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov esi, eax
cmp esi, edi
jne 0x487bb2
call fcn.00407390
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov eax, dword [ebx + 4]
lea ecx, [eax + eax + 2]
push ecx
add ebx, 0x10
lea edx, [eax + eax + 2]
push ebx
push edx
lea eax, [esi + 0x10]
push eax
call fcn.004f745a
add esp, 0x10
lea ebx, [esi + 0x10]
mov dword [esp + 0x20], ebx
mov byte [esp + 0xf0], 4
mov esi, dword [ebx - 0xc]
mov eax, dword [ebx - 8]
mov ecx, 1
sub ecx, dword [ebx - 4]
sub eax, esi
or eax, ecx
jge 0x487c07
mov ecx, esi
lea eax, [esp + 0x20]
call fcn.004073a0
mov ebx, dword [esp + 0x20]
lea ecx, [esi + 1]
push ecx
push ebx
call fcn.004f8493
add esp, 8
cmp esi, edi
jl 0x488481
cmp esi, dword [ebx - 8]
jg 0x488481
lea eax, [esp + 0xa4]
xor edx, edx
mov dword [ebx - 0xc], esi
push eax
mov word [ebx + esi*2], dx
call fcn.0040d5c0
lea ecx, [esp + 0x7c]
push ecx
lea ecx, [esp + 0xa8]
mov byte [esp + 0xf4], 5
call fcn.00490570
mov edx, dword [esp + 0xbc]
mov eax, dword [edx]
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ebx
jmp 0x487c74
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0xbc]
test ebx, ebx
je 0x487c8c
cmp ebx, dword [esp + 0xa4]
je 0x487c91
call fcn.004f825e
cmp ebp, esi
je 0x487e9e
test ebx, ebx
jne 0x487cdb
call fcn.004f825e
xor eax, eax
cmp ebp, dword [eax + 0x18]
jne 0x487cae
call fcn.004f825e
mov esi, dword [ebp + 0x10]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add ebp, 0xc
sub esi, 0x10
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x487cdf
cmp eax, dword [esi]
jne 0x487cdf
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x487d1a
mov eax, dword [ebx]
jmp 0x487ca4
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x487bad
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.004f745a
add esp, 0x10
add edi, 0x10
mov dword [esp + 0x2c], edi
mov byte [esp + 0xf0], 6
mov ecx, 0x5f4d08
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x487d56
test dx, dx
je 0x487d52
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x487d56
add eax, 4
add ecx, 4
test dx, dx
jne 0x487d30
xor eax, eax
jmp 0x487d5b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x487d94
test ebx, ebx
jne 0x487d90
call fcn.004f825e
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp ecx, dword [eax + 0x18]
jne 0x487d7d
call fcn.004f825e
lea edx, [esp + 0x84]
lea ebx, [esp + 0xc4]
jmp 0x487e5d
mov eax, dword [ebx]
jmp 0x487d6f
mov ecx, 0x5f4d18
mov eax, edi
jmp 0x487da0
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x487dc6
test dx, dx
je 0x487dc2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x487dc6
add eax, 4
add ecx, 4
test dx, dx
jne 0x487da0
xor eax, eax
jmp 0x487dcb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x487dfe
test ebx, ebx
jne 0x487dfa
call fcn.004f825e
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp ecx, dword [eax + 0x18]
jne 0x487ded
call fcn.004f825e
lea edx, [esp + 0x34]
lea ebx, [esp + 0xdc]
jmp 0x487e5d
mov eax, dword [ebx]
jmp 0x487ddf
mov ecx, 0x5f4d28
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x487e2b
test dx, dx
je 0x487e27
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x487e2b
add eax, 4
add ecx, 4
test dx, dx
jne 0x487e05
xor eax, eax
jmp 0x487e30
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x487e64
test ebx, ebx
jne 0x487e9a
call fcn.004f825e
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp ecx, dword [eax + 0x18]
jne 0x487e52
call fcn.004f825e
lea edx, [esp + 0x54]
lea ebx, [esp + 0xd0]
push ebp
push edx
call fcn.0042ce60
lea esi, [esp + 0x14]
call fcn.00462d80
lea eax, [edi - 0x10]
mov byte [esp + 0xf0], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x487c70
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x487c70
mov eax, dword [ebx]
jmp 0x487e44
lea esi, [esp + 0xa4]
mov byte [esp + 0xf0], 7
call fcn.0040da60
mov ecx, dword [esp + 0xa4]
push ecx
call fcn.004f6734
mov byte [esp + 0xf4], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x487eea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xf0], 2
mov eax, dword [esp + 0x28]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x487f0f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, 0x5d74e0
call fcn.004066b0
mov byte [esp + 0xf0], 8
mov eax, dword [esp + 0x9c]
mov edi, dword [esp + 0x84]
mov dword [esp + 0x30], eax
mov eax, dword [eax]
mov esi, eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], esi
test edi, edi
je 0x487f52
cmp edi, dword [esp + 0x2c]
je 0x487f57
call fcn.004f825e
cmp esi, dword [esp + 0x30]
je 0x4881ad
test edi, edi
jne 0x488016
call fcn.004f825e
cmp esi, dword [edi + 0x18]
jne 0x487f78
call fcn.004f825e
mov eax, dword [esi + 0xc]
sub eax, 0x10
call fcn.004073f0
lea ebp, [eax + 0x10]
mov dword [esp + 0x20], ebp
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0xc8]
mov byte [esp + 0xf4], 9
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x38]
push eax
lea esi, [esp + 0x3c]
call fcn.0042cf90
mov esi, eax
mov eax, dword [esi]
test eax, eax
je 0x487fbc
cmp eax, edi
je 0x487fc1
call fcn.004f825e
cmp dword [esi + 4], ebx
jne 0x4880dd
mov ecx, dword [esp + 0x1c]
cmp dword [ecx - 0xc], 0
jne 0x48801d
push str.emulator_5554
push ebp
call fcn.004f69f9
add esp, 8
test eax, eax
je 0x48801d
lea edx, [esp + 0x20]
push edx
mov eax, 5
lea ecx, [esp + 0x2c]
call fcn.0042ca60
mov eax, dword [eax]
or dword [esp + 0x24], 1
push str.:5555
push eax
call fcn.004f69f9
add esp, 8
test eax, eax
je 0x48801d
mov bl, 1
jmp 0x48801f
mov edi, dword [edi]
jmp 0x487f6e
xor bl, bl
mov dword [esp + 0xf0], 9
test byte [esp + 0x24], 1
je 0x488056
mov eax, dword [esp + 0x28]
and dword [esp + 0x24], 0xfffffffe
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x488056
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x4880a2
lea eax, [esp + 0x20]
lea edi, [esp + 0x1c]
call fcn.00406fe0
add ebp, 0xfffffff0
mov byte [esp + 0xf0], 8
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4880c7
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
lea esi, [esp + 0x14]
call fcn.0047e330
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
jmp 0x487f48
add ebp, 0xfffffff0
mov byte [esp + 0xf0], 8
lea eax, [ebp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4880c7
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
lea esi, [esp + 0x14]
call fcn.0047e330
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
jmp 0x487f48
mov ecx, dword [esp + 0xfc]
push 0x104
push ebp
push ecx
call fcn.004f8077
add ebp, 0xfffffff0
add esp, 0xc
mov byte [esp + 0xf0], 8
lea edx, [ebp + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x488118
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
mov byte [esp + 0xf0], 2
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x488140
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x54]
mov byte [esp + 0xf0], 0xa
call fcn.0042dca0
mov ecx, dword [esp + 0x54]
push ecx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x34]
mov byte [esp + 0xf0], 0xb
call fcn.0042dca0
mov edx, dword [esp + 0x34]
push edx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x84]
mov dword [esp + 0xf0], 0xc
call fcn.0042dca0
mov eax, dword [esp + 0x84]
push eax
call fcn.004f6734
add esp, 4
mov eax, 4
jmp 0x48833d
mov eax, dword [esp + 0x1c]
cmp dword [eax - 0xc], 0
je 0x488266
mov ecx, dword [esp + 0xfc]
push 0x104
push eax
push ecx
call fcn.004f8077
mov byte [esp + 0xfc], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
add esp, 0xc
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4881f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x54]
mov byte [esp + 0xf0], 0xe
call fcn.0042dca0
mov ecx, dword [esp + 0x54]
push ecx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x34]
mov byte [esp + 0xf0], 0xf
call fcn.0042dca0
mov edx, dword [esp + 0x34]
push edx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x84]
mov dword [esp + 0xf0], 0x10
call fcn.0042dca0
mov eax, dword [esp + 0x84]
push eax
call fcn.004f6734
add esp, 4
mov eax, 1
jmp 0x48833d
cmp dword [esp + 0x50], 0
je 0x488360
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x4c]
mov esi, dword [ecx]
test eax, eax
jne 0x488359
call fcn.004f825e
xor eax, eax
cmp esi, dword [eax + 0x18]
jne 0x488294
call fcn.004f825e
mov eax, dword [esi + 0xc]
mov edx, dword [esp + 0xfc]
push 0x104
push eax
push edx
call fcn.004f8077
mov byte [esp + 0xfc], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4882d5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x54]
mov byte [esp + 0xf0], 0x11
call fcn.0042dca0
mov ecx, dword [esp + 0x54]
push ecx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x34]
mov byte [esp + 0xf0], 0x12
call fcn.0042dca0
mov edx, dword [esp + 0x34]
push edx
call fcn.004f6734
add esp, 4
lea esi, [esp + 0x84]
mov dword [esp + 0xf0], 0x13
call fcn.0042dca0
mov eax, dword [esp + 0x84]
push eax
call fcn.004f6734
add esp, 4
mov eax, 2
mov ecx, dword [esp + 0xe8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret 0xc
mov eax, dword [eax]
jmp 0x48828a
cmp dword [esp + 0x70], 0
jbe 0x48841c
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x6c]
mov esi, dword [ecx]
test eax, eax
jne 0x488415
call fcn.004f825e
xor eax, eax
cmp esi, dword [eax + 0x18]
jne 0x48838e
call fcn.004f825e
mov eax, dword [esi + 0xc]
mov edx, dword [esp + 0xfc]
push 0x104
push eax
push edx
call fcn.004f8077
mov byte [esp + 0xfc], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4883cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x54]
push ecx
mov byte [esp + 0xf4], 1
call fcn.0042ce10
lea edx, [esp + 0x34]
push edx
mov byte [esp + 0xf4], 0
call fcn.0042ce10
lea eax, [esp + 0x84]
push eax
mov dword [esp + 0xf4], 0xffffffff
call fcn.0042ce10
mov eax, 3
jmp 0x48833d
mov eax, dword [eax]
jmp 0x488384
add eax, 0xfffffff0
mov byte [esp + 0xf0], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x488440
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x54]
push ecx
mov byte [esp + 0xf4], 1
call fcn.0042ce10
lea edx, [esp + 0x34]
push edx
mov byte [esp + 0xf4], 0
call fcn.0042ce10
lea eax, [esp + 0x84]
push eax
mov dword [esp + 0xf4], 0xffffffff
call fcn.0042ce10
jmp 0x488338
push 0x80070057
call fcn.00401050
int3