Function at 0x4177d0
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x420
mov eax, dword [0x47c554]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov bl, 1
push esi
push edi
mov byte [ebp - 0x409], bl
cmp byte [ebp + 8], bl
jne 0x417a80
xor edi, edi
xor ebx, ebx
lea ecx, [edi + 1]
nop
test edi, edi
jne 0x417a5c
cmp byte [ebx + 0x4c0238], 1
jne 0x4179f5
lea esi, [ebx*4 + 0x5091a4]
mov dword [ebx*4 + 0x5091ac], 0xffffffff
push esi
mov word [ebx*2 + 0x5091b8], cx
call sub.Asidrv32.dll_AASiRegisterMaster
mov edi, eax
test edi, edi
jne 0x4179df
lea eax, [ebx + 1]
push eax
push str.AsiPCI.dll:_ID_0xFFFF__Circ__u
lea eax, [ebp - 0x408]
push 0x401
push eax
call fcn.004038d0
add esp, 0x10
lea eax, [ebp - 0x408]
push eax
push dword [esi]
call sub.Asidrv32.dll_AASiInit
mov edi, eax
test edi, edi
jne 0x4179df
push 1
push dword [esi]
call sub.Asidrv32.dll_AASiSetConfigMode
mov edi, eax
test edi, edi
jne 0x4179df
mov edi, dword [0x4bfd30]
xorps xmm0, xmm0
movlpd qword [ebp - 0x418], xmm0
mov eax, dword [ebp - 0x414]
test edi, edi
jle 0x417921
mov dword [ebp - 0x410], eax
mov esi, 0x4bfd38
mov eax, dword [ebp - 0x418]
mov ecx, 0x40
mov dword [ebp - 0x414], eax
movsx eax, word [esi]
cdq
idiv ecx
cmp eax, ebx
jne 0x417904
xor eax, eax
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
mov edx, dword [ebp - 0x414]
cmovae ecx, eax
or edx, eax
mov eax, dword [ebp - 0x410]
or eax, ecx
mov dword [ebp - 0x414], edx
mov dword [ebp - 0x410], eax
mov ecx, 0x40
jmp 0x417910
mov eax, dword [ebp - 0x410]
mov edx, dword [ebp - 0x414]
add esi, 0xa
sub edi, 1
jne 0x4178c2
lea esi, [ebx*4 + 0x5091a4]
jmp 0x417927
mov edx, dword [ebp - 0x418]
push eax
push edx
push dword [esi]
call sub.Asidrv32.dll_AASiWriteLPS
mov edi, eax
xor ecx, ecx
mov eax, dword [0x4bfd30]
mov dword [ebp - 0x414], ecx
test eax, eax
jle 0x4179c3
mov esi, 0x4bfd40
nop dword [eax]
movzx eax, word [esi - 8]
mov dword [ebp - 0x410], eax
cwde
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
cmp eax, ebx
jne 0x4179a7
mov ax, word [esi]
shl ax, 4
or ax, word [esi - 2]
shl ax, 4
or ax, word [esi - 4]
shl ax, 4
or ax, word [esi - 6]
movzx eax, ax
push eax
mov eax, dword [ebp - 0x410]
and al, 0x3f
movzx eax, al
push eax
push dword [ebx*4 + 0x5091a4]
call sub.Asidrv32.dll_AASiWritePCD
mov ecx, dword [ebp - 0x414]
mov edi, eax
mov eax, dword [0x4bfd30]
inc ecx
add esi, 0xa
mov dword [ebp - 0x414], ecx
cmp ecx, eax
jl 0x417950
lea esi, [ebx*4 + 0x5091a4]
test eax, eax
je 0x4179d0
push 0
push dword [esi]
call sub.Asidrv32.dll_AASiSetConfigMode
mov edi, eax
test edi, edi
jne 0x4179f0
push 5
push dword [esi]
call sub.Asidrv32.dll_AASiWriteHiFlags
jmp 0x4179f0
push edi
push ebx
call fcn.004184b0
mov byte [ebp - 0x409], 0
add esp, 8
mov ecx, 1
inc ebx
cmp ebx, 2
jl 0x417800
test edi, edi
jne 0x417a5c
lea eax, [ebp - 0x420]
mov byte [0x5091b4], 1
push eax
push edi
push edi
push 0x417d80
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [0x5091a0], eax
cmp dword [0x46f5cc], edi
je 0x417a3c
mov eax, dword [0x4c18d9]
mov dword [0x46f5cc], edi
or byte [eax + 0x30], 1
cmp dword [0x46f5d0], 0
je 0x417a5c
mov ecx, dword [0x4c18d9]
mov dword [0x46f5d0], 0
or byte [ecx + 0xb1], 1
push str.Starting_ASI_Bus
call fcn.0040e750
mov al, byte [ebp - 0x409]
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0043b572
mov esp, ebp
pop ebp
ret
push str.Stopping_ASI_Bus
call fcn.0040e750
mov esi, dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
lea eax, [ebp - 0x41c]
add esp, 4
mov byte [0x5091b4], 0
push eax
push dword [0x5091a0]
call esi
cmp eax, 1
jne 0x417ad6
mov edi, dword [sym.imp.KERNEL32.dll_SwitchToThread]
cmp dword [ebp - 0x41c], 0x103
jne 0x417ad6
call edi
lea eax, [ebp - 0x41c]
push eax
push dword [0x5091a0]
call esi
cmp eax, 1
je 0x417ab4
push dword [0x5091a0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
xor esi, esi
test eax, eax
jne 0x417b1e
cmp byte [esi + 0x4c0238], bl
jne 0x417b18
push 2
push dword [esi*4 + 0x5091a4]
call sub.Asidrv32.dll_AASiWriteHiFlags
push dword [esi*4 + 0x5091a4]
call sub.Asidrv32.dll_AASiExit
push dword [esi*4 + 0x5091a4]
call sub.Asidrv32.dll_AASiUnRegisterMaster
inc esi
cmp esi, 2
jl 0x417ae6
mov ecx, dword [ebp - 4]
mov al, bl
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0043b572
mov esp, ebp
pop ebp
ret