Function at 0x412cf0
Capabilities:
Get storage device properties

Disassembly:
push 0xffffffffffffffff
push 0x4f0534
mov eax, dword fs:[0]
push eax
mov eax, 0x15f4
call fcn.004cb570
mov eax, dword [0x542c54]
xor eax, esp
mov dword [esp + 0x15f0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x542c54]
xor eax, esp
push eax
lea eax, [esp + 0x1608]
mov dword fs:[0], eax
mov eax, dword [esp + 0x161c]
mov edx, dword [esp + 0x1628]
mov esi, dword [esp + 0x1620]
mov edi, ecx
mov ecx, dword [esp + 0x1624]
xor ebx, ebx
mov dword [edi + 0xec], ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x30], edi
mov dword [esp + 0x44], esi
mov dword [edi + 0xe4], eax
mov dword [edi + 0xe8], ebx
mov dword [edi + 0xf0], edx
mov dword [edi + 0xf8], ebx
mov dword [edi + 0xfc], ebx
call fcn.00404550
mov dword [esp + 0x1610], ebx
cmp esi, ebx
je 0x412e60
mov dword [esi], ebx
xor ebp, ebp
cmp dword [edi + 0xc], ebx
jle 0x412e60
test ebx, ebx
jl 0x412f00
cmp ebp, dword [edi + 0xc]
jge 0x412f00
mov eax, dword [edi + 8]
add eax, ebx
cmp ebp, dword [edi + 0xc]
mov eax, dword [eax + 0x92c]
mov dword [esp + 0x498], eax
jge 0x412f00
mov eax, dword [edi + 8]
mov ecx, dword [eax + ebx + 0x934]
add eax, ebx
cmp ebp, dword [edi + 0xc]
mov dword [esp + 0x4a0], ecx
jge 0x412f00
mov eax, dword [edi + 8]
mov edx, dword [eax + ebx + 0x930]
add eax, ebx
cmp ebp, dword [edi + 0xc]
mov dword [esp + 0x49c], edx
jge 0x412f00
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 8]
add eax, ebx
lea esi, [eax + 0xa0e]
sub esp, 0x4c
mov ecx, 0x10
lea edi, [esp + 0x4f0]
rep movsd dword es:[edi], dword [esi]
mov edi, esp
mov ecx, 0x13
lea esi, [esp + 0x4e4]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0xa0]
push ecx
lea ecx, [esp + 0x9c]
call fcn.00404aa0
mov edx, dword [esp + 0x30]
inc ebp
add ebx, 0xaa0
cmp ebp, dword [edx + 0xc]
mov edi, edx
jl 0x412da0
xor ebx, ebx
push 0xffffffffffffffff
lea ecx, [edi + 4]
push ebx
mov dword [esp + 0x24], ecx
call fcn.004080f0
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0x18]
call fcn.00408340
push ebx
lea ecx, [edi + 0x68]
push 0x4f4b88
call fcn.004030d0
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0x6c]
call fcn.004c0a12
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0x80]
call fcn.004c0a12
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0x94]
call fcn.004c0a12
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0xa8]
call fcn.004c0a12
push 0xffffffffffffffff
push ebx
lea ecx, [edi + 0xbc]
call fcn.00404800
push 0xffffffffffffffff
lea ecx, [edi + 0xd0]
push ebx
mov dword [esp + 0x50], ecx
call fcn.00404800
push 0x3fc
lea eax, [esp + 0x88]
push ebx
push eax
mov dword [esp + 0x8c], ebx
call fcn.004cb5a0
add esp, 0xc
mov dword [esp + 0x24], ebx
jmp 0x412f09
call fcn.004bfa15
mov edi, dword [esp + 0x30]
xor ecx, ecx
xor ebp, ebp
cmp dword [edi + 0xc], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], ecx
jle 0x412f47
mov esi, dword [esp + 0x1c]
xor edx, edx
test edx, edx
jl 0x412f00
cmp ecx, dword [esi + 8]
jge 0x412f00
mov eax, dword [esi + 4]
add eax, edx
cmp ebx, dword [eax + 0x92c]
jne 0x412f3b
mov ebp, 1
inc ecx
add edx, 0xaa0
cmp ecx, dword [edi + 0xc]
jl 0x412f20
xor eax, eax
cmp dword [edi + 0xd8], eax
jle 0x412f77
mov edx, dword [esp + 0x48]
test eax, eax
jl 0x412f00
cmp eax, dword [edx + 8]
jge 0x412f00
mov ecx, dword [edx + 4]
cmp ebx, dword [ecx + eax*4]
lea ecx, [ecx + eax*4]
jne 0x412f6e
mov ebp, 1
inc eax
cmp eax, dword [edi + 0xd8]
jl 0x412f55
test ebp, ebp
jne 0x41364c
push ebx
mov ecx, edi
call fcn.00408cc0
mov ebx, eax
cmp ebx, 0xffffffff
je 0x41364c
push ebp
lea edx, [esp + 0x44]
push edx
push 0x18
lea eax, [esp + 0x74]
push eax
push ebp
push ebp
push 0x70000
push ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x413645
cmp dword [esp + 0x40], 0x18
jne 0x413645
cmp dword [esp + 0x70], 0xc
jne 0x413645
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x1610], 1
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
push 0x1000
mov byte [esp + 0x1614], 2
call fcn.004bf5dc
mov esi, eax
add esp, 4
cmp esi, ebp
jne 0x41308f
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x1610], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41305e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41364c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x41364c
push 0x1000
push ebp
push esi
call fcn.004cb5a0
add esp, 0xc
push ebp
lea ecx, [esp + 0x64]
push ecx
push 0x1000
push esi
push 0xc
lea edx, [esp + 0x4a0]
push edx
push 0x2d1400
push ebx
mov dword [esp + 0x4ac], ebp
mov dword [esp + 0x4b0], ebp
mov byte [esp + 0x4b4], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
cmp eax, ebp
jne 0x4130ef
push esi
call fcn.004bf5d1
add esp, 4
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x413036
mov eax, dword [esi + 0x10]
cmp eax, ebp
je 0x41311c
lea edx, [eax + esi]
cmp edx, ebp
jne 0x413101
xor eax, eax
jmp 0x413111
mov eax, edx
lea ebp, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413106
sub eax, ebp
xor ebp, ebp
push eax
push edx
lea ecx, [esp + 0x20]
call fcn.004030d0
mov eax, dword [esi + 0x14]
cmp eax, ebp
je 0x413149
lea edx, [eax + esi]
cmp edx, ebp
jne 0x41312e
xor eax, eax
jmp 0x41313e
mov eax, edx
lea ebp, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413133
sub eax, ebp
xor ebp, ebp
push eax
push edx
lea ecx, [esp + 0x28]
call fcn.004030d0
push esi
call fcn.004bf5d1
mov ecx, dword [esp + 0x1c]
add esp, 4
cmp dword [ecx - 0xc], ebp
mov esi, ecx
jl 0x413173
push str.SAMSUNG_HD155UI
push esi
call fcn.004ccf7c
add esp, 8
cmp eax, ebp
je 0x413173
sub eax, esi
je 0x41318e
cmp dword [esi - 0xc], ebp
jl 0x4131d2
push str.SAMSUNG_HD204UI
push esi
call fcn.004ccf7c
add esp, 8
cmp eax, ebp
je 0x4131d2
sub eax, esi
jne 0x4131d2
mov esi, dword [esp + 0x20]
cmp dword [esi - 0xc], ebp
jl 0x4131ad
push str.1AQ10003
push esi
call fcn.004ccf7c
add esp, 8
cmp eax, ebp
je 0x4131ad
sub eax, esi
je 0x4131d2
cmp dword [edi + 0xec], ebp
je 0x4131d2
lea eax, [esi - 0x10]
mov byte [esp + 0x1610], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x413052
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push str.USB_HDD_Check
call fcn.00403830
call fcn.004056f0
push 0x1000
lea ecx, [esp + 0x60c]
push ebp
push ecx
call fcn.004cb5a0
add esp, 0x10
push ebp
lea edx, [esp + 0x68]
push edx
push 0x1000
lea eax, [esp + 0x610]
push eax
push 0xc
lea ecx, [esp + 0x494]
push ecx
push 0x2d1400
push ebx
mov dword [esp + 0x4a0], ebp
mov dword [esp + 0x4a4], ebp
mov byte [esp + 0x4a8], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
cmp eax, ebp
je 0x41328c
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push str.Check_Bus_Type
call fcn.00403830
call fcn.004056f0
add esp, 4
cmp dword [esp + 0x620], 7
jne 0x41328c
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push str.Bus_Type__USB
call fcn.00403830
call fcn.004056f0
add esp, 4
mov dword [esp + 0x38], 3
mov esi, 0xffff
jmp 0x413290
mov esi, dword [esp + 0x34]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push str.DO:GetDiskInfo
call fcn.00403830
call fcn.004056f0
mov ecx, esp
mov dword [esp + 0x38], esp
push 0x4f4b88
call fcn.00403830
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
push ebp
push ebp
push ebp
push 0xffffffffffffffff
push ebp
push esi
push edx
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
mov ecx, edi
call fcn.00411b30
cmp eax, ebp
je 0x413036
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push str.OK:GetDiskInfo
call fcn.00403830
call fcn.004056f0
mov ecx, dword [esp + 0x34]
mov edi, dword [ecx + 0xc]
add esp, 4
dec edi
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov byte [esp + 0x1610], 3
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0x1610], 4
test edi, edi
jl 0x412f00
mov ecx, dword [esp + 0x1c]
cmp edi, dword [ecx + 8]
jge 0x412f00
mov esi, edi
imul esi, esi, 0xaa0
mov ebx, ecx
mov eax, dword [ebx + 4]
add eax, esi
add eax, 0xa60
push eax
lea ecx, [esp + 0x38]
call fcn.004085e0
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Check_Reverse
call fcn.00403830
call fcn.004056f0
mov ebp, dword [esp + 0x38]
add esp, 4
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.DW_C
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x4133ce
sub eax, ebp
je 0x41347a
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.iHat
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x4133f2
sub eax, ebp
je 0x41347a
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.ASSM
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x413412
sub eax, ebp
je 0x41347a
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.aMtx
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x413432
sub eax, ebp
je 0x41347a
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.OTHS
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x413452
sub eax, ebp
je 0x41347a
cmp dword [ebp - 0xc], 0
jl 0x4135a1
push str.UFIJ
push ebp
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x4135a1
sub eax, ebp
jne 0x4135a1
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Reverse
call fcn.00403830
call fcn.004056f0
add esp, 4
cmp edi, dword [ebx + 8]
jge 0x412f00
mov edx, dword [ebx + 4]
add edx, esi
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
add eax, esi
add eax, 0xa50
add edx, 0xa54
push edx
mov ecx, eax
call fcn.004085e0
cmp edi, dword [ebx + 8]
jge 0x412f00
mov edx, dword [ebx + 4]
add edx, esi
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
add eax, esi
add eax, 0xa58
add edx, 0xa5c
push edx
mov ecx, eax
call fcn.004085e0
cmp edi, dword [ebx + 8]
jge 0x412f00
mov edx, dword [ebx + 4]
add edx, esi
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
add eax, esi
add eax, 0xa60
add edx, 0xa64
push edx
mov ecx, eax
call fcn.004085e0
cmp edi, dword [ebx + 8]
jge 0x412f00
mov ecx, dword [ebx + 4]
add ecx, esi
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
add ecx, 0xa50
add eax, esi
push ecx
mov ecx, dword [esp + 0x34]
add eax, 0xa60
push eax
lea edx, [esp + 0x44]
push edx
call fcn.0040b680
cmp edi, dword [ebx + 8]
mov byte [esp + 0x1610], 5
jge 0x412f00
mov ecx, dword [ebx + 4]
add ecx, esi
add ecx, 0xa6c
push eax
call fcn.004085e0
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4135a1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x38], 3
jne 0x4135ef
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
mov ecx, dword [eax + esi + 0xa84]
add eax, esi
push ecx
lea edx, [esp + 0x2c]
push str.USB___s_
push edx
call fcn.00403410
add esp, 0xc
cmp edi, dword [ebx + 8]
jge 0x412f00
mov eax, dword [ebx + 4]
add eax, esi
lea ecx, [esp + 0x28]
add eax, 0xa84
push ecx
mov ecx, eax
call fcn.004085e0
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x413617
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebp, 0xfffffff0
mov byte [esp + 0x1610], 2
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413036
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
jmp 0x413036
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [esp + 0x24]
inc ebx
cmp ebx, 0x38
mov dword [esp + 0x24], ebx
jl 0x412f05
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.OK:GetDiskInfo___PhysicalDrive
call fcn.00403830
call fcn.004056f0
mov esi, dword [esp + 0x34]
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 8]
push 0x403f60
push 0xaa0
push ecx
push eax
call fcn.004cd470
add esp, 0x10
mov ecx, esp
mov dword [esp + 0x18], esp
push str.OK:qsort
call fcn.00403830
call fcn.004056f0
add esp, 4
cmp dword [esi + 0xe4], 0
je 0x413d1f
mov dword [esp + 0x38], 0
nop
mov dword [esp + 0x28], 0
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x4f4b88
call fcn.00403830
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
push 0
push 0
push 0
push 0xffffffffffffffff
push 0
push 0
push 0
push ecx
mov ecx, dword [esp + 0x54]
push edx
push 0xffffffffffffffff
call fcn.00411b30
test eax, eax
je 0x413ce2
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0xc]
lea esi, [eax - 1]
mov dword [esp + 0x24], esi
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x20], edi
mov byte [esp + 0x1610], 6
test esi, esi
jl 0x412f00
mov ecx, dword [esp + 0x1c]
cmp esi, dword [ecx + 8]
jge 0x412f00
mov ebx, esi
imul ebx, ebx, 0xaa0
mov edx, ecx
mov eax, dword [edx + 4]
add eax, ebx
mov eax, dword [eax + 0xa60]
lea esi, [eax - 0x10]
lea ebp, [edi - 0x10]
mov dword [esp + 0x18], ebx
cmp esi, ebp
je 0x413823
cmp dword [ebp + 0xc], 0
jl 0x413811
mov ecx, dword [esi]
cmp ecx, dword [ebp]
jne 0x413811
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x4137ba
cmp eax, dword [esi]
jne 0x4137ba
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4137ee
push 0x80004005
call fcn.00402700
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
lea eax, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x413808
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
add edi, 0x10
mov dword [esp + 0x20], edi
jmp 0x413823
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x28]
call fcn.004030d0
mov edi, dword [esp + 0x20]
cmp dword [edi - 0xc], 0
jl 0x413cba
push str.DW_C
push edi
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x413847
sub eax, edi
je 0x4138f9
cmp dword [edi - 0xc], 0
jl 0x413cba
push str.iHat
push edi
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x41386b
sub eax, edi
je 0x4138f9
cmp dword [edi - 0xc], 0
jl 0x413cba
push str.ASSM
push edi
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x41388b
sub eax, edi
je 0x4138f9
cmp dword [edi - 0xc], 0
jl 0x413cba
push str.aMtx
push edi
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x4138ab
sub eax, edi
je 0x4138f9
cmp dword [edi - 0xc], 0
jl 0x413cba
push str.OTHS
push edi
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x4138cb
sub eax, edi
je 0x4138f9
cmp dword [edi - 0xc], 0
jl 0x413cba
mov eax, dword [esp + 0x20]
push str.UFIJ
push eax
call fcn.004ccf7c
add esp, 8
test eax, eax
je 0x413cba
sub eax, dword [esp + 0x20]
jne 0x413cba
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
cmp edx, dword [eax + 8]
jge 0x412f00
mov ecx, dword [eax + 4]
add ecx, ebx
cmp edx, dword [eax + 8]
jge 0x412f00
mov ebp, eax
mov eax, dword [ebp + 4]
add eax, ebx
mov edi, dword [eax + 0xa50]
lea ebx, [eax + 0xa50]
mov eax, dword [ecx + 0xa54]
lea esi, [eax - 0x10]
sub edi, 0x10
cmp esi, edi
je 0x4139d4
cmp dword [edi + 0xc], 0
jl 0x4139c8
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x4139c8
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x413970
cmp eax, dword [esi]
jne 0x413970
mov ebp, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x4139a4
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebp, eax
test ebp, ebp
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [ebp + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebp + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x4139bd
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add ebp, 0x10
mov dword [ebx], ebp
mov ebp, dword [esp + 0x1c]
jmp 0x4139d4
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebx
call fcn.004030d0
mov eax, dword [esp + 0x24]
cmp eax, dword [ebp + 8]
jge 0x412f00
mov ecx, dword [ebp + 4]
add ecx, dword [esp + 0x18]
cmp eax, dword [ebp + 8]
jge 0x412f00
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + 4]
add eax, dword [esp + 0x18]
mov edi, dword [eax + 0xa58]
lea ebx, [eax + 0xa58]
mov eax, dword [ecx + 0xa5c]
lea esi, [eax - 0x10]
sub edi, 0x10
cmp esi, edi
je 0x413ab1
cmp dword [edi + 0xc], 0
jl 0x413aa5
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x413aa5
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x413a4d
cmp eax, dword [esi]
jne 0x413a4d
mov ebp, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x413a81
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebp, eax
test ebp, ebp
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [ebp + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebp + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x413a9a
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add ebp, 0x10
mov dword [ebx], ebp
mov ebp, dword [esp + 0x1c]
jmp 0x413ab1
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebx
call fcn.004030d0
mov eax, dword [esp + 0x24]
cmp eax, dword [ebp + 8]
jge 0x412f00
mov ecx, dword [ebp + 4]
add ecx, dword [esp + 0x18]
cmp eax, dword [ebp + 8]
jge 0x412f00
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + 4]
add eax, dword [esp + 0x18]
mov edi, dword [eax + 0xa60]
lea ebx, [eax + 0xa60]
mov eax, dword [ecx + 0xa64]
lea esi, [eax - 0x10]
sub edi, 0x10
cmp esi, edi
je 0x413b8e
cmp dword [edi + 0xc], 0
jl 0x413b82
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x413b82
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x413b2a
cmp eax, dword [esi]
jne 0x413b2a
mov ebp, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x413b5e
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebp, eax
test ebp, ebp
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [ebp + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebp + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x413b77
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add ebp, 0x10
mov dword [ebx], ebp
mov ebp, dword [esp + 0x1c]
jmp 0x413b8e
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebx
call fcn.004030d0
mov esi, dword [esp + 0x24]
cmp esi, dword [ebp + 8]
jge 0x412f00
mov ecx, dword [ebp + 4]
mov edx, dword [esp + 0x18]
add ecx, edx
cmp esi, dword [ebp + 8]
jge 0x412f00
mov eax, dword [ebp + 4]
add eax, edx
add ecx, 0xa50
push ecx
mov ecx, dword [esp + 0x34]
add eax, 0xa60
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0040b680
cmp esi, dword [ebp + 8]
mov byte [esp + 0x1610], 7
jge 0x412f00
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + 4]
add ecx, dword [esp + 0x18]
mov eax, dword [eax]
mov edi, dword [ecx + 0xa6c]
lea ebx, [ecx + 0xa6c]
lea esi, [eax - 0x10]
sub edi, 0x10
cmp esi, edi
je 0x413c92
cmp dword [edi + 0xc], 0
jl 0x413c86
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x413c86
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x413c32
cmp eax, dword [esi]
jne 0x413c32
mov ebp, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x413c66
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov ebp, eax
test ebp, ebp
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [ebp + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [ebp + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
lea eax, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x413c7f
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add ebp, 0x10
mov dword [ebx], ebp
jmp 0x413c92
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, ebx
call fcn.004030d0
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413cba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413ce2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
inc eax
cmp eax, 8
mov dword [esp + 0x28], eax
jl 0x4136c8
mov eax, dword [esp + 0x38]
inc eax
cmp eax, 0x10
mov dword [esp + 0x38], eax
jl 0x4136c0
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.OK:GetDiskInfo___Scsi
call fcn.00403830
call fcn.004056f0
add esp, 4
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Drive_Letter_Mapping___Start
call fcn.00403830
call fcn.004056f0
add esp, 4
mov byte [esp + 0x2f], 0x41
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 0x103
lea ecx, [esp + 0x505]
push 0
push ecx
mov byte [esp + 0x161c], 8
mov byte [esp + 0x50c], 0
call fcn.004cb5a0
movsx ebx, byte [esp + 0x3b]
push ebx
lea edx, [esp + 0x510]
push str._c:_
push edx
mov dword [esp + 0x58], ebx
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x518]
add esp, 0x18
lea ecx, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x413db0
sub eax, ecx
push eax
lea eax, [esp + 0x504]
push eax
lea ecx, [esp + 0x20]
call fcn.004030d0
mov esi, dword [esp + 0x18]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x18], esp
mov ebp, esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x413e02
cmp eax, dword [esi]
jne 0x413e02
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x413e32
call fcn.004029a0
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.004056f0
push ebx
lea edx, [esp + 0x508]
push str.._c:_n
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x510]
add esp, 0x10
lea ecx, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x413e60
sub eax, ecx
push eax
lea eax, [esp + 0x504]
push eax
lea ecx, [esp + 0x20]
call fcn.004030d0
mov esi, dword [esp + 0x18]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x18], esp
mov ebp, esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x413ead
cmp eax, dword [esi]
jne 0x413ead
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x413ee1
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
lea ecx, [esi + 0x10]
push ecx
push eax
lea edx, [edi + 0x10]
push edx
call fcn.004cc447
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.004056f0
add esp, 4
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
lea eax, [esp + 0x518]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x413f58
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Drive_Letter_Mapping___INVALID_HANDLE_VALUE
call fcn.00403830
call fcn.004056f0
add esp, 4
mov byte [esp + 0x1610], 0
lea ecx, [esi + 0xc]
or edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41416f
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
jmp 0x41416f
push 0
lea eax, [esp + 0x40]
push eax
push 0x68
lea ecx, [esp + 0x4a4]
push ecx
push 0
push 0
push 0x560000
push edi
mov dword [esp + 0x5c], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push edi
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebp, ebp
jne 0x413fca
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Drive_Letter_Mapping___bResult__FALSE
call fcn.00403830
call fcn.004056f0
add esp, 4
mov byte [esp + 0x1610], 0
lea edx, [esi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x41416f
mov ecx, dword [esi]
push esi
jmp 0x414168
mov ecx, dword [esp + 0x498]
push ecx
lea edx, [esp + 0x1c]
push str.volumeDiskExtents.NumberOfDiskExtents___d
push edx
call fcn.00403410
mov esi, dword [esp + 0x24]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
add esi, 0xfffffff0
add esp, 8
mov dword [esp + 0x18], esp
mov ebp, esp
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x414015
cmp eax, dword [esi]
jne 0x414015
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x414049
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.004056f0
mov eax, dword [esp + 0x49c]
add esp, 4
xor ebp, ebp
test eax, eax
jbe 0x414147
lea ecx, [esp + 0x4a0]
mov dword [esp + 0x34], ecx
cmp eax, 4
jae 0x414147
mov edx, dword [ecx + 0x10]
or edx, dword [ecx + 0x14]
je 0x414137
mov eax, dword [ecx]
cmp eax, 0x100
jae 0x4140a2
lea ecx, [ebx - 0x41]
mov edx, 1
shl edx, cl
or dword [esp + eax*4 + 0x80], edx
push eax
push ebp
lea eax, [esp + 0x20]
push str.n___d__pDiskExtent__DiskNumber___d
push eax
call fcn.00403410
mov esi, dword [esp + 0x28]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
add esp, 0xc
mov dword [esp + 0x18], esp
mov ebx, esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x4140e7
cmp eax, dword [esi]
jne 0x4140e7
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x41411b
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.004cc447
add esp, 0x10
add edi, 0x10
mov dword [ebx], edi
call fcn.004056f0
mov eax, dword [esp + 0x49c]
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x44]
add esp, 4
inc ebp
add ecx, 0x18
mov dword [esp + 0x34], ecx
cmp ebp, eax
jb 0x414073
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41416f
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov al, byte [esp + 0x2f]
inc al
cmp al, 0x5a
mov byte [esp + 0x2f], al
jle 0x413d3d
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Drive_Letter_Mapping___End
call fcn.00403830
call fcn.004056f0
mov esi, dword [esp + 0x34]
xor eax, eax
add esp, 4
cmp dword [esi + 0xc], eax
mov dword [esp + 0x20], eax
jle 0x414414
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x1c]
test ecx, ecx
jl 0x412f00
cmp eax, dword [edx + 8]
jge 0x412f00
mov eax, dword [edx + 4]
add eax, ecx
cmp dword [eax + 0x92c], 0
jl 0x4143f0
push 0x4f4b88
lea ecx, [esp + 0x3c]
call fcn.00403830
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov byte [esp + 0x1610], 9
xor ebx, ebx
lea ebx, [ebx]
mov ecx, dword [esp + 0x20]
cmp ecx, dword [edi + 8]
jge 0x412f00
mov eax, dword [edi + 4]
mov edx, dword [eax + ebp + 0x92c]
mov esi, 1
mov ecx, ebx
add eax, ebp
shl esi, cl
test dword [esp + edx*4 + 0x80], esi
je 0x41437b
call fcn.004bfb80
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4137b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
lea ecx, [ebx + 0x41]
push ecx
lea edx, [esp + 0x2c]
push 0x4f6284
push edx
mov byte [esp + 0x161c], 0xa
call fcn.00403410
push 0x4f6280
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.0040af00
add esp, 0x18
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x40]
mov byte [esp + 0x1618], 0xb
call fcn.00407e40
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 0xa
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4142c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x20]
cmp ecx, dword [edi + 8]
jge 0x412f00
mov eax, dword [edi + 4]
add dword [eax + ebp + 0x9e0], esi
mov esi, dword [esp + 0x28]
add eax, ebp
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x18], esp
mov ebp, esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x414310
cmp eax, dword [esi]
jne 0x414310
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x414344
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x413dfd
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
inc eax
push eax
lea ecx, [esi + 0x10]
push ecx
push eax
lea edx, [edi + 0x10]
push edx
call fcn.004cc447
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.004056f0
add esp, 4
mov byte [esp + 0x1610], 9
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x414373
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
inc ebx
cmp ebx, 0x1a
jl 0x414200
mov ecx, dword [esp + 0x20]
cmp ecx, dword [edi + 8]
jge 0x412f00
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx - 0xc]
mov eax, dword [edi + 4]
push edx
add eax, ebp
push ecx
lea ecx, [eax + 0xa70]
call fcn.00407e40
mov edx, dword [esp + 0x20]
cmp edx, dword [edi + 8]
jge 0x412f00
mov eax, dword [edi + 4]
add eax, ebp
lea ecx, [eax + 0xa70]
call fcn.0040adf0
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x1610], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4143f0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
inc eax
add ecx, 0xaa0
cmp eax, dword [esi + 0xc]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
jl 0x4141b3
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.CAtaSmart::Init___Complete
mov dword [esi + 0xf4], eax
call fcn.00403830
call fcn.004056f0
mov ecx, dword [esp + 0x48]
add esp, 4
test ecx, ecx
je 0x414539
mov eax, dword [esi + 0xc]
cmp eax, dword [esp + 0x54]
jne 0x414533
xor edx, edx
test eax, eax
jle 0x414539
mov ecx, dword [esp + 0x50]
xor edi, edi
add ecx, 0xc
jmp 0x414470
mov eax, dword [esp + 0x1c]
test edi, edi
jl 0x412f00
cmp edx, dword [eax + 8]
jge 0x412f00
cmp edx, dword [esp + 0x54]
jge 0x412f00
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x92c]
cmp eax, dword [ecx - 0xc]
jne 0x41452f
mov eax, dword [esp + 0x1c]
cmp edx, dword [eax + 8]
jge 0x412f00
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x934]
cmp eax, dword [ecx - 4]
jne 0x41452f
mov eax, dword [esp + 0x1c]
cmp edx, dword [eax + 8]
jge 0x412f00
mov eax, dword [eax + 4]
mov eax, dword [eax + edi + 0x930]
cmp eax, dword [ecx - 8]
jne 0x41452f
mov ebx, dword [esp + 0x1c]
cmp edx, dword [ebx + 8]
mov esi, 0x40
mov eax, ecx
jge 0x412f00
mov ebx, dword [ebx + 4]
sub ebx, ecx
lea ebp, [ebx + edi + 0xa0e]
lea ebx, [ebx]
mov ebx, dword [eax + ebp]
cmp ebx, dword [eax]
jne 0x41452b
sub esi, 4
add eax, 4
cmp esi, 4
jae 0x414500
mov esi, dword [esp + 0x30]
inc edx
add edi, 0xaa0
add ecx, 0x4c
cmp edx, dword [esi + 0xc]
jl 0x414470
jmp 0x414539
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x44]
mov dword [ecx], 1
cmp dword [esp + 0x162c], 0
je 0x414573
mov esi, dword [esi + 0xc]
test esi, esi
jle 0x414573
add esi, 0xffffffff
js 0x414573
mov edi, dword [esp + 0x1c]
push esi
mov ecx, edi
call fcn.00404c40
cmp dword [eax + 0x994], 0
jne 0x41456e
push 1
push esi
mov ecx, edi
call fcn.00407fc0
sub esi, 1
jns 0x414553
lea ecx, [esp + 0x4c]
call fcn.00404570
mov ecx, dword [esp + 0x1608]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x15f0]
xor ecx, esp
call fcn.004cb553
add esp, 0x1600
ret 0x18