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

Disassembly:
sub esp, 0x68
push ebx
push ebp
push esi
mov esi, dword [esp + 0x78]
push edi
mov eax, dword [esi + 0x2c]
test eax, 0x10000
je 0x10005614
pop edi
pop esi
pop ebp
mov eax, 7
pop ebx
add esp, 0x68
ret 0x1c
test eax, 0x20000000
jne 0x1000562a
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c
test eax, 0x2000000
je 0x10005ae2
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x94]
add eax, 0xffddfc00
xor ebp, ebp
cmp eax, 0x14
mov dword [ebx], ebp
ja case.0x1000565d.2229252
xor ecx, ecx
mov cl, byte [eax + 0x10005be8]
jmp dword [ecx*4 + 0x10005bd4]
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0x28]
test eax, 0x800000
mov dword [esp + 0x7c], edx
jne 0x10005909
mov edx, dword [esi + 0x34]
mov eax, dword [0x10012288]
cmp edx, eax
mov dword [esp + 0x94], edx
jae 0x100059d7
jmp 0x10005699
mov edx, dword [esp + 0x94]
test ebp, ebp
je 0x100056a6
cmp ebp, 7
jne 0x100059d7
mov ecx, 0xd
xor eax, eax
lea edi, [esp + 0x44]
mov dword [esp + 0x40], 0
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x14]
push str.Rainbow_Technologies_iKeyVirtualReader__d
push eax
call fcn.100073b5
mov eax, dword [esi + 0x3c]
add esp, 0xc
lea edx, [esp + 0x40]
lea ecx, [esp + 0x10]
push 1
push edx
push 1
push eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x58], 0
call dword [esi + 0x5c]
push eax
call fcn.10005c80
mov ebp, eax
test ebp, ebp
jne 0x10005947
mov eax, dword [esp + 0x4c]
test al, 0x20
je 0x10005839
test ah, 1
je 0x1000573a
test al, 0x80
je 0x1000573a
lea ecx, [esp + 0x40]
push ecx
call fcn.10005c00
add esp, 4
test eax, eax
jne 0x10005872
test dword [esi + 0x2c], 0x100000
jne 0x10005bc5
jmp 0x10005846
lea edx, [esp + 0x40]
push edx
call fcn.10005c00
add esp, 4
test eax, eax
je 0x10005846
mov edx, dword [esi + 0x3c]
lea eax, [esp + 0x80]
lea edi, [esi + 0x40]
push eax
push edi
push 3
lea ecx, [esp + 0x1c]
push 2
push ecx
push edx
mov dword [edi], 0
mov dword [esp + 0x98], 0
call dword [esi + 0x50]
push eax
call fcn.10005c80
test eax, eax
je 0x1000578b
cmp eax, 7
jne 0x10005792
mov byte [0x1000f185], 0
test eax, eax
jne 0x10005b54
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 4]
lea ebp, [esi + 4]
or ecx, 0x1000000
test eax, eax
mov dword [esi + 0x2c], ecx
jne 0x100057de
mov eax, dword [edi]
push ebx
push 4
push ebp
push 0
push 0
push 0x312000
push eax
call dword [esi + 0x58]
push eax
call fcn.10005c80
test eax, eax
jne 0x1000588b
cmp dword [ebp], 0x101
jb 0x100058a2
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x88]
push ebx
push ecx
mov ecx, dword [esp + 0x8c]
push edx
mov edx, dword [edi]
push eax
push ecx
push 0x312004
push edx
call dword [esi + 0x58]
push eax
call fcn.10005c80
mov ebp, eax
test ebp, ebp
je 0x100058c0
mov ecx, dword [esi + 0x2c]
and ecx, 0xfeffffff
mov eax, ecx
mov dword [esi + 0x2c], ecx
test eax, 0x800000
jne 0x10005846
mov eax, dword [edi]
push 0
push eax
call dword [esi + 0x54]
jmp 0x10005846
test dword [esi + 0x2c], 0x100000
jne 0x10005bc5
mov eax, dword [esp + 0x94]
mov ecx, dword [0x10012288]
inc eax
cmp eax, ecx
mov dword [esp + 0x94], eax
jb 0x10005692
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c
mov ecx, dword [esp + 0x94]
mov dword [esi + 0x34], ecx
pop edi
pop esi
pop ebp
mov eax, 0x15
pop ebx
add esp, 0x68
ret 0x1c
push 1
push esi
call fcn.10005dd0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x68
ret 0x1c
push 1
push esi
mov dword [esi + 4], 0
call fcn.10005dd0
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x68
ret 0x1c
test dword [esi + 0x2c], 0x100000
je 0x100058f0
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x7c]
inc edx
cmp edx, dword [eax]
je 0x100058f0
push 1
push esi
call fcn.10005dd0
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c
mov eax, dword [esp + 0x94]
pop edi
mov dword [esi + 0x38], eax
mov dword [esi + 0x34], eax
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x68
ret 0x1c
or eax, 0x1000000
lea edi, [esi + 4]
mov dword [esi + 0x2c], eax
cmp dword [edi], 0
jne 0x10005978
mov ecx, dword [esi + 0x40]
push ebx
push 4
push edi
push 0
push 0
push 0x312000
push ecx
call dword [esi + 0x58]
push eax
call fcn.10005c80
mov ebp, eax
test ebp, ebp
je 0x10005953
push 1
push esi
mov dword [edi], 0
call fcn.10005dd0
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 0x1c
cmp dword [edi], 0x101
jae 0x10005978
push 1
push esi
mov dword [edi], 0
call fcn.10005dd0
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x68
ret 0x1c
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
push ebx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esi + 0x40]
push ecx
push edx
push 0x312004
push eax
call dword [esi + 0x58]
push eax
call fcn.10005c80
test eax, eax
jne 0x100059b9
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 0x1c
mov ecx, dword [esi + 0x2c]
and ecx, 0xfeffffff
mov eax, ecx
mov dword [esi + 0x2c], ecx
test eax, 0x800000
jne 0x100059d7
mov ecx, dword [esi + 0x40]
push 0
push ecx
call dword [esi + 0x54]
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c
mov eax, dword [esi + 0x2c]
test eax, 0x1000000
je 0x10005a37
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x88]
and eax, 0xfeffffff
push ebx
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x90]
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esi + 0x40]
push ecx
push edx
push 0x312008
push eax
call dword [esi + 0x58]
test dword [esi + 0x2c], 0x800000
jne 0x10005a37
mov ecx, dword [esi + 0x40]
push 0
push ecx
call dword [esi + 0x54]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x68
ret 0x1c
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
push ebx
push edx
mov edx, dword [esp + 0x8c]
push eax
mov eax, dword [esi + 0x40]
push ecx
push edx
push 0x312000
push eax
call dword [esi + 0x58]
push eax
call fcn.10005c80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 0x1c
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x84]
mov edx, ecx
push ebx
mov edi, dword [eax + 0xc]
push ecx
mov ecx, dword [esp + 0x94]
shl edx, 0x10
or edi, edx
mov edx, dword [esp + 0x90]
push ecx
push edx
mov dword [eax + 0xc], edi
push eax
mov eax, dword [esi + 0x40]
push 0x31200c
push eax
call dword [esi + 0x58]
push eax
call fcn.10005c80
mov edi, eax
cmp edi, 7
jne 0x10005ad6
push 1
push esi
call fcn.10005dd0
or dword [esi + 0x2c], 0x10000
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 0x1c
mov al, byte [0x1000f185]
test al, al
je 0x10005b4f
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
mov edi, dword [esp + 0x80]
push 0
push ecx
mov ecx, dword [esp + 0x90]
push edx
mov edx, dword [esp + 0x90]
push eax
mov eax, dword [esi + 0x24]
push ecx
push edx
push edi
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x10005b37
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x68
ret 0x1c
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x57
ja 0x10005bb5
je case.0x1000565d.2229252
sub eax, 5
je 0x10005b97
dec eax
je 0x10005b5e
sub eax, 0x11
mov eax, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 0x1c
cmp edi, 0x220404
jne 0x10005b75
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c
push 1
push esi
call fcn.10005dd0
mov eax, dword [esi + 0x2c]
pop edi
or eax, 0x10000
mov dword [esi + 0x2c], eax
pop esi
pop ebp
mov eax, 7
pop ebx
add esp, 0x68
ret 0x1c
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0x68
ret 0x1c
pop edi
pop esi
pop ebp
mov eax, 0x11
pop ebx
add esp, 0x68
ret 0x1c
cmp eax, 0x79
je 0x1000587c
cmp eax, 0x3e3
jne 0x10005b4f
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x68
ret 0x1c