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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac
mov eax, dword [0x1004c040]
xor eax, esp
mov dword [esp + 0xa8], eax
cmp dword [0x1004c678], 0
push ebx
push esi
push edi
mov esi, ecx
jne 0x1003972c
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ebx, 6
test esi, esi
je 0x10039b67
cmp esi, 1
jl 0x1003969d
cmp esi, 4
jle 0x10039746
cmp esi, 5
je 0x10039b67
cmp esi, ebx
je 0x10039b67
cmp esi, 7
jne 0x10039b67
push str.d3d9.dll
xor esi, esi
call edi
test eax, eax
je 0x100396cb
mov esi, 1
jmp 0x1003971f
push str.d3d10.dll
call edi
test eax, eax
je 0x100396dd
mov esi, 2
jmp 0x1003971f
push str.d3d11.dll
call edi
test eax, eax
je 0x100396ef
mov esi, 3
jmp 0x1003971f
push str.d3d12.dll
call edi
test eax, eax
je 0x10039701
mov esi, 4
jmp 0x1003971f
push str.opengl32.dll
call edi
test eax, eax
je 0x10039713
mov esi, 5
jmp 0x1003971f
push str.vulcan_1.dll
call edi
test eax, eax
cmovne esi, ebx
cmp dword [0x1004c678], 0
je 0x10039687
mov eax, 0xfffffffc
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret
mov eax, dword [sym.imp.USER32.dll_DefWindowProcA]
push 0
mov dword [esp + 0x24], 0x30
mov dword [esp + 0x28], 3
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
call edi
mov dword [esp + 0x34], eax
xorps xmm0, xmm0
lea eax, [esp + 0x20]
mov dword [esp + 0x48], str.Kiero
push eax
movups xmmword [esp + 0x3c], xmm0
mov dword [esp + 0x50], 0
call dword [sym.imp.USER32.dll_RegisterClassExA]
push 0
push dword [esp + 0x38]
push 0
push 0
push 0x64
push 0x64
push 0
push 0
push 0xcf0000
push str.Kiero_DirectX_Window
push dword [esp + 0x70]
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp esi, 1
je 0x10039b7e
cmp esi, 2
je 0x10039b7e
cmp esi, 3
jne 0x10039b7e
push str.d3d11.dll
call edi
test eax, eax
jne 0x1003981b
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [esp + 0x34]
push dword [esp + 0x4c]
call dword [sym.imp.USER32.dll_UnregisterClassA]
lea eax, [esi - 6]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret
push str.D3D11CreateDeviceAndSwapChain
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x10039858
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [esp + 0x34]
push dword [esp + 0x4c]
call dword [sym.imp.USER32.dll_UnregisterClassA]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0x1c]
mov dword [esp + 0x90], 0xa100
push ecx
lea ecx, [esp + 0x90]
mov dword [esp + 0x98], 0xb000
push ecx
lea ecx, [esp + 0x20]
mov dword [esp + 0x58], 0x64
push ecx
lea ecx, [esp + 0x20]
mov dword [esp + 0x60], 0x64
push ecx
lea ecx, [esp + 0x60]
mov dword [esp + 0x68], 0x3c
push ecx
push 7
push 1
lea ecx, [esp + 0xac]
mov dword [esp + 0x78], 1
push ecx
push 0
push 0
push 1
push 0
mov dword [esp + 0x90], 0x1c
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 1
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0x20
mov dword [esp + 0xa8], 1
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], 1
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 2
call eax
test eax, eax
js 0x1003982b
push 4
push 0xcd
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov ecx, dword [esp + 0x1c]
add esp, 8
cmp dword [0x1004c648], 0
mov dword [0x1004c674], eax
lea edi, [eax + 0x48]
mov ecx, dword [ecx]
movups xmm0, xmmword [ecx]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [ecx + 0x30]
movups xmmword [eax + 0x30], xmm0
movq xmm0, qword [ecx + 0x40]
mov ecx, 0x2b
movq qword [eax + 0x40], xmm0
mov esi, dword [esp + 0x18]
mov esi, dword [esi]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x1c]
lea edi, [eax + 0xf4]
mov ecx, 0x90
mov esi, dword [esi]
rep movsd dword es:[edi], dword [esi]
jne 0x10039b12
movups xmm0, xmmword [str.minhook_multihook_]
mov ax, word [0x10049dec]
mov word [esp + 0xa8], ax
mov al, byte [0x10049dee]
movups xmmword [esp + 0x98], xmm0
mov byte [esp + 0xaa], al
xorps xmm0, xmm0
movq qword [esp + 0xab], xmm0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ebx, eax
mov byte [esp + 0xb2], 0
mov edx, ebx
shr edx, 0x1c
cmp dl, 0xa
sbb cl, cl
and cl, 0xf9
add cl, 0x37
add cl, dl
mov byte [esp + 0xaa], cl
mov ecx, ebx
shr ecx, 0x18
and cl, 0xf
cmp cl, 0xa
sbb al, al
add cl, 0x37
and al, 0xf9
shl ebx, 8
add al, cl
mov ecx, ebx
shr ecx, 0x1c
cmp cl, 0xa
mov byte [esp + 0xab], al
sbb al, al
add cl, 0x37
and al, 0xf9
add al, cl
mov ecx, ebx
shr ecx, 0x18
and cl, 0xf
mov byte [esp + 0xac], al
cmp cl, 0xa
sbb al, al
add cl, 0x37
and al, 0xf9
shl ebx, 8
add al, cl
mov ecx, ebx
shr ecx, 0x1c
cmp cl, 0xa
mov byte [esp + 0xad], al
sbb al, al
add cl, 0x37
and al, 0xf9
add al, cl
mov ecx, ebx
shr ecx, 0x18
and cl, 0xf
mov byte [esp + 0xae], al
cmp cl, 0xa
sbb al, al
add cl, 0x37
and al, 0xf9
shl ebx, 8
add al, cl
mov ecx, ebx
shr ecx, 0x1c
mov byte [esp + 0xaf], al
cmp cl, 0xa
sbb al, al
shr ebx, 0x18
and al, 0xf9
add cl, 0x37
add al, cl
and bl, 0xf
mov byte [esp + 0xb0], al
cmp bl, 0xa
sbb al, al
and al, 0xf9
add al, 0x37
add al, bl
mov byte [esp + 0xb1], al
lea eax, [esp + 0x98]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x1004c648], eax
test eax, eax
je 0x10039b0e
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_HeapCreate]
mov dword [0x1004c6a0], eax
test eax, eax
jne 0x10039b0e
push dword [0x1004c648]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x1004c648], 0
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], 0
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], 0
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
push ebx
mov dword [esp + 0x20], 0
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [esp + 0x34]
push dword [esp + 0x4c]
call dword [sym.imp.USER32.dll_UnregisterClassA]
mov dword [0x1004c678], 3
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
push dword [esp + 0x34]
push dword [esp + 0x4c]
call dword [sym.imp.USER32.dll_UnregisterClassA]
mov ecx, dword [esp + 0xb4]
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1003b9a6
mov esp, ebp
pop ebp
ret