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

Disassembly:
mov eax, dword [esi + 0x60c0]
sub esp, 0xe8
sub eax, 1
js 0xa4143
lea ecx, [esi + 0x23bc]
mov dword [esp], ecx
push ebx
lea ecx, [eax*8]
sub ecx, eax
mov ebx, eax
lea edx, [esi + eax*4 + 0x598]
add ecx, ecx
shl ebx, 0x14
sub ecx, eax
sub ebx, 0x22ffefe5
mov dword [esp + 0xc], edx
push ebp
lea edx, [esi + ecx*8 + 0x3f8]
add eax, 1
push edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
jmp 0xa3d80
mov ecx, dword [esi + 0x233c]
mov eax, dword [esi + 0x2338]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
lea ecx, [esp + 0xd8]
push ecx
mov ecx, dword [esi + 0x2330]
push 0x10
lea edx, [ebx - 6]
lea eax, [esp + 0x44]
mov dword [esp + 0x4c], edx
mov edx, eax
push edx
push 4
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push eax
push 0x80002000
push ecx
call sub.WIN32K.SYS_EngDeviceIoControl
mov edx, dword [esi + 0x2338]
mov eax, dword [esi + 0x233c]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0xf0]
push edx
mov edx, dword [esi + 0x2330]
push 0x10
lea ecx, [esp + 0x24]
mov dword [esp + 0x28], eax
mov eax, ecx
push eax
push 4
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x1c]
push ecx
push 0x80002000
push edx
mov dword [esp + 0x40], ebx
call sub.WIN32K.SYS_EngDeviceIoControl
mov ecx, dword [esi + 0x233c]
mov eax, dword [esi + 0x2338]
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], eax
lea ecx, [esp + 0xd4]
push ecx
mov ecx, dword [esi + 0x2330]
push 0x10
lea edx, [ebx - 2]
lea eax, [esp + 0x64]
mov dword [esp + 0x6c], edx
mov edx, eax
push edx
push 4
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push eax
push 0x80002000
push ecx
call sub.WIN32K.SYS_EngDeviceIoControl
mov eax, dword [esi + 0x233c]
mov edx, dword [esi + 0x2338]
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], edx
lea eax, [esp + 0xe4]
push eax
mov eax, dword [esi + 0x2330]
push 0x10
lea ecx, [ebx - 1]
lea edx, [esp + 0x84]
mov dword [esp + 0x8c], ecx
mov ecx, edx
push ecx
push 4
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x1c]
push edx
push 0x80002000
push eax
call sub.WIN32K.SYS_EngDeviceIoControl
test byte [esi + 0x23b5], 0x80
je 0xa3ef7
mov edx, dword [esi + 0x233c]
mov ecx, dword [esi + 0x2338]
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
lea edx, [esp + 0xdc]
push edx
mov edx, dword [esi + 0x2330]
push 0x10
lea eax, [ebx + 3]
lea ecx, [esp + 0x34]
mov dword [esp + 0x3c], eax
mov eax, ecx
push eax
push 4
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x1c]
push ecx
push 0x80002000
push edx
call sub.WIN32K.SYS_EngDeviceIoControl
xor ebp, ebp
cmp dword [esi + 0x2348], ebp
jbe 0xa3fb2
lea edi, [ebx + 0x7d]
jmp 0xa3f10
mov ecx, dword [esi + 0x233c]
mov eax, dword [esi + 0x2338]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], eax
lea ecx, [esp + 0xec]
push ecx
mov ecx, dword [esi + 0x2330]
push 0x10
lea edx, [edi - 8]
lea eax, [esp + 0x54]
mov dword [esp + 0x5c], edx
mov edx, eax
push edx
push 4
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push eax
push 0x80002000
push ecx
call sub.WIN32K.SYS_EngDeviceIoControl
mov edx, dword [esi + 0x2338]
mov eax, dword [esi + 0x233c]
mov dword [esp + 0x6c], edx
lea edx, [esp + 0xd0]
push edx
mov edx, dword [esi + 0x2330]
push 0x10
lea ecx, [esp + 0x74]
mov dword [esp + 0x78], eax
mov eax, ecx
push eax
push 4
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x1c]
push ecx
push 0x80002000
push edx
mov dword [esp + 0x90], edi
call sub.WIN32K.SYS_EngDeviceIoControl
add ebp, 1
add edi, 1
cmp ebp, dword [esi + 0x2348]
jb 0xa3f10
mov ecx, dword [esi + 0x233c]
mov eax, dword [esi + 0x2338]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x9c], eax
lea ecx, [esp + 0xcc]
push ecx
mov ecx, dword [esi + 0x2330]
push 0x10
lea edx, [ebx - 0x92fbac6]
lea eax, [esp + 0xa4]
mov dword [esp + 0xac], edx
mov edx, eax
push edx
push 4
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push eax
push 0x80002000
push ecx
call sub.WIN32K.SYS_EngDeviceIoControl
mov edx, dword [0x4e73e0]
test byte [edx + 0x23be], 0x50
jne 0xa40b9
mov ecx, dword [esi + 0x2338]
mov edx, dword [esi + 0x233c]
mov edi, dword [esp + 0x10]
mov eax, dword [esi + 0x2330]
mov dword [esp + 0xac], ecx
mov ecx, dword [edi]
mov dword [esp + 0xb0], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0xb4], ecx
mov ecx, dword [edx]
xor ebp, ebp
lea edx, [esp + 0xe0]
push edx
push ebp
push ebp
push 0x20
mov dword [esp + 0xcc], ecx
lea ecx, [esp + 0xbc]
push ecx
push 0x80222004
push eax
mov dword [esp + 0xdc], ebp
mov dword [esp + 0xe4], ebp
mov dword [esp + 0xe0], ebp
call sub.WIN32K.SYS_EngDeviceIoControl
cmp dword [esp + 0xc4], ebp
jne 0xa4112
mov eax, esi
call fcn.00069bc0
test eax, eax
jne 0xa4112
mov eax, edi
mov dword [eax], ebp
mov dword [eax + 0x30], ebp
mov dword [eax + 0x34], ebp
mov dword [eax + 0x38], ebp
mov dword [eax + 0x3c], ebp
mov dword [eax + 4], ebp
jmp 0xa4112
mov eax, dword [esi + 0x233c]
mov edx, dword [esi + 0x2338]
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], edx
lea eax, [esp + 0xe8]
push eax
mov eax, dword [esi + 0x2330]
push 0x10
lea ecx, [ebx - 0x929d019]
lea edx, [esp + 0x94]
mov dword [esp + 0x9c], ecx
mov ecx, edx
push ecx
push 4
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x1c]
push edx
push 0x80002000
push eax
call sub.WIN32K.SYS_EngDeviceIoControl
xor ebp, ebp
mov eax, dword [esp + 0x14]
sub dword [esp + 0x10], 0x68
mov dword [eax], ebp
sub eax, 4
mov dword [esp + 0x14], eax
mov eax, 1
sub ebx, 0x100000
sub dword [esp + 0x18], eax
jne 0xa3d80
pop edi
pop ebp
pop ebx
add esp, 0xe8
ret
mov eax, 1
add esp, 0xe8
ret